Атаки канального уровня и port security

Разбираем две классические L2-атаки — поддельный DHCP-сервер и переполнение таблицы MAC — концептуально, чтобы настроить DHCP snooping, port security и 802.1X на коммутаторе.

DHCP-спуфинг — появление в сети поддельного DHCP-сервера, который выдаёт клиентам свои параметры (шлюз, DNS), чтобы стать «человеком посередине»; MAC-флудинг — переполнение таблицы коммутации фальшивыми MAC, заставляющее коммутатор рассылать кадры на все порты.

Урок концептуальный, на изолированном стенде (управляемый коммутатор + пара ВМ или эмулятор сети). Мы не вмешиваемся в чужие сети: подъём левого DHCP или флуд коммутатора в чужой инфраструктуре — это нарушение работы сети, ст. 274 УК РФ (а перехват данных — ст. 272). Цель — понять механику, чтобы её закрыть. Только своя сеть/лаборатория.

Зачем это знать защитнику

Канальный уровень — фундамент, на котором стоит всё остальное; компрометация L2 обнуляет защиты выше. Поддельный DHCP незаметно подменяет шлюз и DNS у новых клиентов, а MAC-флуд может превратить коммутатор в «хаб» и открыть пассивное прослушивание. Сетевой инженер, понимающий обе атаки, точечно включает функции коммутатора (DHCP snooping, port security, 802.1X), которые делают их невозможными, а не борется с последствиями.

DHCP-спуфинг: rogue-сервер

Нормальный DHCP работает по схеме DORA (Discover → Offer → Request → Ack): клиент широковещательно ищет сервер, тот предлагает аренду с IP, шлюзом и DNS. Клиент по умолчанию принимает первый подходящий Offer и не проверяет, легитимен ли сервер. Если в сегменте появляется второй, поддельный DHCP-сервер, он может выдать клиенту свой адрес как шлюз/DNS — и весь исходящий трафик жертвы пойдёт через машину атакующего (MITM), либо имена будут резолвиться на подменные адреса.

Проверить, какие параметры получил ваш хост, — обычная диагностика:

# Какой шлюз/DNS выдал DHCP моему хосту (диагностика)
ip route show default        # шлюз по умолчанию
resolvectl status | grep DNS # выданные DNS-серверы

Тревожный признак для защитника — в сегменте отвечает более одного DHCP-сервера или клиентам внезапно прилетел незнакомый шлюз/DNS. Это сигнал rogue-DHCP.

MAC-флудинг: переполнение CAM-таблицы

Коммутатор хранит соответствие «MAC → порт» в таблице (CAM-таблице) ограниченного размера и благодаря ей шлёт кадр только в нужный порт. Если завалить коммутатор потоком кадров с тысячами случайных source-MAC, таблица переполняется. Многие модели в этом состоянии переходят в fail-open и начинают рассылать неизвестные кадры на все порты — фактически работают как хаб. Тогда трафик других хостов становится виден атакующему. Это концептуальная причина, по которой важно ограничивать число MAC на access-порту.

Как это работает под капотом

Обе атаки эксплуатируют одно: access-порт по умолчанию доверяет всему, что в него приходит — любому DHCP-ответу и любому числу MAC-адресов. Коммутатор без дополнительной настройки не знает, какой порт «имеет право» отвечать DHCP и сколько устройств за портом легитимно. Значит, защита — научить коммутатор политике на порту: где разрешён DHCP-сервер, сколько MAC допустимо, кто вообще может подключиться. Это переносит точку доверия с «любого устройства в сети» на «явно сконфигурированный порт».

Как защититься

1. DHCP snooping — против поддельного DHCP. Функция делит порты на trusted (где стоит легитимный DHCP-сервер/аплинк) и untrusted (порты клиентов). DHCP-ответы (Offer/Ack) с untrusted-портов отбрасываются — rogue-сервер на клиентском порту просто не сможет ответить. Бонус: snooping строит таблицу легитимных пар IP/MAC/порт, на которую опирается Dynamic ARP Inspection из урока про ARP. Концептуальная настройка:

# Псевдоконфигурация: включить snooping и пометить аплинк доверенным
ip dhcp snooping
ip dhcp snooping vlan 10
interface Gi0/24            ! порт к легитимному DHCP/аплинку
  ip dhcp snooping trust    ! только отсюда разрешены DHCP-ответы
# клиентские порты остаются untrusted

2. Port security — против MAC-флудинга. Ограничивает число MAC-адресов, допустимых на access-порту (часто 1–2), и реагирует на превышение: отключить порт, отбрасывать лишние кадры или слать алерт. Таблица не переполнится, в хаб коммутатор не свалится:

# Псевдоконфигурация: не более 2 MAC на порту, нарушение → выключить порт
interface Gi0/5
  switchport port-security
  switchport port-security maximum 2
  switchport port-security violation shutdown

3. 802.1X — аутентификация порта (самый сильный рубеж). Стандарт требует, чтобы устройство аутентифицировалось (через RADIUS) до того, как порт начнёт пропускать обычный трафик. Неаутентифицированный хост не сможет ни поднять rogue-DHCP, ни флудить MAC — порт для него закрыт. Это смещает защиту от «реагируем на плохой трафик» к «пускаем в сеть только своих».

4. Сегментация и мониторинг. Разнесение по VLAN ограничивает домен атаки; алерты на «второй DHCP-сервер в сегменте» и на срабатывания port-security дают раннее обнаружение. DHCP snooping и port security предотвращают атаки, 802.1X не пускает чужого вовсе, мониторинг страхует — слои в глубину.

Как обнаружить rogue-DHCP и флуд в своей сети

Обнаружение — половина обороны, и для L2-атак оно вполне доступно. Поддельный DHCP-сервер выдаёт себя тем, что в сегменте на запрос Discover приходит несколько Offer-ов, причём один из них предлагает незнакомый шлюз или DNS. Многие управляемые коммутаторы умеют сами считать DHCP-ответы с untrusted-портов и поднимать тревогу — это естественное продолжение DHCP snooping. На стенде то же видно, если посмотреть, сколько разных DHCP-серверов отвечает и совпадает ли выданный шлюз с ожидаемым. MAC-флуд проявляется иначе: резкий рост числа уникальных source-MAC на одном порту и срабатывание счётчика port-security. Поэтому связка «snooping + port-security + алерты на их события» даёт не только предотвращение, но и видимость попыток.

Принцип «безопасный порт по умолчанию»

Главный вывод урока для сетевого инженера — не настраивать защиту точечно «там, где уже был инцидент», а сделать безопасную конфигурацию портов стандартом. Базовый профиль access-порта должен включать DHCP snooping (untrusted по умолчанию), port security с разумным лимитом MAC и, где возможно, 802.1X — и применяться ко всем клиентским портам через шаблон, а не вручную. Доверенными (trusted) явно помечаются только аплинки и порты легитимных серверных служб. Такой подход «запрещено всё, что не разрешено явно» закрывает не только сегодняшние ARP/DHCP/MAC-атаки, но и целый класс будущих злоупотреблений на L2, потому что неконтролируемых портов в сети просто не остаётся.

Итоги

  • L2-атаки бьют по фундаменту: rogue-DHCP подменяет шлюз/DNS, MAC-флуд переводит коммутатор в режим «хаба» и открывает прослушку.
  • Корень — access-порт по умолчанию доверяет любому DHCP-ответу и любому числу MAC.
  • DHCP snooping разрешает DHCP-ответы только с доверенных портов (и кормит DAI); port security ограничивает MAC на порту.
  • 802.1X — сильнейший рубеж: порт не пропускает трафик до аутентификации устройства.
  • Практика — только на своём оборудовании/в лаборатории. Подмена DHCP и флуд чужой сети = ст. 272/274 УК РФ.
Проверьте себя
1. Почему поддельный (rogue) DHCP-сервер вообще способен перехватить трафик клиента?
AКлиент по умолчанию принимает первый полученный DHCP-Offer и не проверяет, легитимен ли сервер, поэтому может получить подменённые шлюз и DNS
BDHCP передаёт пароль администратора сети в открытом виде
CЛюбой DHCP-сервер по стандарту обязан перенаправлять трафик через себя
DКлиент всегда выбирает DHCP-сервер с наибольшим IP-адресом
2. Какая функция коммутатора напрямую противодействует MAC-флудингу?
APort security — ограничение числа MAC-адресов на access-порту с реакцией на превышение
BDHCP snooping — деление портов на доверенные и недоверенные для DHCP
CУвеличение TTL у ARP-записей
DПеревод всех портов в режим trunk