# Защита протокола STP

Советуем сначала прочитать материал «[Атака на протокол STP](https://notes.kraken-security.ru/kraken/krupicy-znanii/uyazvimosti/ataka-na-protokol-stp)»: в нём чуть побольше теории. Теперь к защите.\
\
Протокол STP включает функции, которые не допускают добавление новых устройств в сеть в роли корневого моста, а также блокирует порты, получающие BPDU или активирует полное блокирование BPDU.\
\
\&#xNAN;*На всякий напомним. BPDU — тип сетевых сообщений, который используется в протоколе STP. Коммутаторы обмениваются BPDU для определения приоритета каждого устройства и выбора корневого коммутатора. Проще говоря: c этими сообщениями STP понимает самый эффективный путь для данных.*&#x20;

#### Root guard

Если устройство в сети получит сообщение о том, что где-то есть более предпочтительный путь для передачи данных (т.е. более лучший BPDU), чем тот, который оно использует сейчас (т.е. нынешний BPDU), этот порт устройства перейдёт в специальный защитный режим — root-inconsistent.\
\
В этом режиме порт не будет отправлять и принимать данные, чтобы предотвратить возможные проблемы в сети.\
\
Здесь мы используем пример топологии сети из прошлого материала. Вот [ссылка](https://notes.kraken-security.ru/kraken/krupicy-znanii/uyazvimosti/ataka-na-protokol-stp). А это та самая схема топологии.&#x20;

<figure><img src="https://676766212-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBR6dozMpxuaoEOVvH1vR%2Fuploads%2Fd2UEwzMDHHsrAUzY150c%2Fimage.png?alt=media&#x26;token=c23b3364-9105-48ce-9d17-fd518425665e" alt=""><figcaption></figcaption></figure>

Вот что будет с нашими портами: \
\
`SW2(config)#interface ethernet 0/2` \
`SW2(config-if)#spanning-tree guard root`&#x20;

А вот состояние порта при получении 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 ата­ка с помощью фрей­мвор­ка, который [мы разбирали](https://notes.kraken-security.ru/kraken/krupicy-znanii/uyazvimosti/ataka-na-protokol-stp) будет недос­тупна.

#### BPDU 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 filter

Это функция позволяет не отправлять и не получать BPDU на пор­те, то есть вырубать на интерфейсе STP. Вот код: \
\
`SW2(config-if)#spanning-tree bpdufilter enable`

<br>
