Защита протокола STP
В этой статье покажем практический пример защиты протокола STP на основе ранее описанного примера атаки.
Last updated
В этой статье покажем практический пример защиты протокола STP на основе ранее описанного примера атаки.
Last updated
Советуем сначала прочитать материал «Атака на протокол STP»: в нём чуть побольше теории. Теперь к защите. Протокол STP включает функции, которые не допускают добавление новых устройств в сеть в роли корневого моста, а также блокирует порты, получающие BPDU или активирует полное блокирование BPDU. На всякий напомним. BPDU — тип сетевых сообщений, который используется в протоколе STP. Коммутаторы обмениваются BPDU для определения приоритета каждого устройства и выбора корневого коммутатора. Проще говоря: c этими сообщениями STP понимает самый эффективный путь для данных.
Если устройство в сети получит сообщение о том, что где-то есть более предпочтительный путь для передачи данных (т.е. более лучший BPDU), чем тот, который оно использует сейчас (т.е. нынешний BPDU), этот порт устройства перейдёт в специальный защитный режим — root-inconsistent. В этом режиме порт не будет отправлять и принимать данные, чтобы предотвратить возможные проблемы в сети. Здесь мы используем пример топологии сети из прошлого материала. Вот ссылка. А это та самая схема топологии.
Вот что будет с нашими портами:
SW2(config)#interface ethernet 0/2
SW2(config-if)#spanning-tree guard root
А вот состояние порта при получении BPDU:
*Aug 1 13:58:03.304: %SPANTREE-2-ROOTGUARD_CONFIG_CHANGE: Root guard enabled on port Ethernet0/2.
SW2#show spanning-tree interface ethernet 0/2
Vlan Role Sts Cost Prio.Nbr Type
VLAN0001 Desg BKN*100 128.3 Shr *ROOT_Inc
Проще говоря, при использовании Root guard атака с помощью фреймворка, который мы разбирали будет недоступна.
Функция, которая позволяет ограничивать домен L2. При получении любого BPDU порт переводится в состояние err disable BPDU guard error.
SW2(config)#interface ethernet 0/2
SW2(config-if)#spanning-tree bpduguard enable
Вот что будет после получения BDPU на порте с функцией BPDU guard:
*Aug 1 15:12:50.120: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port Et0/2 with BPDU Guard enabled. Disabling port.SW2#
*Aug 1 15:12:50.120: %PM-4-ERR_DISABLE: bpduguard error detected on Et0/2, putting Et0/2 in err-disable state
*Aug 1 15:12:51.120: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/2, changed state to down
*Aug 1 15:12:52.120: %LINK-3-UPDOWN: Interface Ethernet0/2, changed state to downSW2#show interfaces ethernet 0/2
Ethernet0/2 is down, line protocol is down (err-disabled)
Это функция позволяет не отправлять и не получать BPDU на порте, то есть вырубать на интерфейсе STP. Вот код:
SW2(config-if)#spanning-tree bpdufilter enable