Вопрос: Почему бы не заблокировать ICMP?


Я думаю, что у меня почти есть моя настройка iptables в моей системе CentOS 5.3. Вот мой сценарий ...

# Establish a clean slate
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F # Flush all rules
iptables -X # Delete all chains

# Disable routing. Drop packets if they reach the end of the chain.
iptables -P FORWARD DROP

# Drop all packets with a bad state
iptables -A INPUT -m state --state INVALID -j DROP
# Accept any packets that have something to do with ones we've sent on outbound
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Accept any packets coming or going on localhost (this can be very important)
iptables -A INPUT -i lo -j ACCEPT
# Accept ICMP
iptables -A INPUT -p icmp -j ACCEPT

# Allow ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Allow httpd
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Allow SSL
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Block all other traffic 
iptables -A INPUT -j DROP

Для контекста этот компьютер является хостом веб-приложения виртуального частного сервера.

В предыдущий вопрос, Ли Б сказал, что я должен «заблокировать ICMP немного больше». Почему бы просто не заблокировать его вообще? Что произойдет, если я это сделаю (что плохого произойдет)?

Если мне не нужно блокировать ICMP, как я могу его заблокировать?


50
2017-11-15 20:15


Источник


iptables -A INPUT -j DROP <неправильный (мнение) вы должны установить политику на iptables -P INPUT DROP, которая в основном такая же, как установка значения по умолчанию. DENY ПО УМОЛЧАНИЮ. - xenoterracide
Узнайте, почему это плохая идея заблокировать icmp: security.stackexchange.com/a/22713/485 - Rory Alsop


Ответы:


ICMP - это путь, путь больше, чем «traceroute» и «ping». Он используется для обратной связи при запуске DNS-сервера (недоступный для порта), который на современном DNS-сервере может фактически помочь выбрать другую машину для запроса быстрее.

ICMP также, как упоминалось выше, используется для обнаружения MTU пути. Скорее всего, ваши наборы ОС «DF» (не фрагментируют) по отправляемым TCP-пакетам. Он ожидает получить пакет ICMP «фрагментация требуется», если что-то по пути не справится с этим размером пакета. Если вы заблокируете все ICMP, ваша машина должна будет использовать другие резервные механизмы, которые в основном используют таймаут для обнаружения PMTU «черной дыры» и никогда не будут оптимизированы правильно.

Кроме того, вы должны спросить себя, почему вы хотите заблокировать ICMP. Что конкретно вы пытаетесь предотвратить здесь? Довольно ясно, что вы не понимаете, для чего используется ICMP, что довольно часто. Я был бы очень осторожен в том, чтобы блокировать то, что вы не совсем понимаете.

Чтобы сделать это еще сложнее узнать об этом, многие распространенные книги брандмауэров говорят «блокировать ICMP» - ясно, что их авторы никогда не читали RFC или не должны были решать проблемы, связанные с такими советами. Это плохой совет заблокировать все ICMP.

Теперь ограничение скорости может также повредить. Если ваш компьютер занят, или даже если это не так, вы можете получить хороший объем трафика ICMP. Мой веб-сервер, вероятно, получает около 10-100 ICMP-пакетов в минуту, большинство из которых - открытие PMTU. Даже если кто-то решил атаковать мой сервер с помощью ICMP-пакетов какого-то типа, это действительно не так уж и важно. Если ваш компьютер принимает хотя бы одно TCP-соединение (ssh, http, mail и т. Д.), Вероятность того, что это большой вектор атаки, чем когда-либо, будет неправильно понят ICMP.


110
2017-11-15 20:56



Не мог бы сказать, что это лучше. +1 - Massimo
Там есть один тип ICMP, который Можно быть вредным redirect тип. Это только Тип ICMP, который вы должны учитывать при блокировке. - Hubert Kario
@Hubert было бы очень полезно, если бы вы могли ссылаться на дополнительные советы по блокировке redirect, Теперь я понимаю, что я должен это рассмотреть, но мне не лучше - все равно не могу так или иначе решить :) Это риск или нет? - RomanSt
Перенаправление ICMP-сообщения сообщает хосту (маршрутизаторы не должны их принимать), что такая и та же подсеть или хост доступны на другом шлюзе (обычно с помощью более быстрого маршрутизатора). По крайней мере, это RFC1122. - Hubert Kario
Я считаю, что перенаправления игнорируются по умолчанию в linux. Но да, лучше отфильтровать этот. - Fox


ICMP используется для различных диагностических функций (например, ping, traceroute) и управления сетью (например, для обнаружения PMTU). Неизбирательная блокировка ICMP вызывает у других людей все виды изжоги, и если вы точно не знаете, что делаете, вы должны оставить его в покое.


25
2017-11-15 20:29





Я никогда не понимал, почему люди используют ICMP, как сказано выше, только когда-либо вызывает головную боль для себя и других. Вы можете определить, достаточно ли хост достаточно, и пока он достаточно ограничен, чтобы не использоваться в качестве DOS, тогда я никогда не слышал никаких веских причин его блокировать. (Если кто-то может придумать причину, пожалуйста, напишите)


14
2017-11-15 20:37



Это часть культа информационной безопасности. Люди безопасности чувствуют, что им не нужно оправдывать вещи, потому что простые смертные не могут понять последствия для безопасности. С другой стороны, головные боли администратора сети и системы можно отнести к простой ленивости. В конце концов, если бы админы знали, что происходит, вещи никогда не сломаются ... - duffbeer703
мне просто кажется странным убивать диагностические инструменты, по существу, ради этого; поскольку информация, которую может заинтересовать злоумышленник, может быть получена, если у вас есть какая-либо другая служба, работающая на машине. Твое право; это кажется очень «культовым», не спрашивайте, просто делайте. - Antitribu
Я никогда не понимал, почему авторы брандмауэров, похоже, полностью пропустили, что ICMP намного больше, чем «ping» и «traceroute», а книги и блоги и HOW-TO все говорят «блокировать ICMP». - Michael Graff
уровни и уровни этого, ваш ответ был правильно проголосован, хорошо поставлен. В основном я знаю, когда он заблокирован, вы никогда не можете сказать, что происходит с прерывистыми вещами, особенно когда на пути есть несколько блоков ICMP. - Antitribu


вы можете просто попробовать ограничить icmp таким образом, чтобы он не мог использоваться как атака DOS. но есть слишком много инструментов для устранения неполадок, таких как ping, mtr (я забываю эквивалент Windows), traceroute (tracert), которые используют icmp. полностью отбрасывая их, просто глупо. Это хороший способ проверить, работает ли ваш экземпляр, даже если вы не можете использовать telnet для любых портов.

--limit 10/second
к вашему правилу (правилам) icmp, вероятно, является достойным ограничением, учитывая, насколько реально компьютер может справиться.


8
2017-11-15 20:28





Это полезный диагностический инструмент для решения проблем сетевого подключения.

Он также позволяет использовать соединения в другом месте в Интернете, которые используют меньшие MTU, чем в вашей сети. Если вы попытаетесь отправить пакет где-то слишком большим и не может быть фрагментирован, устройство отбрасывает пакет и отправляет требуемый пакет ICMP-фрагментации обратно отправителю. Если вы отбросите все ICMP-пакеты, вы потеряете те и странные вещи, которые происходят в вашей сети.

Реальный вопрос: зачем блокировать ICMP? Что вы получаете? Просто имейте хорошие правила фильтрации на своей границе и перед вашими ценными активами.


4
2017-11-15 20:37





Вот альтернативная точка зрения, в духе той теории безопасности. Другие плакаты правы, что практика безопасности часто чрезмерно усложняет, но для этого есть хорошая основа.

Теория безопасности, как правило, заключается в том, что вы разрешаете только то, что вам нужно. Другие вещи (которые могут быть полезны - например, ответы ping) могут использоваться злоумышленником для охвата вашей системы или, возможно, как вектор атаки для какой-либо еще не обнаруженной уязвимости.

Итак, глядя на типы сообщений ICMP, что вам нужно для нормальной и правильной работы вашей системы?

  • эхо-ответ (ping) - не так много
  • пункт назначения недоступен - здесь много полезной информации. Отключите это, и вы потеряете доступ к вашему серверу для некоторых клиентов.
  • source quench - устарел с 1995 года и, по-видимому, был удален из реализаций хоста с (не последним) 2005. tools.ietf.org/html/rfc6633#section-1.
  • перенаправление - почти наверняка не
  • реклама и реклама в маршрутизаторе - не нужно, если вы статически настраиваете свои маршруты и можете использовать их для DoS. Я бы заблокировал его, если вы не знаете, что вам это нужно, и если вам это нужно, возможно, закодируйте правило, чтобы принимать информацию только от возможных известных маршрутизаторов.
  • ttl превышено - не только для traceroute, сообщает, что ваш трафик не добирается до места назначения

...и так далее. Если вы действительно хотите это понять, узнайте о различных типах ICMP и о том, для чего они предназначены. Статья в Википедии является хорошей отправной точкой.

На практике действительно уродливое перенаправление; если вы хотите просто сделать что-то быстрое и полезное, заблокируйте это и разрешите все остальное.

Я бы добавил, что отслеживание соединений IPtables позволит соответствующим образом возвращать ICMP-пакеты для активных соединений. Поэтому, если вы используете conntrack, вы должны блокировать большинство входящих ICMP, если вы принимаете RELATED-пакеты (прежде чем блокировать ICMP в своем наборе правил).


4
2017-12-07 16:32



Фактически, закалка источника устарела с 1995 года и, по-видимому, удалена из реализаций хоста с (как минимум, 2005) :). tools.ietf.org/html/rfc6633#section-1, - sourcejedi
ответ обновлен, спасибо. Если бы я подумал немного сложнее, я бы это вспомнил, дух. - Dan Pritts
Я думаю, что ICMP PING требуется для обнаружения PMTU (который используется многими браузерами и инструментами). Запретить это, как быть неполичным для ваших пользователей. Ping также используется для многих диагностических целей, и это делают большинство крупных игроков. Кроме того, нет никакой пользы в ее запрете. - jjmontes
Пакеты Echo (ping) не требуются для обнаружения PMTU. Обнаружение PMTU выполняется путем установки бита Do not Fragment (DF) на исходящих пакетах и ​​зависит от недоступности ICMP Destination Unreachable - для фрагментации нужны сообщения, возвращаемые с маршрутизаторов с меньшими MTU ссылок. Ping определенно полезен для диагностических целей, но он также полезен для сетевой разведки и потенциально для DoS. Для всех вас и я знаю, что в ICMP-стек в Linux есть скрытая ошибка удаленного корня. Если ваш стандарт «мне это нужно», ответ «нет». - Dan Pritts
(Обратите внимание, что я написал в ответ, что блокирование недостижимых сообщений недоступно. Открытие PMTU было тем, о чем я думал. :) - Dan Pritts


ping - хороший диагностический инструмент, вы действительно хотите, чтобы у вас было это когда-нибудь. Я использую следующие:

-A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT

вы также можете захотеть задушить его.


3
2017-11-15 20:19



Это крайне неадекватно по причинам, о которых указывали другие (ICMP - это не просто пинг). Вы должны выборочно блокировать специфических, потенциально опасных ICMP-сообщениях, и разрешать другие управляющие сообщения без проблем. - voretaq7


В настоящее время даже ограничение ICMP-пакетов на стороне сервера может создать головную боль при атаках DDoS. Атаки в основном выполняются путем отправки огромных запросов ICMP на один сервер, и если сервер пытается ответить на каждый из них, угадайте, что происходит?

Главное, что у нас есть сервер teampeak, который получает плохие пакеты каждый день, было несколько дней через два месяца, когда у нас было какое-то «свободное время». То, что мы сделали, полностью отключено / заблокировано ICMP-ответами, у нас нет серверов DNS на сервере, нет серверов NTP, нет почтовых серверов, нет FTP-серверов, только два apache и teamspeak. все порты, которые не нужны для служб, отключены. Мы планируем блокировать даже ssh и оставляем только два порта открытыми. Сегодня существует 21k (!) Постоянных запретов.

Ситуация заключается в том, что злоумышленники используют в основном туннели ICMP, и несколько очень интересных строк журнала обсуждались с администраторами сервера, и они сказали, что у них есть серверные запросы ICMP, поэтому злоумышленники использовали это, чтобы туннелировать атаки, пробивая их и атакуя нас. Звучит странно, но это правда.

Если вам не нужна диагностика вашего сервера, и если вы можете полностью заблокировать запросы или отфильтровать их, чтобы, например, удалить огромные окна, сделайте это. Я также предлагаю вам полностью блокировать: Китай, Корею, Таиланд, Турцию, потому что большинство IP-адресов поступает оттуда. У меня были целые списки inetnum этих стран, но почти каждый день появляются новые.

Я говорю, что делаю, если вы не согласны - не делайте этого. Просто как тот. Удачи


2
2017-12-10 06:52





Как минимум, вы должны разрешить пропускать типы icmp 3 (недоступный для назначения), 4 (подавление источника) и 11 (превышение времени). Все эти типы используются для решения сетевых проблем и не должны фильтроваться.

iptables -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT

(Исходный режим гашения в настоящее время не рекомендуется, но это не помешает этому открытию)


0
2017-08-13 12:44