Защита IPv6 через ip6tables¶
IPv4 и IPv6 имеют разные таблицы правил. В НАЙС.ОС CLOUD администрирование IPv4 проводится через iptables, а IPv6 — через ip6tables. Открытый через IPv6 сервис останется доступен, даже если администратор закрыл его IPv4-правилом. В базовом профиле безопасности декларируется DROP на вход, пересылку и выход; реальную политику конкретного хоста всегда нужно проверять.
Не блокируйте ICMPv6 целиком
ICMPv6 используется не только для ping: сообщения Neighbor Discovery, Router Advertisement и Packet Too Big являются частью функционирования IPv6. Глухой запрет может привести к исчезновению сети, проблемам с MTU и нестабильным подключениям.
Проверка текущего состояния¶
ip -6 address
ip -6 route
ip6tables -S
ip6tables -L -n -v --line-numbers
ip6tables -t nat -S
ss -lntup
Не предполагается, что в каждом образе включён IPv6/NAT IPv6. Если ip6tables отсутствует — сначала уточните установленные пакеты и версии.
Что такое ICMPv6 и почему он важен¶
| Тип сообщения | Назначение |
|---|---|
| Neighbor Solicitation/Advertisement | Определение соседей в локальном сегменте |
| Router Solicitation/Advertisement | Информация о маршрутизаторах и адресации |
| Packet Too Big | Path MTU Discovery, корректный размер пакета |
| Destination Unreachable | Информация о недоступном узле/сети |
| Time Exceeded | Диагностика маршрутов и TTL/hop limit |
Решение о разрешении конкретных типов зависит от того, выполняет ли узел роль сервера или маршрутизатора. Для первого развёртывания значительно безопаснее сохранить существующий набор правил, чем заменить его одной командой ip6tables -P INPUT DROP.
Пример проверки IPv6-доступа к сервису¶
- Узнайте, где слушает приложение:
ss -lntup. Адрес::означает слушание на всех IPv6-интерфейсах с учётом настроек сокета. - Посмотрите порядок правил:
ip6tables -L INPUT -n -v --line-numbers. - С внешнего доверенного IPv6-клиента проверьте TCP-соединение, убедившись, что тест разрешён политикой безопасности.
- Сравните рост счётчика конкретного правила с событием подключения.
- Отдельно посмотрите
OUTPUT: приDROPисходящий SYN-ACK или DNS-запрос может быть заблокирован.
Пример добавления только одного разрешающего правила, при условии что политики и место вставки уже изучены:
# ИЛЛЮСТРАЦИЯ: допустить новое SSH-соединение от конкретного IPv6-адреса
# Замените 2001:db8::100 реальным адресом администратора.
ip6tables -I INPUT 1 -s 2001:db8::100/128 \
-p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
ip6tables -L INPUT -n -v --line-numbers
Не выполнять без подготовки
Позиция 1 выбрана для иллюстрации и может нарушить принятую политику, если раньше есть специальные ограничения. Перед вставкой оцените полный порядок цепочки и откат. В IPv6 также обычно требуется правило для ESTABLISHED,RELATED и необходимые ICMPv6 — их нельзя восстанавливать по одному фрагменту из этой страницы.
Сохранение и откат¶
Дальнейший способ постоянного сохранения в НАЙС.ОС зависит от iptables.service и установленных вспомогательных скриптов. В SPEC они предусмотрены, но исходные ip6save и unit отсутствуют в предоставленном архиве. Не объявляйте произвольный путь постоянного сохранения эталонным до проверки systemctl cat iptables и установленного /etc/systemd/scripts/ip6save.
Для отката используйте заранее проверенный способ доступа к консоли и подготовленную копию. ip6tables-restore < /root/ip6tables-before-change.rules может разорвать удалённое соединение; выполняйте в безопасном окне обслуживания.
Типовые ошибки¶
- Фильтруют только IPv4, забывая доступность по IPv6.
- Считают ping-тест эквивалентным проверке TCP.
- Блокируют Neighbor Discovery, после чего перестаёт работать ближайший маршрутизатор.
- Настраивают статический IPv6 и не дают шлюз/RA.
- Сохраняют не тот backend или вручную переписывают файлы, контролируемые системным сервисом.
Источники: Core/iptables/SPECS/iptables.spec; IPv6 и RFC 4890.