Рейтинг:0

Сетевая безопасность: защита IPv6 на сервере Ubuntu?

флаг tr

Я знаком с усилением защиты IPv4 на сервере Ubuntu, но когда я использую те же правила для IPv6 с ip6tables, подключение IPv6 теряется, что приводит к Пункт назначения недоступен: Адрес недоступен ошибки при пинге. Не могли бы вы посоветовать, как исправить эту проблему? Моя логика следующая:

#IPv6
#Сбросить все правила (F) и цепочки (X)
ip6tables -F
ip6tables -X

#Принудительная проверка пакетов SYN
ip6tables -A ВХОД -p TCP ! --syn -m состояние --state NEW -j DROP
#Отбрасывать XMAS-пакеты
ip6tables -A INPUT -p tcp --tcp-flags ВСЕ ВСЕ -j DROP
#Отбрасывать пустые пакеты
ip6tables -A INPUT -p tcp --tcp-flags ВСЕ НЕТ -j DROP
#Отбрасывать входящие пакеты с фрагментами
#ip6tables -A INPUT -f -j DROP #это действительно не работает как в iptables

#Отбрасывать трафик 
ip6tables -t фильтр -P ВХОД DROP
ip6tables -t filter -P ПЕРЕДАЧА ПЕРЕДАЧИ
ip6tables -t фильтр -P ВЫХОД DROP
#Оставаться установленным
ip6tables -A ВХОД -m состояние --state СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
ip6tables -A ВЫВОД -m состояние --state СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
#Принять петлю
ip6tables -t filter -A INPUT -i lo -j ПРИНЯТЬ
ip6tables -t filter -A ВЫВОД -o lo -j ПРИНЯТЬ

#ICMP
ip6tables -t фильтр -A ВВОД -p icmp -j ПРИНЯТЬ
ip6tables -t filter -A ВЫВОД -p icmp -j ПРИНЯТЬ

#СервисX
ip6tables -t filter -A НАЗНАЧЕНИЕ -p ПРОТОКОЛ --dport ПОРТ -j ПРИНЯТЬ
#СервисY
ip6tables -t filter -A НАЗНАЧЕНИЕ -p ПРОТОКОЛ --dport ПОРТ -j ПРИНЯТЬ
#ServiceZ
ip6tables -t filter -A НАЗНАЧЕНИЕ -p ПРОТОКОЛ --dport ПОРТ -j ПРИНЯТЬ
...

Пример для ssh-сервера, хотя я никогда не использую порт 22 по умолчанию...

#SSH
ip6tables -t filter -A INPUT -p tcp --dport 22 -j ПРИНЯТЬ
ip6tables -t filter -A ВЫВОД -p tcp --dport 22 -j ПРИНЯТЬ

Скрипт сделан исполняемым, поэтому он запускается после перезагрузки в /etc/init.d/scriptname. Идея состоит в том, чтобы заблокировать все и разрешить только то, что действительно известно для использования серверными службами. Какой-нибудь лучший подход, пожалуйста? Почему это работает в IPv4, но не в IPv6? Когда я выпускаю ip6tables -t filter -P ВВОД ПРИНЯТЬ это работает, но это не главное. Как мне действительно защитить IPv6 на серверах Ubuntu? Спасибо!

флаг in
IPv6 работает иначе, чем ipv4 во многих аспектах. Возможно, вам следует сначала изучить ipv6.
флаг tr
М-м-м... И с чего мне начать? хД Например, чем ip6tables сильно отличается от iptables? Многие советуют использовать ту же конфигурацию, что и в iptables, но у меня это не работает.
флаг my
https://serverfault.com/questions/783807/ipv6-allow-incoming-icmp-echo-requests#comment990370_783807
флаг tr
Спасибо @user951308 за указание, но я уже разрешаю ICMP. Обновляю вопрос... Может что-то другое нужно специально включить вместо всего направления ВХОД?
флаг tr
ХОРОШО. Похоже, это должен быть ipv6-icmp вместо icmp. Спасибо!
Рейтинг:0
флаг cn

Основываясь на функциональности IPv6, вам нужно добавить несколько правил ACCEPT для ICMPv6, попробуйте следующее:

ip6tables -A INPUT -p icmpv6 --icmpv6-type 1 -j ПРИНЯТЬ
ip6tables -A INPUT -p icmpv6 --icmpv6-type 2 -j ПРИНЯТЬ
ip6tables -A INPUT -p icmpv6 --icmpv6-type 3 -j ПРИНЯТЬ
ip6tables -A INPUT -p icmpv6 --icmpv6-type 4 -j ПРИНЯТЬ
ip6tables -A FORWARD -i $WAN_IF -p icmpv6 --icmpv6-type 1 -j ПРИНЯТЬ
ip6tables -A FORWARD -i $WAN_IF -p icmpv6 --icmpv6-type 2 -j ПРИНЯТЬ
ip6tables -A FORWARD -i $WAN_IF -p icmpv6 --icmpv6-type 3 -j ПРИНЯТЬ
ip6tables -A FORWARD -i $WAN_IF -p icmpv6 --icmpv6-type 4 -j ПРИНЯТЬ
# Маршрутизатор и обнаружение соседей входящие и исходящие
ip6tables -A INPUT -p icmpv6 --icmpv6-type 133 -j ПРИНЯТЬ
ip6tables -A INPUT -p icmpv6 --icmpv6-type 134 -j ПРИНЯТЬ
ip6tables -A INPUT -p icmpv6 --icmpv6-type 135 -j ПРИНЯТЬ
ip6tables -A INPUT -p icmpv6 --icmpv6-type 136 -j ПРИНЯТЬ
ip6tables -A ВЫВОД -p icmpv6 --icmpv6-type 133 -j ПРИНЯТЬ
ip6tables -A ВЫВОД -p icmpv6 --icmpv6-type 134 -j ПРИНЯТЬ
ip6tables -A ВЫВОД -p icmpv6 --icmpv6-type 135 -j ПРИНЯТЬ
ip6tables -A ВЫВОД -p icmpv6 --icmpv6-type 136 -j ПРИНЯТЬ
# Пинг-запрос к брандмауэру из локальной сети и DMZ
ip6tables -ВВОД! -i $WAN_IF -p icmpv6 --icmpv6-type 128 -j ПРИНЯТЬ
# Пинг-запрос от брандмауэра, локальной сети и DMZ
ip6tables -A ВЫВОД -p icmpv6 --icmpv6-type 128 -j ПРИНЯТЬ
ip6tables -ВПЕРЕД ! -i $WAN_IF -p icmpv6 --icmpv6-type 128 -j ПРИНЯТЬ

Я нашел эту статью очень полезной для себя: IPv6-таблицы

флаг tr
ip6tables -t filter -A INPUT -p ipv6-icmp -j ПРИНЯТЬ и ip6tables -t filter -A ВЫВОД -p ipv6-icmp -j ПРИНЯТЬ решил это для меня. Спасибо! См. мой последний комментарий к самому вопросу.
флаг in
@lion здорово, что вы смогли решить эту проблему, но, пожалуйста, примите ответ, который вам помог.
флаг tr
Это было в комментарии выше со ссылкой. Похоже, это должен быть ipv6-icmp вместо icmp.
Рейтинг:0
флаг tr
ip6tables -t filter -A INPUT -p ipv6-icmp -j ПРИНЯТЬ
ip6tables -t filter -A ВЫВОД -p ipv6-icmp -j ПРИНЯТЬ

вместо

ip6tables -t фильтр -A ВВОД -p icmp -j ПРИНЯТЬ
ip6tables -t filter -A ВЫВОД -p icmp -j ПРИНЯТЬ

решает это.

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

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