L2 Безопасность порта: port-security, DHCP snooping, DAI, 802.1X

Порт доступа на коммутаторе по умолчанию — дырка в сеть: воткнул кабель — и ты внутри, без вопросов. Для гостя в переговорке, для чьего-то домашнего роутера, для атакующего с ноутбуком это открытая дверь. Настоящая сеть так не строится. В этом модуле превратим порт из «дырки» в проходную с охраной: ограничим MAC, отловим чужой DHCP и ARP, поставим на вход аутентификацию 802.1X. Это блок CCNA Security и то, что отличает «сеть работает» от «сеть защищена».

Что узнаешь
Вспомни из прошлых модулей

Модуль 2: коммутатор учит MAC-адреса и хранит их в CAM-таблице; неизвестный unicast — флудит. Модуль 3: STP и BPDU, «один чужой свитч роняет сеть». Модуль 15: DHCP snooping делит порты на trusted/untrusted и строит таблицу привязок — сегодня на ней будет стоять DAI и IP Source Guard. Модуль 2 про ARP: «поддельный ARP-ответ уводит трафик» — сегодня закроем это навсегда. Если подзабылось — вернись, весь модуль стоит на этих кирпичах.

1. Заявка: «в переговорке кто-то влез в сеть серверов»

Инцидент №7742
«В переговорке на 3 этаже подрядчик воткнул свой ноутбук в свободный порт и получил доступ к внутренним сервисам. Служба ИБ требует: с любого порта доступа нельзя попасть в сеть без разрешения, чужие устройства — не пускать. Настройте защиту портов доступа во всём офисе».

Формально «настроить порт» — минута. Но за этой заявкой — целый набор мер, каждая закрывает свой вектор атаки: одна ограничивает устройства на порту, вторая не даёт поднять чужой DHCP, третья ловит ARP-подмену, четвёртая вообще не пускает неаутентифицированного в сеть. Разберём их по очереди — и в конце соберём «эшелонированную оборону» порта доступа.

2. Почему порт доступа опасен: три классические атаки на L2

🌊 MAC-flooding (CAM overflow)

Атакующий шлёт лавину кадров с тысячами поддельных MAC. CAM-таблица переполняется, свитч «забывает» реальные привязки и начинает флудить весь unicast во все порты — превращается в хаб. Атакующий видит чужой трафик. Лечит — port-security.

🕵️ Rogue DHCP

Чужой DHCP-сервер (домашний роутер или злоумышленник) раздаёт свой шлюз — и весь трафик жертв идёт через него. Лечит — DHCP snooping (модуль 15).

🎭 ARP-spoofing / MITM

Атакующий шлёт поддельные ARP «я — ваш шлюз», уводит трафик на себя и читает/меняет его (man-in-the-middle). Лечит — DAI.

🪓 Чужой свитч и захват STP

Воткнутый свитч со «злыми» BPDU объявляет себя корнем STP и перекраивает топологию, кладя сеть. Лечит — BPDU Guard.

Общий принцип защиты L2 — минимум доверия к порту доступа: считать, что за ним может оказаться кто угодно, и явно разрешать только ожидаемое (один-два MAC, только клиентский трафик, только аутентифицированных). Это называется эшелонированная оборона: несколько независимых барьеров, каждый закрывает свой вектор.

3. Port-security — сколько устройств и каких можно за портом

Идея простая: на порту доступа обычно сидит одно устройство (или ПК + IP-телефон за ним — два). Port-security говорит свитчу: «на этом порту разрешено не больше N MAC-адресов; лишний — нарушение».

РежимЧто делает при лишнем MACКогда
protectмолча отбрасывает кадры чужого MAC, порт живётмягко, но без следов — редко
restrictотбрасывает + инкремент счётчика + syslog/SNMP-trapхочешь знать о нарушениях, но не ронять порт
shutdownпереводит порт в err-disabled (гасит)по умолчанию и чаще всего — жёстко и заметно
# Port-security на порту доступа: 1 MAC, sticky, при нарушении — погасить SW(config)# interface gi0/5 SW(config-if)# switchport mode access SW(config-if)# switchport port-security SW(config-if)# switchport port-security maximum 1 SW(config-if)# switchport port-security mac-address sticky SW(config-if)# switchport port-security violation shutdown # проверка SW# show port-security interface gi0/5 SW# show port-security address # какие MAC запомнены
Частая авария джуна

Порт в err-disabled «на ровном месте» — это почти всегда сработавший port-security (кто-то воткнул второе устройство/мини-свитч) или BPDU Guard (воткнули свитч). Порт сам не поднимется: убери лишнее и передёрни (shutdownno shutdown) либо настрой errdisable recovery cause psecure-violation для автоподъёма через таймер.

4. DHCP snooping — фундамент для остальной защиты

Из модуля 15: snooping делит порты на trusted (аплинк к настоящему DHCP-серверу) и untrusted (клиентские). Серверные ответы (OFFER/ACK) с untrusted-порта режутся — rogue DHCP не поднять. Но сегодня важнее побочный продукт: snooping строит таблицу привязок — легитимные пары MAC ↔ IP ↔ порт ↔ VLAN. На этой таблице стоят следующие два барьера.

SW(config)# ip dhcp snooping SW(config)# ip dhcp snooping vlan 10,20 SW(config-if)# ip dhcp snooping trust # только на аплинке к серверу SW# show ip dhcp snooping binding # та самая таблица привязок

5. DAI — конец ARP-спуфингу

ARP из модуля 2 доверчив: кто ответил «этот IP — мой», тому и верят. Атакующий шлёт поддельный ARP-ответ «10.1.10.1 (шлюз) — это мой MAC» и уводит трафик жертвы на себя (man-in-the-middle). Dynamic ARP Inspection ставит на пути проверку:

Каждый ARP на untrusted-порту — под проверку
DAI перехватывает ARP-ответы, приходящие с недоверенных (клиентских) портов.
Сверка с таблицей привязок snooping
«Заявлено: IP 10.1.10.1 за MAC X на порту gi0/5. А в таблице DHCP snooping этот IP закреплён за другим MAC/портом?» — несоответствие.
Несовпало — отбросить
Поддельный ARP не проходит, трафик не уводится. MITM закрыт. Аплинки к серверам/роутерам помечают ip arp inspection trust, чтобы не проверять легитимные устройства на статике.
SW(config)# ip arp inspection vlan 10,20 SW(config-if)# ip arp inspection trust # на аплинке (там, где snooping trust)

Ещё один барьер на той же таблице — IP Source Guard: он режет кадры, у которых IP-адрес источника не совпадает с привязкой snooping, — так нельзя «притвориться» чужим IP.

6. 802.1X — не пускать в сеть без аутентификации

Port-security ограничивает сколько устройств, но не кто они. 802.1X решает именно «кто»: пока устройство не прошло аутентификацию, порт закрыт для всего, кроме самой аутентификации. Три роли:

РольКто этоЧто делает
Supplicantклиент (ОС ноутбука, телефон)предъявляет учётные данные (логин/пароль, сертификат)
Authenticatorкоммутатор доступа«посредник»: пропускает только EAP-обмен, остальное блокирует до успеха
Authentication serverRADIUS (напр., Cisco ISE, FreeRADIUS)проверяет данные и говорит «пускать / не пускать / в какой VLAN»
Порт закрыт, идёт только EAP
Устройство воткнули — но до аутентификации коммутатор пропускает лишь протокол EAPoL. Ни в сеть, ни к серверам — никуда.
Проверка на RADIUS
Коммутатор передаёт учётные данные supplicant'а на RADIUS. Тот сверяет (с AD/базой) и отвечает Accept/Reject, может вернуть и VLAN/ACL для этого пользователя.
Успех — порт открывается
Accept → порт пускает трафик (в назначенный VLAN). Reject или нет supplicant'а → guest VLAN (только интернет) или блок. Так чужой ноутбук в сеть не попадёт, даже воткнув кабель.
Вопрос с собеседования

«Чем 802.1X лучше port-security?» Port-security проверяет только MAC — а MAC легко подделать (спуфинг). 802.1X проверяет личность (учётные данные/сертификат) через RADIUS — подделать куда сложнее. На практике их часто комбинируют: 802.1X для аутентификации + port-security как второй барьер.

7. AAA: RADIUS и TACACS+

За 802.1X и за доступом инженеров к самому оборудованию стоит AAA — три «A»: Authentication (кто ты), Authorization (что тебе можно), Accounting (что ты делал). Реализуют её два протокола:

RADIUSTACACS+
Автороткрытый (IETF)Cisco
ТранспортUDPTCP
Шифруеттолько парольвесь пакет целиком
A+Aобъединяет authn+authzразделяет — гибче для команд
Гдедоступ пользователей в сеть (802.1X, Wi-Fi, VPN)администрирование устройств (кто какие команды на роутере)
Простое правило: RADIUS — пускать людей в сеть (802.1X, Wi-Fi, VPN); TACACS+ — управлять доступом инженеров к железу (кто и какие команды может вводить, с полным логом). На CCNA достаточно знать разницу и «UDP/только пароль vs TCP/весь пакет».

8. BPDU Guard — чтобы чужой свитч не сломал STP

Из модуля 3: STP выбирает корень по BPDU. Воткнутый в порт доступа свитч может прислать «лучшие» BPDU и стать корнем — топология перекроится, начнётся переключение, часть сети моргнёт или ляжет. На портах доступа свитчей быть не должно, поэтому там включают BPDU Guard: пришёл BPDU на access-порт — порт немедленно в err-disabled. Плюс PortFast, чтобы клиентский порт поднимался мгновенно, минуя стадии STP.

SW(config)# interface gi0/5 SW(config-if)# spanning-tree portfast SW(config-if)# spanning-tree bpduguard enable # или глобально для всех portfast-портов: SW(config)# spanning-tree portfast bpduguard default

9. Мини-лаба: увидь свою «поверхность атаки»

Без оборудования — на своём компьютере, чтобы концепции стали руками:

# Твой MAC — то, что видит port-security $ ip link # Linux: link/ether xx:xx:... (Windows: ipconfig /all → Physical Address) # Твоя ARP-таблица — то, что защищает DAI. Кто у тебя «шлюз»? $ arp -a # Запомни MAC шлюза. ARP-spoofing — это когда этот MAC вдруг подменился на чужой.

Что понять: в домашней сети тебя ничто не защищает — любой в твоём Wi-Fi может попробовать ARP-spoofing, и твой arp -a покажет «шлюз» с чужим MAC. В корпоративной сети именно DAI + snooping + 802.1X делают это невозможным. Ты только что посмотрел ровно те данные, на которых стоит вся защита порта.

10. Плейбук: «порт в err-disabled» и «новое устройство не пускается»

Что говорит причина err-disabled
show interface gi0/5 status → err-disabled; show errdisable recovery и логи скажут причину: psecure-violation (port-security), bpduguard (чужой свитч), arp-inspection и т.д. Причина = диагноз.
psecure-violation — появился лишний MAC
Кто-то воткнул второе устройство/мини-свитч. Убери лишнее, проверь show port-security address, передёрни порт shutdown/no shutdown.
bpduguard — воткнули свитч
На access-порт пришли BPDU. Убери свитч (или перенеси линк на trunk, если он легитимный), подними порт.
802.1X: устройство не аутентифицируется
Нет supplicant'а/не той учётки → guest VLAN или блок. Проверь show authentication sessions, доступность RADIUS, настройки клиента. Часто — принтер без 802.1X, ему нужен MAB (MAC Authentication Bypass).

11. Частые ошибки

Грабли, на которые наступают все

1) Включили DAI/snooping, но забыли trust на аплинке → зарубили легитимный сервер/шлюз. 2) Port-security maximum 1 там, где ПК + IP-телефон (нужно 2, а для телефона — отдельный voice VLAN). 3) BPDU Guard на порту, куда позже воткнули легитимный свитч → err-disabled. 4) 802.1X без плана для устройств без supplicant (принтеры, камеры) → они выпадают; решение — MAB.

12. Словарик модуля

ТерминПо-английскиСмысл в одну строку
CAM-таблицаCAM / MAC address tableпамять свитча «MAC → порт»; её переполняют MAC-flooding'ом
Port-securityport securityлимит и/или список разрешённых MAC на порту
Sticky MACstickyсвитч сам запоминает первый MAC как разрешённый
err-disablederror-disabledсостояние «порт погашен из-за нарушения»
DHCP snoopingDHCP snoopingtrusted/untrusted порты + таблица привязок MAC↔IP
DAIDynamic ARP Inspectionпроверка ARP по таблице snooping — против ARP-spoofing
IP Source GuardIPSGрежет кадры с чужим IP-источником
802.1Xport-based NACаутентификация доступа к порту через RADIUS
Supplicantsupplicantклиент, который проходит аутентификацию 802.1X
MABMAC Authentication Bypassвход по MAC для устройств без 802.1X (принтеры)
AAAauthn/authz/accountingкто ты / что можно / что делал — RADIUS и TACACS+
BPDU GuardBPDU guardгасит access-порт, если на него пришёл BPDU (чужой свитч)
1. На порту доступа стоит ПК, за ним IP-телефон, а сотрудник иногда подключает второй ноут в свитч-переходник. Порт постоянно уходит в err-disabled. Что настроить правильно?

Порт «переходник» = несколько MAC → port-security с maximum 1 роняет его. Правильно: для телефона — отдельный voice VLAN (телефон и ПК считаются корректно), maximum поднять до реального числа (2), а мини-свитчи под столом — запретить оргмерами. Если это ноут подрядчика — ему не место на этом порту, тут как раз 802.1X.

2. Включили DAI на VLAN 10, и сразу «отвалился» шлюз — пинги до него не проходят. Почему?

Забыли пометить аплинк к роутеру/шлюзу как ip arp inspection trust. Шлюз на статике, его нет в таблице DHCP snooping, поэтому DAI считает его ARP «поддельным» и режет. Аплинки к инфраструктуре всегда trust — и для snooping, и для DAI.

3. Чем принципиально отличается защита, которую даёт port-security, от защиты 802.1X?

Port-security контролирует сколько и какие MAC — но MAC подделывается. 802.1X контролирует личность (учётные данные/сертификат) через RADIUS — до аутентификации порт закрыт вообще. Первое — «не больше N устройств», второе — «только те, кому реально разрешено». В зрелой сети — оба вместе.

4. Как одна таблица DHCP snooping усиливает сразу три механизма?

Snooping строит легитимные привязки MAC↔IP↔порт↔VLAN. На них стоят: DAI (сверяет ARP-ответы), IP Source Guard (сверяет IP-источник кадра) и косвенно контроль адресов. Поэтому snooping включают первым — без его таблицы DAI и IPSG работать не смогут.

Порт доступа по умолчанию — открытая дверь. Эшелонированная оборона закрывает её слоями: port-security (сколько MAC) + DHCP snooping (чужой DHCP) + DAI (ARP-spoofing) + IP Source Guard (чужой IP) + 802.1X (кто ты) + BPDU Guard (чужой свитч). Каждый барьер независим; вместе они превращают «дырку в сеть» в проходную с охраной.
Мост к следующему модулю

Оборону построили — но откуда ты вообще узнаешь, что где-то сработал port-security, упал линк или пополз трафик? Сеть должна рассказывать о себе: логи, счётчики, потоки, время. Следующий модуль — про наблюдаемость сети: Syslog, SNMP, NetFlow и NTP, без которого все метки времени врут.