«По умолчанию VLAN работают, как один широковещательный домен — но в этом и их главная проблема. Если думаешь, что VLAN изолируют трафик, ты можешь ошибаться: коммутатор способен физически пропустить пакет из одной виртуальной сети в другую. И это не баг, а особенность работы канального уровня.»
Как устроена логическая изоляция сети
Виртуальная локальная сеть (VLAN) создаёт изолированные широковещательные домены внутри одной физической инфраструктуры. Устройства в разных VLAN, даже подключённые к одному коммутатору, по умолчанию не видят трафик друг друга. Это основа сегментации: серверы бухгалтерии, инженерный отдел и гостевой Wi-Fi могут существовать на одних и тех же свитчах, но их кадры не смешиваются.
Принадлежность порта к VLAN определяется его конфигурацией — режимом access с назначенным номером VLAN. Все кадры, приходящие на такой порт от конечного устройства, коммутатор внутренне помечает соответствующим идентификатором. Когда два устройства в одной VLAN находятся на разных коммутаторах, для связи между свитчами используются транковые порты (trunk).
Транкинг: мосты между VLAN
Транк — это особый тип порта, который передаёт кадры сразу для нескольких VLAN. Чтобы коммутатор-получатель понимал, к какой виртуальной сети относится каждый кадр, к нему добавляется тег — заголовок стандарта 802.1Q, содержащий VLAN ID (VID). На транковом порту коммутатор-отправитель добавляет тег, а коммутатор-получатель его снимает и передаёт кадр только в порты, принадлежащие указанной VLAN.
Отдельно стоит понятие native VLAN. Это VLAN, кадры которой передаются по транку без тега. По умолчанию это VLAN 1. Идея в обратной совместимости — чтобы оборудование, не поддерживающее тегирование, могло работать в сети. Именно эта особенность станет одной из точек входа для атакующего.
С чего начинается уязвимость
Предполагаемая изоляция VLAN держится на корректной настройке коммутаторов. Если администратор полагается на значения по умолчанию или не до конца понимает логику работы протоколов канального уровня, в конфигурации появляются бреши.
Частая ошибка — оставление транкового протокола в режиме динамического согласования. Например, DTP (Dynamic Trunking Protocol) у Cisco позволяет портам автоматически договариваться, становиться им транком или портом доступа. Злоумышленник может заставить коммутатор «договориться» с его устройством о создании транка, получив доступ ко всем VLAN.
Атака Switch Spoofing: когда порт меняет режим
При атаке подмены коммутатора злоумышленник эмулирует поведение другого сетевого устройства, поддерживающего транкинг. Его рабочая станция отправляет DTP-кадры, предлагая установить транковое соединение. Если порт коммутатора сконфигурирован как dynamic auto или dynamic desirable, он примет предложение и переведёт порт в режим транка.
Последствия: атакующий получает на свой интерфейс транк. Теперь он может отправлять кадры с любым тегом VLAN и, что критично, принимать трафик со всех VLAN, которые разрешены на этом транке. Одна ошибка в конфигурации порта — и сегментация сети на этом участке исчезает.
Пример уязвимой конфигурации порта
interface GigabitEthernet0/1
switchport mode dynamic auto
Атака Double Tagging: обход изоляции в один прыжок
Это более изощрённый метод, не требующий установки транка. Он эксплуатирует особенности обработки native VLAN и рассчитан на конкретную топологию: атакующий должен быть подключён к порту доступа, который находится в той же native VLAN, что и транк между двумя коммутаторами.
Механика атаки:
- Атакующий формирует кадр с двумя тегами 802.1Q. Внешний тег соответствует native VLAN (например, VLAN 1), внутренний — целевой VLAN, к которой нужно получить доступ (например, VLAN 10).
- Коммутатор 1 получает этот кадр на порту доступа. Поскольку порт в режиме access, он ожидает нетэгированные кадры. Но коммутатор обрабатывает поступивший кадр: он видит внешний тег VLAN 1. По правилам, он удаляет этот тег и пересылает кадр дальше.
- Здесь ключевой момент: удалив внешний тег, коммутатор видит второй, внутренний тег VLAN 10. Но так как порт является портом доступа, он не должен передавать тегированные кадры. Однако если транковый порт на этом же коммутаторе использует ту же native VLAN (VLAN 1), коммутатор отправит этот теперь уже однократно тегированный кадр (с тегом VLAN 10) по транку без дополнительного тегирования, потому что для native VLAN тег не добавляется.
- Коммутатор 2 получает по транку кадр с тегом VLAN 10. Он считает его легитимным, удаляет тег и доставляет кадр в порты, принадлежащие VLAN 10.
Атака работает только в одном направлении (от атакующего к целевой VLAN), но этого часто достаточно для компрометации. Критическое условие — совпадение native VLAN на порту доступа атакующего и на межкоммутаторном транке.
Методы защиты: жёсткая настройка вместо надежды
Защита строится на устранении условий, которые делают атаки возможными. Нужно убрать любую автоматизацию там, где она не нужна, и явно указывать все параметры.
| Мера защиты | Принцип действия | Команда Cisco IOS (пример) |
|---|---|---|
| Отключение неиспользуемых портов | Исключает физическое подключение в непредназначенные точки. | interface range gi0/2-24 |
| Принудительный режим порта доступа | Порт жёстко задан как access, никаких переговоров о транке. | interface gi0/1 |
| Отказ от использования VLAN 1 | VLAN 1 по умолчанию используется для служебного тракта, её стоит сменить. | interface gi0/24 |
| Явное указание разрешённых VLAN на транках | На транк пропускается трафик только определённых VLAN. | switchport trunk allowed vlan 10,20,30 |
| Отключение DTP | Полное отключение протокола динамического согласования транков. | switchport nonegotiate (уже входит в настройку access порта) |
Создание безопасного шаблона
Настройка портов доступа должна выглядеть примерно так:
interface GigabitEthernet0/1
description User Port
switchport mode access
switchport access vlan 200
switchport nonegotiate
spanning-tree portfast
spanning-tree bpduguard enable
Здесь порт жёстко назначен в VLAN 200, запрещены переговоры DTP, включена защита от петель STP.
За пределами VLAN Hopping: комплексный подход к безопасности L2
Защита от перескока VLAN — лишь часть общей стратегии безопасности канального уровня. Даже с корректно настроенными VLAN сеть уязвима для других атак:
- ARP Spoofing / Poisoning: подмена ARP-таблиц для перехвата трафика. Лечится Dynamic ARP Inspection (DAI).
- MAC Flooding: заполнение таблицы MAC-адресов коммутатора для перевода его в режим хаба. Блокируется Port Security с ограничением числа MAC-адресов.
- STP Attacks: манипуляции протоколом Spanning Tree для изменения топологии. Парируется BPDU Guard на портах доступа.
- DHCP Spoofing: подмена DHCP-сервера для раздачи ложных настроек. Нейтрализуется DHCP Snooping.
Эти технологии должны работать вместе. Например, DHCP Snooping создаёт базу доверенных аренд, которую затем использует DAI для проверки ARP-сообщений.
Заключение
VLAN — эффективный инструмент логической сегментации, но его безопасность не дана по умолчанию. Она является результатом осознанных инженерных решений: отказ от автоматических протоколов вроде DTP, жёсткое назначение native VLAN, явное ограничение VLAN на транках. Атаки VLAN Hopping наглядно демонстрируют, что изоляция трафика на втором уровне — это вопрос корректной конфигурации каждого порта, а не магическое свойство технологии. В сетевой безопасности детали решают всё, и транковый порт, оставленный в режиме dynamic auto, может стать тем самым слабым звеном.