Рейтинг:0

Можно ли безопасно заблокировать эти типы сообщений ICMPv6 на веб-сервере?

флаг ca

У меня есть Debian 11 VPS в облачном провайдере с включенными IPv4 и IPv6 и интерфейсом eth0 с глобальным адресом ipv6 (общедоступным) и адресом ipv6 с областью действия (fe80::/10).

Единственной целью сервера является размещение общедоступного веб-сайта.

Я реализую брандмауэр на сервере с помощью iptables/ip6tables. Я прочитал RFC4890, но до сих пор не уверен, как обрабатывать некоторые типы сообщений ICMPv6 и действительно ли они нужны для моего варианта использования. Принимая во внимание, что я разрешаю любой трафик на уровне ссылки, Я не уверен, смогу ли я безопасно заблокировать следующие типы сообщений ICMPv6. на глобальный:

  • Запрос маршрутизатора (тип 133)

  • Объявление маршрутизатора (тип 134)

  • Запрос соседей (тип 135)

  • Реклама соседей (тип 136)

  • Запрос обратного обнаружения соседей (тип 141)

  • Объявление об обратном обнаружении соседей (тип 142)

  • Запрос слушателя (тип 130)

  • Отчет слушателя (тип 131)

  • Слушатель готов (тип 132)

  • Отчет прослушивателя v2 (тип 143)

  • Запрос пути к сертификату (тип 148)

  • Объявление о пути сертификата (тип 149)

  • Объявление многоадресного маршрутизатора (тип 151)

  • Запрос многоадресного маршрутизатора (тип 152)

  • Завершение многоадресного маршрутизатора (тип 153)

Большое спасибо за любую помощь.

Рейтинг:3
флаг cn

Разрешить все типы ICMPv6. По возможности ограничьте скорость пакетов ICMPv6 в секунду, чтобы ограничить использование ресурсов на IP-устройствах. Это простой способ, и он не так небезопасен, как кажется.


Или, ваш метод исследования заключается в том, чтобы читать Рекомендации RFC 4890 по фильтрации сообщений ICMPv6 в брандмауэрах. Обратите внимание на отсутствие должен Сбросьте рекомендации для начала.

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

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


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

Зона "lan" по умолчанию принимает все.Зона "wan" по умолчанию только исходящая. Типичный простой брандмауэр. Разрешающие правила берутся из wan:

правило конфигурации
        имя параметра «Разрешить ввод ICMPv6»
        опция src 'wan'
        вариант прототипа 'icmp'
        list icmp_type 'эхо-запрос'
        list icmp_type 'эхо-ответ'
        list icmp_type 'пункт назначения недостижим'
        list icmp_type 'слишком большой пакет'
        список icmp_type 'время истекло'
        список icmp_type 'плохой заголовок'
        список icmp_type 'неизвестный тип заголовка'
        list icmp_type 'запрос маршрутизатора'
        list icmp_type 'запрос соседей'
        list icmp_type 'реклама-маршрутизатора'
        список icmp_type 'соседская реклама'
        ограничение опции «1000/сек»
        семейство опций 'ipv6'
        вариант цели «ПРИНЯТЬ»

правило конфигурации
        имя параметра «Разрешить-ICMPv6-Forward»
        опция src 'wan'
        пункт назначения '*'
        вариант прототипа 'icmp'
        list icmp_type 'эхо-запрос'
        list icmp_type 'эхо-ответ'
        list icmp_type 'пункт назначения недостижим'
        list icmp_type 'слишком большой пакет'
        список icmp_type 'время истекло'
        список icmp_type 'плохой заголовок'
        список icmp_type 'неизвестный тип заголовка'
        ограничение опции «1000/сек»
        семейство опций 'ipv6'
        вариант цели «ПРИНЯТЬ»

В большинстве случаев нельзя отбрасывать типы, см. раздел 4.4.1. Обратите внимание, что в «Allow-ICMPv6-Forward» всегда разрешены типы ошибок и эхо, входящие или исходящие.

правило конфигурации
        имя параметра «Разрешить-MLD»
        опция src 'wan'
        вариант прототипа 'icmp'
        опция src_ip 'fe80::/10'
        список icmp_type '130/0'
        список icmp_type '131/0'
        список icmp_type '132/0'
        список icmp_type '143/0'
        семейство опций 'ipv6'
        вариант цели «ПРИНЯТЬ»

Сообщения уведомления локального многоадресного приемника.

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

флаг ca
Спасибо, что указали мне на правильную терминологию (ссылку и глобальную область действия), я исправил ее. Конечно, спасибо за ваш ответ, позвольте мне изучить его и уточнить, прежде чем давать отзыв.
флаг ca
На основе ваших предложений и примеров правил, включенных в RFC, а также на основе того, что наблюдалось до сих пор на моей машине Debian (т. е. единственными правилами ip6tables, подсчитывающими пакеты, являются типы ICMPv6 128, 135, 136), я закончил с набором правил, которые допускают следующие типы в глобальной области видимости: 1, 2, 3, 4, 128, 135, 136. Принимая во внимание, что link-scope (fe80::/10) разрешает весь трафик. Я предполагаю, что другие типы ICMPv6 не нужны, потому что адрес IPv6 и шлюз назначаются статически. Я отслеживаю эту ситуацию, чтобы увидеть, не сломается ли что-нибудь. Все идет нормально. Любая обратная связь приветствуется.
Рейтинг:0
флаг ca

На основе своих исследований я пришел к следующим правилам. У меня есть счетчик пакетов 0 по правилу LOG REJECT для типов ICMPv6 в правилах с комментариями (т.е. отключенные типы).

#
# ВХОДЯЩИЙ ICMPv6
# Закомментированные типы не нужны;
# те типы, которые разрешены только для локальной ссылки, также закомментированы 
# потому что link-local разрешен весь трафик.
#

ip6tables -N ICMP6

ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 1 -j ACCEPT # Пункт назначения недоступен
ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 2 -j ACCEPT # Слишком большой пакет
ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 3 -j ACCEPT # Превышено время
ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 4 -j ACCEPT # Проблема с параметром
ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 128 -j ACCEPT # Эхо-запрос
#ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 133 -j ACCEPT # Запрос маршрутизатора
#ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 134 -j ACCEPT # Объявление маршрутизатора
ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 135 -j ACCEPT # Запрос соседей
ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 136 -j ACCEPT # Объявление соседа
#ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 141 -j ACCEPT # Запрос обратного обнаружения соседей
#ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 142 -j ACCEPT # Объявление обратного обнаружения соседей
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 130 -j ACCEPT # Запрос слушателя
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 131 -j ACCEPT # Отчет прослушивателя
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 132 -j ACCEPT # Слушатель готов
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 143 -j ACCEPT # Отчет прослушивателя v2
#ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 148 -j ACCEPT # Запрос пути сертификата
#ip6tables -A ICMP6 -p icmpv6 --icmpv6-type 149 -j ACCEPT # Объявление пути к сертификату
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 151 -j ACCEPT # Объявление многоадресного маршрутизатора
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 152 -j ACCEPT # Запрос многоадресного маршрутизатора
#ip6tables -A ICMP6 -s fe80::/10 -p icmpv6 --icmpv6-type 153 -j ACCEPT # Завершение многоадресного маршрутизатора

# УДАЛИТЬ все остальное в цепочке ICMP6
ip6tables -A ICMP6 -p icmpv6 -j LOG --log-level 7 --log-prefix "[FW.IN drop ICMP6] "
ip6tables -A ICMP6 -p icmpv6 -j УДАЛИТЬ

ip6tables -A ВХОД -p icmpv6 -j ICMP6

Итак, мой вывод: веб-серверу нужны только типы 1,2,3,4,128,135,136.

Ответить или комментировать

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