ICMP: хорошее, плохое и уродливое

Заблуждения об ICMP

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

Введение в ICMP

Когда большинство людей думают о протоколе управляющих сообщений в Интернете (ICMP), на ум приходят две сетевые утилиты - Ping и Traceroute. Хотя Ping и Traceroute - два инструмента, использующие ICMP, они не являются его единственной целью. ICMP также используется сетевыми устройствами для отправки сообщений об ошибках, в которых описывается проблема, возникшая при попытке доставки дейтаграммы. Сетевые администраторы могут использовать эти сообщения для устранения проблем с подключением к Интернету. Например, шлюз или целевой узел отправит сообщение ICMP на исходный узел, если обнаружена ошибка или событие, требующее предупреждения (например, пункт назначения недоступен, потеря пакетов и т. Д.). Сетевые стеки операционных систем могут читать сообщения ICMP, чтобы генерировать коды ошибок для приложений, чтобы они могли отображать информативное сообщение об ошибке для пользователя.

Исторически было 255 запросов / ответов, содержащих ICMP. Многие из них не рекомендуются или зарезервированы по разным причинам; десять типов сообщений ICMP, относящихся к современным сетям, показаны в таблице 1. В каждом типе сообщения есть несколько кодов для идентификации определенного условия или запроса.

Блокировка трафика ICMP в целях безопасности

Сетевые администраторы часто предпочитают отключать ICMP на сетевых устройствах, чтобы избежать использования картографических приложений сети, используемых злоумышленниками (например, сканирование Nmap и Nessus). Необоснованные действия, такие как атаки на обнаружение сети, скрытые каналы связи и перенаправление сетевого трафика, могут быть выполнены при включенном ICMP, которые включают, но не ограничиваются:

  • Ping sweep - тип атаки, использующий сообщения эхо-запроса ICMP для перечисления активных хостов в сети.
  • Ping flood - используется для запуска атаки типа «отказ в обслуживании» (DoS), при которой злоумышленник отправляет запросы ICMP в быстрой последовательности, не дожидаясь ответа целевой системы. Ping-потоки нацелены на использование как входящей, так и исходящей полосы пропускания, а также использование ресурсов ЦП для снижения производительности системы.
  • ICMP-туннелирование - метод, используемый для установления скрытого канала связи между удаленными системами, чаще всего между клиентом и прокси. Все сообщения отправляются через ICMP-запросы и ответы. ICMP-туннелирование может использоваться для обхода правил брандмауэра.
  • Поддельные перенаправления ICMP - сетевой трафик может быть мошенническим образом перенаправлен злоумышленнику через поддельное сообщение перенаправления ICMP. Злоумышленник отправит сообщение перенаправления ICMP, которое информирует хост о прямом пути к месту назначения, жертве, которая содержит IP-адреса системы злоумышленника. Это позволяет злоумышленнику скомпрометировать сетевой трафик с помощью атаки «человек посередине» или вызвать DoS.

Из-за всех возможных атак с использованием ICMP и того факта, что TCP / IP «в основном» работает, даже когда трафик ICMP заблокирован, сетевые администраторы иногда блокируют трафик ICMP на своих брандмауэрах в качестве меры безопасности «быстрого исправления».

Последствия блокировки ICMP

В результате отключения протокола ICMP могут пострадать диагностика, надежность и производительность сети (см. Стр. 4–4 в [2]). Важные механизмы отключены, когда протокол ICMP ограничен.

  • Обнаружение MTU пути (PMTUD) - Используется для определения максимального размера блока передачи на сетевых устройствах, которые соединяют источник и пункт назначения, чтобы избежать фрагментации IP [3]. ICMP типа 3, код 4 и максимальный размер пакета возвращаются, когда пакет превышает размер MTU сетевого устройства на подключенном пути. Если эти сообщения ICMP заблокированы, система назначения постоянно запрашивает недоставленные пакеты, а исходная система продолжает бесконечно повторно отправлять их, но безрезультатно, поскольку они слишком велики, чтобы пройти полный путь от источника к месту назначения. Такое поведение, скорее всего, приведет к зависанию и называется черной дырой ICMP [4].
  • Время жизни (TTL) - определяет продолжительность жизни пакета данных при перемещении от источника к месту назначения. Срок службы пакета устанавливается с помощью метки времени или счетчика переходов, чтобы дейтаграмма не распространялась через Интернет бесконечно. Сетевое устройство с заблокированным ICMP не получит тип 11, время превышено, код 0, время превышено в сообщении об ошибке передачи - уведомление хоста-источника об увеличении срока жизни данных для успешного достижения пункта назначения, если дейтаграмма не может достичь пункта назначения [5].
  • Перенаправление ICMP - используется маршрутизатором для информирования хоста о прямом пути от хоста (источника) к месту назначения. Это сокращает количество прыжков, которые должны пройти данные, чтобы достичь пункта назначения. Если ICMP отключен, хост не будет знать о наиболее оптимальном маршруте к месту назначения, в результате чего хост будет отправлять данные через чрезмерное количество сетевых устройств, потребляя ненужные ресурсы, что приводит к снижению производительности сети.

Лучшие способы предотвращения злоупотреблений ICMP

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

В Linux iptables [5] предоставляет пользователям возможность достичь точного контроля над ICMP. Например, чтобы разрешить эхо-ответ, введите в терминале следующую команду оболочки:

sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

or

sudo iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT

В приведенном выше примере разрешены все исходящие эхо-ответы, где:

-A OUTPUT is the target chain
-p icmp is the protocol
--icmp-type 0 is the messages type (echo reply)
-j ACCEPT is the action to be carried out.

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

Дрю Бранч - аналитик по безопасности в Independent Security Evaluators.

Твиттеры: @ISESecurity