ping6.net
Безопасность

Безопасность NDP: Защита от атак на сети IPv6

Защитите вашу IPv6-сеть от атак на основе NDP. Изучите RA Guard, SEND, DHCPv6 Shield и как предотвратить поддельные router advertisements.

ping6.net14 декабря 2024 г.14 min read
IPv6NDPsecurityRA GuardSENDnetwork security

Почему безопасность NDP важна#

Neighbor Discovery Protocol (NDP) заменяет ARP в IPv6, обрабатывая разрешение адресов, обнаружение роутеров и конфигурацию сети. В отличие от простой модели запрос-ответ ARP, NDP управляет объявлениями префиксов, обнаружением дублирующихся адресов и router advertisements — все критически важные сетевые функции.

Проблема: NDP был разработан для доверенных локальных сетей. У него нет аутентификации. Любое устройство в вашей LAN может отправлять Router Advertisements, утверждая, что оно шлюз по умолчанию, объявлять произвольные префиксы или отравлять кеши соседей. В современных сетях с гостевым доступом, политиками BYOD и потенциальными инсайдерскими угрозами эта модель доверия ломается.

Воздействие атак варьируется от отказа в обслуживании (разрыв связи) до атак «человек посередине» (перехват трафика). По мере роста развертывания IPv6 атакующие все чаще нацеливаются на уязвимости NDP, которые сетевые команды не защитили.

TL;DR - Краткое резюме

Ключевые моменты:

  • NDP не имеет аутентификации: Любое устройство может отправлять Router Advertisements или отравлять кеши соседей
  • RA Guard обязателен: Разверните на всех access-коммутаторах для блокировки поддельных Router Advertisements
  • Многоуровневая безопасность: Используйте RA Guard, DHCPv6 Guard и ND Inspection вместе для глубокой защиты
  • SEND существует, но непрактичен: Криптографическая аутентификация требует PKI и имеет ограниченную поддержку устройствами
  • Мониторинг атак: Отслеживайте частоту RA, изменения кеша соседей и нарушения безопасности

Перейти к: Конфигурация RA Guard | Симуляция атак | Руководство по развертыванию


Векторы атак NDP#

Понимание угроз помогает расставить приоритеты в защите. Вот основные паттерны атак:

Поддельные Router Advertisements#

Наиболее распространенная и опасная атака. Вредоносное устройство отправляет Router Advertisements (RA) с:

  • Другим шлюзом по умолчанию (атака «человек посередине»)
  • Более коротким временем жизни роутера (DoS путем принудительной постоянной переконфигурации)
  • Вредоносными DNS-серверами
  • Недействительными префиксами
  • Избыточными RA, заполняющими сеть

Воздействие: клиенты автоматически переконфигурируются, отправляя трафик через систему атакующего или полностью теряя связь.

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

Отравление кеша соседей#

Атакующие отправляют поддельные Neighbor Advertisements, заявляя право собственности на IPv6-адрес другого устройства. Сеть обновляет свой кеш соседей MAC-адресом атакующего.

Легитимный: 2001:db8::100 → MAC aa:bb:cc:dd:ee:ff
Атака:      2001:db8::100 → MAC 11:22:33:44:55:66 (атакующий)

Результат: трафик, предназначенный для легитимного хоста, идет к атакующему.

Это IPv6-версия отравления ARP. Та же концепция атаки, другой протокол.

Атаки на Duplicate Address Detection (DAD)#

Когда узел настраивает IPv6-адрес через SLAAC, он выполняет DAD — отправляя Neighbor Solicitations для проверки, что никакое другое устройство не использует этот адрес. Если он получает Neighbor Advertisement, заявляющий этот адрес, узел отказывается его настраивать.

Атакующие отвечают на все попытки DAD, предотвращая получение адресов легитимными узлами. Ваша сеть заполняется логами «IPv6: DAD failed», и устройства не могут получить адреса.

Атаки Redirect-сообщениями#

Роутеры отправляют ICMPv6 Redirect-сообщения, сообщая хостам о лучших вариантах следующего хопа. Без аутентификации атакующие подделывают redirect для перехвата потоков трафика.

Менее распространена, чем RA-атаки, но одинаково опасна при нацеливании на конкретные коммуникации.

Флуд Router Solicitation#

Хотя менее воздействующие, атакующие могут заполнить сеть Router Solicitations, заставляя легитимные роутеры тратить ресурсы на генерацию ответов. В сочетании с другими атаками это усиливает нарушение.

Механизмы защиты#

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

RA Guard: Первая линия защиты#

RA Guard (RFC 6105) — это функция коммутатора, фильтрующая сообщения Router Advertisement. Думайте о ней как о port security для RA — только авторизованные порты могут их отправлять.

Как работает RA Guard#

Коммутатор проверяет ICMPv6-пакеты на наличие Router Advertisements и применяет политику:

┌─────────────────────────────────────────┐
│          Типы портов коммутатора        │
├─────────────────────────────────────────┤
│ Порт хоста: Блокировать все RA         │
│ Порт роутера: Разрешить RA от доверенных IP│
└─────────────────────────────────────────┘

Конфигурация определяет:

  • Порты, обращенные к хостам: Полностью блокировать RA (подключения конечных пользователей)
  • Порты, обращенные к роутерам: Разрешить RA (uplink к легитимным роутерам)
  • Проверка роли устройства: Сопоставление адресов источников с авторизованными роутерами

Конфигурация RA Guard в Cisco#

! Определите список доступа IPv6 для доверенных роутеров
ipv6 access-list TRUSTED-ROUTERS
 permit ipv6 host 2001:db8::1 any
 permit ipv6 host 2001:db8::2 any
 
! Создайте политику RA Guard
ipv6 nd raguard policy HOST-POLICY
 device-role host
 
ipv6 nd raguard policy ROUTER-POLICY
 device-role router
 match ipv6 access-list TRUSTED-ROUTERS
 
! Примените к VLAN
interface range GigabitEthernet1/0/1-48
 description Access ports
 ipv6 nd raguard attach-policy HOST-POLICY
 
interface GigabitEthernet1/0/49
 description Uplink to router
 ipv6 nd raguard attach-policy ROUTER-POLICY

Конфигурация RA Guard в Juniper#

# Определите RA Guard на портах доступа
set protocols router-advertisement interface ge-0/0/0.0 no-advertise
 
# Разрешите RA на uplink
set protocols router-advertisement interface ge-0/0/23.0

Linux Bridge RA Guard#

Для коммутаторов на базе Linux или виртуализации KVM:

# Включите RA Guard на порту моста
echo 1 > /sys/class/net/vnet0/brport/protect_ra
 
# Или используйте ebtables
ebtables -A FORWARD -p IPv6 --ip6-proto ipv6-icmp \
  --ip6-icmp-type router-advertisement -i vnet0 -j DROP

Ограничения RA Guard#

RA Guard проверяет пакеты на уровне L2. Атакующие могут обойти его через:

  • Фрагментация: Разделение RA на IPv6-фрагменты (первый фрагмент не показывает тип ICMPv6)
  • Туннелирование: Инкапсуляция RA в другие протоколы
  • Extension headers: Добавление hop-by-hop или destination options заголовков

Современные коммутаторы включают режимы «глубокой проверки», которые пересобирают фрагменты и парсят extension headers. Проверьте, поддерживает ли ваше оборудование это, или примите остаточный риск.

Обход через фрагментацию

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

DHCPv6 Guard#

Подобно RA Guard, DHCPv6 Guard блокирует серверные сообщения DHCPv6 с неавторизованных портов. Это предотвращает выдачу адресов или DNS-конфигураций поддельными DHCPv6-серверами.

Cisco DHCPv6 Guard#

ipv6 dhcp guard policy CLIENT-POLICY
 device-role client
 
ipv6 dhcp guard policy SERVER-POLICY
 device-role server
 
interface range GigabitEthernet1/0/1-48
 ipv6 dhcp guard attach-policy CLIENT-POLICY
 
interface GigabitEthernet1/0/49
 ipv6 dhcp guard attach-policy SERVER-POLICY

DHCPv6 Guard работает с этими типами сообщений:

  • ADVERTISE (сервер → клиент)
  • REPLY (сервер → клиент)
  • RECONFIGURE (сервер → клиент)

Блокировка этих сообщений с портов хостов предотвращает поддельные DHCPv6-серверы, разрешая легитимные клиентские запросы.

SEND: Криптографическая аутентификация#

Secure Neighbor Discovery (SEND, RFC 3971) добавляет криптографические подписи к NDP-сообщениям. Он обеспечивает сильную аутентификацию, но требует PKI-инфраструктуры и не получил широкого распространения.

Как работает SEND#

SEND использует CGA (Cryptographically Generated Addresses), где IPv6-адрес криптографически привязан к публичному ключу:

  1. Узел генерирует пару публичный/приватный ключ
  2. Создает IPv6-адрес с хешем публичного ключа в идентификаторе интерфейса
  3. Подписывает NDP-сообщения приватным ключом
  4. Получатели проверяют, что подпись соответствует адресу
┌─────────────────────────────────────────────────┐
│ Router Advertisement (с SEND)                   │
├─────────────────────────────────────────────────┤
│ Стандартные поля RA                             │
│ + CGA Parameters (публичный ключ, модификатор)  │
│ + RSA Signature                                 │
│ + Timestamp                                     │
│ + Nonce (для защиты от повторов)               │
└─────────────────────────────────────────────────┘

Почему SEND не распространен#

Несмотря на стандартизацию с 2005 года, внедрение SEND остается минимальным:

Плюсы:

  • Криптографически безопасен (невозможно подделать без приватного ключа)
  • Не требуется поддержка коммутатора (end-to-end безопасность)
  • Защищает все типы NDP-сообщений

Минусы:

  • Требование сложной PKI-инфраструктуры
  • Ограниченная поддержка ОС (некоторые реализации существуют, редко включены по умолчанию)
  • Накладные расходы производительности на проверку подписей
  • Проблемы обратной совместимости (SEND и non-SEND узлы плохо взаимодействуют)
  • Сложность управления адресами (CGA-адреса не удобны для человека)

Большинство организаций находят RA Guard и DHCPv6 Guard достаточными с лучшим соотношением затрат и выгод.

Когда рассматривать SEND#

Высокозащищенные среды, где:

  • Вы контролируете все конечные точки (можете обеспечить SEND везде)
  • PKI-инфраструктура уже существует
  • Воздействие на производительность приемлемо
  • Нормативное соответствие требует криптографической защиты NDP

Набор First-Hop Security для IPv6#

Современные коммутаторы объединяют функции безопасности NDP в комплексную first-hop security:

IPv6 Source Guard#

Проверяет, что IPv6-адрес источника и MAC-адрес соответствуют привязкам, полученным через:

  • NDP snooping (отслеживание легитимных Neighbor Advertisements)
  • DHCPv6 snooping (отслеживание назначений адресов)
  • Ручные привязки

Блокирует пакеты с поддельными адресами источников.

IPv6 Prefix Guard#

Проверяет Router Advertisements и DHCPv6 Prefix Delegation сообщения против настроенных политик префиксов. Предотвращает объявление неавторизованных префиксов атакующими.

IPv6 Destination Guard#

Обеспечивает, что адреса назначения в пакетах соответствуют таблице привязок neighbor discovery. Предотвращает трафик к несуществующим адресам (используется в некоторых DoS-атаках).

ND Inspection#

Прослушивает все NDP-сообщения и строит таблицы привязок, сопоставляющие IPv6-адрес → MAC-адрес → порт. Другие функции безопасности ссылаются на эти привязки для проверки.

Полная конфигурация FHS в Cisco#

! Включите IPv6 на коммутаторе
ipv6 unicast-routing
 
! Создайте политику FHS
ipv6 access-list ipv6-acl-fhs
 permit ipv6 any any
 
ipv6 nd inspection policy FHS-POLICY
 device-role switch
 drop-unsecure
 limit address-count 1000
 tracking enable
 
ipv6 snooping policy FHS-SNOOPING
 device-role switch
 
! Примените к VLAN
vlan configuration 10
 ipv6 nd inspection attach-policy FHS-POLICY
 ipv6 snooping attach-policy FHS-SNOOPING
 
! Настройте доверенные порты
interface GigabitEthernet1/0/49
 ipv6 nd inspection trust
 ipv6 snooping trust

Мониторинг и обнаружение#

Превентивных мер недостаточно. Мониторьте попытки атак и аномалии.

Ключевые метрики для отслеживания#

Активность Router Advertisement:

# Мониторинг частоты RA
rdisc6 eth0
 
# Ожидается: RA каждые 200-600 секунд от известных роутеров
# Предупреждение: Несколько RA в секунду, RA от неизвестных источников

Частота сообщений Neighbor Discovery:

# Подсчет пакетов в Linux
ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -j LOG --log-prefix "RA: "
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -j LOG --log-prefix "NA: "
 
# Наблюдение за логами
journalctl -f | grep -E "RA:|NA:"

Изменения кеша соседей:

# Мониторинг изменений таблицы соседей
watch -n 1 "ip -6 neigh show | wc -l"
 
# Высокая текучесть указывает на возможное отравление

Нарушения безопасности коммутатора#

Мониторьте нарушения RA Guard и DHCPv6 Guard:

# Cisco
show ipv6 nd raguard policy
show ipv6 dhcp guard policy
 
# Ищите увеличивающиеся счетчики отбрасываний
show platform hardware fed switch active qos queue stats internal cpu policer

Интеграция с SIEM#

Пересылайте события безопасности в ваш SIEM:

Правила обнаружения:

  • Множественные Router Advertisements от разных источников за короткое время
  • RA с необычными временами жизни (очень короткие или очень длинные)
  • Высокая частота Neighbor Solicitations (возможная DAD-атака)
  • RA с неожиданных адресов источников
  • DHCPv6 серверные сообщения с портов хостов

Пример запроса Splunk:

index=network sourcetype=cisco:ios ipv6 "RA Guard" action=dropped
| stats count by src_ip, interface
| where count > 10

Специализированные инструменты безопасности#

ndpmon: Демон мониторинга NDP с открытым исходным кодом

# Установка
apt-get install ndpmon
 
# Настройка разрешенных роутеров в /etc/ndpmon/config_ndpmon.xml
<router>
  <mac>aa:bb:cc:dd:ee:ff</mac>
  <lla>fe80::1</lla>
</router>
 
# Запуск мониторинга
ndpmon -c /etc/ndpmon/config_ndpmon.xml

Предупреждения о:

  • Поддельных RA
  • Неожиданных изменениях префиксов
  • Изменениях привязок MAC/IPv6
  • DAD-атаках

Практическое руководство по развертыванию#

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

Фаза 1: Видимость (Неделя 1)#

Цель: Понять текущее поведение NDP

  1. Включите логирование NDP на коммутаторах
  2. Разверните ndpmon или аналог на каждом VLAN
  3. Задокументируйте все легитимные роутеры (MAC, IPv6-адрес)
  4. Соберите недельный базовый уровень RA/NA трафика
  5. Идентифицируйте любые неожиданные источники

Фаза 2: Пассивная защита (Неделя 2)#

Цель: Включить обнаружение без принудительного применения

  1. Настройте RA Guard в режиме мониторинга (если поддерживается)
  2. Настройте оповещения для нарушений
  3. Проверьте отсутствие ложных срабатываний от легитимной инфраструктуры
  4. Настройте политики на основе предупреждений

Фаза 3: Активная защита (Недели 3-4)#

Цель: Применить политики безопасности

  1. Включите RA Guard в режиме блокировки на тестовом VLAN
  2. Проверьте клиентскую связь и назначение адресов
  3. Расширьте на production VLAN постепенно
  4. Добавьте DHCPv6 Guard и другие функции FHS
  5. Задокументируйте исключения и доверенные порты

Фаза 4: Текущее управление#

Цель: Поддерживать позицию безопасности

  1. Еженедельно проверяйте логи нарушений
  2. Обновляйте списки доверенных роутеров при изменениях инфраструктуры
  3. Тестируйте безопасность при оценке уязвимостей
  4. Обучайте команду концепциям безопасности NDP

Лучшие практики конфигурации#

Для коммутаторов доступа#

! Стандартная позиция: все порты обращены к хостам
ipv6 nd raguard policy DEFAULT-HOST
 device-role host
 
! Примените ко всем портам по умолчанию
interface range GigabitEthernet1/0/1-48
 ipv6 nd raguard attach-policy DEFAULT-HOST
 ipv6 dhcp guard attach-policy CLIENT-POLICY
 ipv6 snooping
 
! Явно доверьте uplinks (используйте ручное переопределение)
interface GigabitEthernet1/0/49
 description Uplink to distribution
 ipv6 nd raguard attach-policy ROUTER-POLICY
 ipv6 dhcp guard attach-policy SERVER-POLICY
 ipv6 snooping trust

Принцип: Запрет по умолчанию, явное разрешение.

Для беспроводных контроллеров#

Гостевые сети особенно уязвимы:

! Строгая блокировка RA на гостевом SSID
ipv6 nd raguard policy GUEST-POLICY
 device-role host
 no-ra

Для дата-центров#

Виртуализированным средам нужен RA Guard на виртуальных коммутаторах:

VMware:

  • vSphere 6.5+ поддерживает политики безопасности IPv6
  • Настройте RA Guard на распределенном виртуальном коммутаторе
  • Примените ко всем гостевым VLAN

KVM/Linux мосты:

# Включите защиту RA на всех VM-интерфейсах
for interface in /sys/class/net/vnet*/brport/protect_ra; do
  echo 1 > "$interface"
done

Тестирование вашей защиты

Используйте наш Валидатор IPv6 для проверки правильной настройки ваших адресов и Ping для тестирования доступности после внедрения безопасности NDP.

Симуляция атак для тестирования#

Проверьте, что ваша защита работает, прежде чем атакующий протестирует ее за вас.

Тест RA Guard#

Используйте radvd для отправки тестовых Router Advertisements с порта хоста:

# Установите radvd
apt-get install radvd
 
# Настройте тестовый RA (/etc/radvd.conf)
interface eth0 {
  AdvSendAdvert on;
  prefix 2001:db8:bad::/64 {
    AdvOnLink on;
    AdvAutonomous on;
  };
};
 
# Запустите radvd
systemctl start radvd
 
# Ожидается: RA Guard блокирует эти сообщения
# Проверьте: Проверьте логи коммутатора на нарушения

Тест ND Inspection#

Попытка отравления кеша соседей:

# Отправьте поддельный Neighbor Advertisement
ndsend eth0 2001:db8::victim -a aa:bb:cc:dd:ee:ff --na-override
 
# Ожидается: Source Guard или ND Inspection блокирует
# Проверьте: Кеш соседей не изменен на цели

Профессиональные инструменты тестирования#

THC IPv6 Attack Toolkit:

# Установка
apt-get install thc-ipv6
 
# Тест флуда RA
flood_router6 eth0
 
# Тест DAD-атаки
dos-new-ip6 eth0
 
# Ожидается: Все атаки блокированы функциями FHS

Scapy для пользовательских тестов:

from scapy.all import *
 
# Создайте вредоносный RA
ra = IPv6(dst="ff02::1")/ICMPv6ND_RA()/ICMPv6NDOptPrefixInfo(prefix="2001:db8:bad::")
send(ra, iface="eth0")

Выполняйте тестирование атак только в изолированных тестовых сетях или с явным разрешением.

Распространенные ошибки#

Настройка RA Guard на всех портах без явного доверия uplinks блокирует легитимные RA. Вся ваша сеть теряет IPv6-связь.

Симптом: Клиенты перестают получать адреса после включения RA Guard.

Исправление: Идентифицируйте и доверьте порты, подключенные к легитимным роутерам.

2. Непоследовательное покрытие VLAN#

Применение безопасности к некоторым VLAN, но не к другим. Атакующие подключаются к незащищенным VLAN и перемещаются.

Исправление: Примените политики first-hop security ко всем VLAN, включая управляющие сети.

3. Отсутствие тестирования перед production#

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

Исправление: Всегда тестируйте в лабораторной среде или в режиме мониторинга сначала.

4. Игнорирование беспроводных сетей#

Контроллеры беспроводной связи и точки доступа часто обходят RA Guard, если не настроены правильно.

Исправление: Проверьте, что политики безопасности применяются к беспроводным VLAN. Тестируйте с WiFi-клиентов.

5. Пренебрежение виртуальными средами#

VM могут отправлять RA внутри виртуальных коммутаторов, атакуя другие VM на том же хосте.

Исправление: Включите защиту RA на виртуальных коммутаторах и сетях гипервизора.

Начните защищать NDP сейчас#

NDP-атаки реальны и растут. Механизмы безопасности существуют и работают — им просто нужно развертывание.

Минимальная жизнеспособная безопасность NDP:

  1. Включите RA Guard на всех коммутаторах доступа
  2. Доверяйте только uplink-портам
  3. Мониторьте нарушения
  4. Реагируйте на предупреждения

Это останавливает 95% NDP-атак с минимальными усилиями. Добавьте DHCPv6 Guard, Source Guard и комплексный мониторинг для эшелонированной защиты.

Не ждите атаки, чтобы начать серьезно относиться к безопасности NDP. Ваша IPv4-сеть имеет правила файрвола, port security и DHCP snooping. IPv6 заслуживает такого же внимания.

Связанные статьи#

Часто задаваемые вопросы#

Достаточно ли RA Guard или мне нужен SEND?

RA Guard обеспечивает достаточную защиту для большинства сетей. SEND предлагает более сильную криптографическую безопасность, но требует значительных инвестиций в инфраструктуру и имеет ограниченную поддержку устройств. Начните с RA Guard и других функций first-hop security. Рассматривайте SEND только для высокочувствительных сред, где вы контролируете все конечные точки.

Могут ли атакующие обойти RA Guard с помощью фрагментации?

Старые реализации RA Guard могли быть обойдены фрагментированными RA. Современные коммутаторы поддерживают RFC 7113, который добавляет пересборку фрагментов и парсинг extension headers. Проверьте, что прошивка вашего коммутатора поддерживает улучшенный RA Guard. Если нет, примите это как остаточный риск или обновите оборудование.

Должен ли я блокировать весь ICMPv6 для предотвращения NDP-атак?

Нет. ICMPv6 фундаментален для работы IPv6 — он обрабатывает NDP, обнаружение path MTU и отчеты об ошибках. Блокировка всего ICMPv6 полностью ломает IPv6. Используйте целевые функции безопасности (RA Guard, DHCPv6 Guard), которые фильтруют конкретные типы сообщений на конкретных портах, а не общую блокировку ICMPv6.

Как мне защитить IPv6 в сетях без управляемых коммутаторов?

Без RA Guard на уровне коммутатора у вас ограниченные варианты:

  • Разверните SEND, если ваши конечные точки поддерживают его (редко)
  • Используйте файрволинг на уровне хоста для ограничения того, какие RA принимают клиенты
  • Внедрите сегментацию сети для ограничения области атаки
  • Мониторьте с помощью инструментов вроде ndpmon для обнаружения атак
  • Рассмотрите обновление до управляемых коммутаторов с функциями безопасности IPv6

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