Logo
  • ГЛАВНАЯ
  • ОБО МНЕ
  • СЕРТИФИКАТЫ
nocip.ssh@mail.ru
Главная  >  Cisco Switching

Настройка режима PortFast и функции BPDU Guard


Создана 18.03.2025
Отредактирована 06.05.2025

Режим PortFast и STP

Режим PortFast позволяет коммутатору немедленно переходить из состояния блокировки в состояние перенаправления (см. рис. 1), в обход состояний прослушивания и самообучения. Однако единственные порты, на которых можно безопасно включить режим PortFast - это порты, к которым гарантированно не подключены никакие мосты, коммутаторы или другие устройства STP. В противном случае режим PortFast способен создавать петли, во избежание которых предназначены состояния прослушивания и самообучения.
Рис. 1. Режим PortFast, переход из состояния блокировки в состояние перенаправления
Режим PortFast лучше всего подходит для соединений с устройствами конечного пользователя (рис. 2). Если включить режим PortFast на портах, соединённых с устройствами конечного пользователя, при включении компьютера конечного пользователя порт коммутатора может перейти в состояние перенаправления STP и начать перенаправлять трафик, как только сетевая плата компьютера станет активной. Без режима PortFast каждый порт вынужден ждать, пока коммутатор подтвердить роль выделенного порта (DP), а затем подождёт, пока интерфейс находится в промежуточных состояниях прослушивания и самообучения, прежде чем перейти в состояние перенаправления.
Рис. 2. Рекомендация по настройке PortFast на портах
Для начала посмотрим как меняются состояния интерфейса Fa0/13 sw3

sw3#show interfaces fastEthernet 0/13 status Port Name Status Vlan Duplex Speed Type Fa0/13 Attacker connected 10 a-full a-100 10/100BaseTX

sw3#show spanning-tree vlan 10 | include Fa0/13 Fa0/13 Desg FWD 19 128.13 P2p

Видим, что порт в статусе connected (административно включён и порт подключён к устройству), также порт находится в состоянии перенаправления (FWD). Сейчас отключим порт административно, а потом включим его.

sw3#debug spanning-tree events

sw3(config)#interface fastEthernet 0/13 sw3(config-if)#shutdown sw3(config-if)# *Mar 1 00:33:08.452: STP: VLAN0010 sent Topology Change Notice on Gi0/2 *Mar 1 00:33:08.452: STP[10]: Generating TC trap for port FastEthernet0/13 *Mar 1 00:33:10.457: %LINK-5-CHANGED: Interface FastEthernet0/13, changed state to administratively down *Mar 1 00:33:11.463: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/13, changed state to down sw3(config-if)#

sw3(config-if)#no shutdown sw3(config-if)# *Mar 1 00:33:27.108: set portid: VLAN0010 Fa0/13: new port id 800D *Mar 1 00:33:27.108: STP: VLAN0010 Fa0/13 -> listening *Mar 1 00:33:27.427: %LINK-3-UPDOWN: Interface FastEthernet0/13, changed state to up *Mar 1 00:33:28.434: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/13, changed state to up *Mar 1 00:33:42.115: STP: VLAN0010 Fa0/13 -> learning *Mar 1 00:33:57.123: STP[10]: Generating TC trap for port FastEthernet0/13 *Mar 1 00:33:57.123: STP: VLAN0010 sent Topology Change Notice on Gi0/2 *Mar 1 00:33:57.123: STP: VLAN0010 Fa0/13 -> forwarding sw3(config-if)#

Видим, что порт проходит все состояния, хотя состояние блокировки не отображено, так как порт административно отключён. А таже посмотрите на время между состояниями, оно состовляет до 15 секунд

Обратите внимание, что полный период перехода между состояниями обычно занимает от 30 до 50 секунд. В это время не передаются пользовательские данные. Некоторые пользовательские приложения могут завершить работу в течение этого периода. Чтобы обеспечить немедленный переход порта в режим перенаправления (forwarding), включите режим STP PortFast.

Настроим режим PortFast на всех портах доступа.

sw3#configure terminal Enter configuration commands, one per line. End with CNTL/Z. sw3(config)#interface range FastEthernet 0/1-48 sw3(config-if-range)#spanning-tree portfast ? disable Disable portfast for this interface trunk Enable portfast on the interface even in trunk mode sw3(config-if-range)#spanning-tree portfast trunk %Warning: portfast should only be enabled on ports connected to a single host. Connecting hubs, concentrators, switches, bridges, etc... to this interface when portfast is enabled, can cause temporary bridging loops. Use with CAUTION sw3(config-if-range)exit sw3(config)#

При такой настройке PortFast будет работать как в режиме access, так и в режиме trunk.

Административано отключим/включим порт Fa0/13

sw3(config)#interface fastEthernet 0/13 sw3(config-if)#shutdown sw3(config-if)# *Mar 1 00:55:43.740: %LINK-5-CHANGED: Interface FastEthernet0/13, changed state to administratively down *Mar 1 00:55:44.747: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/13, changed state to down

sw3(config-if)#no shutdown sw3(config-if)# *Mar 1 00:58:21.312: set portid: VLAN0010 Fa0/13: new port id 800D *Mar 1 00:58:21.312: STP: VLAN0010 Fa0/13 ->jump to forwarding from blocking *Mar 1 00:58:21.648: %LINK-3-UPDOWN: Interface FastEthernet0/13, changed state to up *Mar 1 00:58:22.654: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/13, changed state to up sw3(config-if)#

В режиме PortFast порт переходит из состояния блокировки в состояние перенаправления за доли миллисекунд.

Функция BPDU Guard и STP

Функция Cisco BPDU Guard позволяет предотвратить проблемы с режимом PortFast, реагируя на сообщения BPDU. Режим PortFast должен быть разрешён только на тех портах доступа к сети, которые соединены с пользовательскими устройствами, но не с другими коммутаторами LAN. Использование службы BPDU Guard на тех же портах доступа имеет смысл, поскольку при подключении к такому порту другого коммутатора (например, злоумышлениик использует фреймворк Yersinia для выполнения атаки, его PC выступает в роли коммутатора), локальный коммутатор sw3 может отключить порт прежде, чем образуется петля.
Чтобы настроить интерфейс, используйте подкоманду интерфейса spanning-tree bpduguard enable. В примере 1 представлен процесс разрешения функции на интерфейсе Fa0/13 коммутатора sw3.
Посмотрим настройки порта до атаки и до введения команды spanning-tree bpduguard enable,  а также роли портов изображённых на рис. 3

sw3#show running-config interface fastEthernet 0/13 Building configuration... Current configuration : 212 bytes ! interface FastEthernet0/13 description Attacker switchport access vlan 10 switchport mode access switchport nonegotiate no lldp receive spanning-tree portfast trunk end

Рис. 3. Роли интерфейсов до атаки
Рис. 4. Сетевой анализатор wireshark на стороне злоумышленика до атаки
На рис. 4 видим, что злоумышленник получает STP BPDU, в этом кадре, указаны RID 32778-a40c.c392.1180 коммутатора sw1 и BID 32778-a40c.c392.1900 коммутатора sw3
Рис. 5. Злоумышленник начинает атаку
На рис. 5 злоумышленник начинает атаку, на коммутаторах изменились роли интерфейсов, сетевой анализатор фиксирует кадры от PC1, обратите внимание на рис. 6 столбцы Source и Info, на белом фоне кадры, генерируемые от PC1. Каждый раз в строке разный MAC-адрес, приоритет и VLAN ID, лишь корневая стоимость равна 0 (Cost = 0). В таблице 1 представлены первые три строки во время атаки.
Таблица 1. 
Source
Info
Расшифровка
6f:e6:de:4b:7d:5a
Conf. TC + Root = 4096/3465/6f:e6:de:4b:7d:5a  Cost = 0   Port = 0x8002
Приоритет 4096, VLAN ID 3465, MAC 6f:e6:de:4b:7d:5a
b0:85:0d:50:b1:5a
Conf. TC + Root = 8192/1511/b0:85:0d:50:b1:5a   Cost = 0   Port = 0x8002

db:39:43:04:a5:46
Conf. TC + Root = 4096/634/db:39:43:04:a5:46   Cost = 0   Port = 0x8002

Рис. 6. Сетевой анализатор wireshark на стороне злоумышленика
Приблизительно за 35 секунд было передано 2 595 772 STP BPDU. В данном случае PC злоумышленника взяло на себя функцию корневого моста и влияет на активную топологию STP. Эта простая форма атаки типа «отказ в обслуживании» (DoS), постоянно изменяющий приоритет моста (то низкое значение, то высокое) приводит к постоянному перерасчёту STP.
Для того чтобы сохранить предсказуемую топологию STP, на всех портах доступа в режиме PortFast нужно настроить функцию BPDU Guard. При получении BPDU, сработает защита и порт перейдёт в состояние errdisable.

Пример 1. Настройка функции BPDU Guard на всех портах доступа


sw3#configure terminal Enter configuration commands, one per line. End with CNTL/Z sw3(config)#interface range FastEthernet 0/1-48 sw3(config-if-range)#spanning-tree bpduguard ? disable Disable BPDU guard for this interface enable Enable BPDU guard for this interface sw3(config-if-range)#spanning-tree bpduguard enable sw3(config-if-range)#end sw3# sw3#copy running-config startup-config Destination filename [startup-config]? Building configuration... [OK]

sw3#show running-config interface fastEthernet 0/13 Building configuration... Current configuration : 212 bytes ! interface FastEthernet0/13 description Attacker switchport access vlan 10 switchport mode access switchport nonegotiate no lldp receive spanning-tree portfast trunk spanning-tree bpduguard enable end

sw3#show spanning-tree interface fastEthernet 0/13 portfast VLAN0010 enabled


Команда show running-config interface fastEthernet 0/13 просто подтверждает, что коммутатор записал две команды конфигурации, а также отображает всю конфигурацию данного интерфейса. 
Команда show spanning-tree interface fastEthernet 0/13 portfast выводит состояние интерфейса PortFast (если режим PortFast включён и интерфейс работает, состояние отображается как просто разрешённое).
Посмотрим, что произойдёт с портом, когда злоумышленник снова начнёт атаку. Функция BPDU Guard переводит порт в состояние errdisable (примерно было передано 1610 кадров STP BPDU за миллисекунду и защита сработала), и на консоли появляется сообщение. Ниже пример такого сообщения.

sw3# *Mar 1 00:05:38.639: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port Fa0/13 with BPDU Guard enabled. Disabling port. *Mar 1 00:05:38.639: %PM-4-ERR_DISABLE: bpduguard error detected on Fa0/13, putting Fa0/13 in err-disable state *Mar 1 00:05:39.654: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/13, changed state to down *Mar 1 00:05:40.652: %LINK-3-UPDOWN: Interface FastEthernet0/13, changed state to down

sw3#show interfaces status | include Fa0/13 Fa0/13 Attacker err-disabled 10 auto auto 10/100BaseTX

sw3#show logging | begin BLOCK *Mar 1 00:05:38.639: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port Fa0/13 with BPDU Guard enabled. Disabling port. *Mar 1 00:05:38.639: %PM-4-ERR_DISABLE: bpduguard error detected on Fa0/13, putting Fa0/13 in err-disable state *Mar 1 00:05:39.654: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/13, changed state to down *Mar 1 00:05:40.652: %LINK-3-UPDOWN: Interface FastEthernet0/13, changed state to down

Когда защита STP BPDU отключает порт, он остаётся в отключенном состоянии до тех пор, пока не будет включён вручную.

sw3#configure terminal Enter configuration commands, one per line. End with CNTL/Z sw3(config)#interface FastEthernet 0/13 sw3(config-if)#no shutdown

Вы можете настроить порт на автоматическое повторное включение из состояния err-disable , если порт переходит в это состояние из-за срабатывания функции  BPDU Guard.

Примечание: интервал ожидания по умолчанию составляет 300 секунд, и по умолчанию функция timeout отключена.

sw3(config)#errdisable recovery cause bpduguard sw3(config)#errdisable recovery interval ? <30-86400> timer-interval(sec) sw3(config)#errdisable recovery interval 60

Атакующий начинает снова атаку, и статус порта Fa0/13 переходит в err-disabled, но через 60 секунд, снова переходит в connected

sw3#show interfaces status | include Fa0/13 Fa0/13 Attacker err-disabled 10 auto auto 10/100BaseTX

sw3# *Mar 1 00:53:35.068: %PM-4-ERR_RECOVER: Attempting to recover from bpduguard err-disable state on Fa0/13 *Mar 1 00:53:38.725: %LINK-3-UPDOWN: Interface FastEthernet0/13, changed state to up *Mar 1 00:53:39.732: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/13, changed state to up sw3# sw3#show inter fastEthernet 0/13 status Port Name Status Vlan Duplex Speed Type Fa0/13 Attacker connected 10 a-full a-100 10/100BaseTX

Но при такой настройке портов доступа, злоумышленник сканирует трафик на порту Fa0/13, лучше заменить функцию BPDU Guard на BPDU Filter. У атакующего не будет возможности получать кадры STP BPDU.

Запустим анализатор трафика на стороне атакующего, и посмотрим какой трафик он фиксирует, видим в столбце Protocol - STP и CDP, про протокол CDP можно ознакомиться здесь. Также можно ввести команду ниже и посмотреть количество отправленных с порта (sent 140) и полученных  в порт (received 0) BPDU.

sw3#show spanning-tree detail | section Port 13 Port 13 (FastEthernet0/13) of VLAN0010 is designated forwarding Port path cost 19, Port priority 128, Port Identifier 128.13. Designated root has priority 32778, address a40c.c392.1180 Designated bridge has priority 32778, address a40c.c392.1900 Designated port id is 128.13, designated path cost 4 Timers: message age 0, forward delay 0, hold 0 Number of transitions to forwarding state: 1 The port is in the portfast mode by portfast trunk configuration Link type is point-to-point by default Bpdu guard is enabled BPDU: sent 140, received 0

Рис. 7. Сетевой анализатор wireshark на стороне злоумышленика фиксирует трафик STP и CDP
Удалим команды выше и добавим новые, после этого включим на стороне атакующего анализатор снова и выполним атаку, чтобы посмотреть статус порта и что фиксирует анализатор.

sw3(config)#no errdisable recovery cause bpduguard sw3(config)#no errdisable recovery interval 60 sw3(config)#interface range FastEthernet 0/1-48 sw3(config-if-range)#no spanning-tree bpduguard enable sw3(config-if-range)#spanning-tree bpdufilter enable sw3(config-if-range)#no cdp enable sw3(config-if-range)#end sw3# sw3#copy running-config startup-config Destination filename [startup-config]? Building configuration... [OK]

Обнулите счётчик BPDU на порту Fa0/13 командой clear spanning-tree counters interface FastEthernet 0/13 , как видим значение обнулилось, а также добавлен фильтр BPDU.

sw3#clear spanning-tree counters interface FastEthernet 0/13 sw3# sw3#show spanning-tree detail | section Port 13 Port 13 (FastEthernet0/13) of VLAN0010 is designated forwarding Port path cost 19, Port priority 128, Port Identifier 128.13. Designated root has priority 32778, address a40c.c392.1180 Designated bridge has priority 32778, address a40c.c392.1900 Designated port id is 128.13, designated path cost 4 Timers: message age 0, forward delay 0, hold 0 Number of transitions to forwarding state: 1 The port is in the portfast mode by portfast trunk configuration Link type is point-to-point by default Bpdu filter is enabled BPDU: sent 0, received 0

Wireshark перестал фиксировать трафик STP и CDP, они не передаются в его сторону, так как команда spanning-tree bpdufilter enable не пропускает BPDU, а кадры CDP отменены на этом порту. У злоумышленника сузилась возможность для анализа трафика.
Рис. 8. Сетевой анализатор wireshark на стороне злоумышленика не фиксирует трафик STP и CDP
Запустим снова атаку, видим что wireshark фиксирует со стороны злоумышленника BPDU, но порт Fa0/13 их фильтрует, и не пропускает, порт остаётся в работоспостобном состоянии, счётчики по нулям.
Рис. 9. Сетевой анализатор wireshark на стороне злоумышленика генерирует большое количество BPDU

sw3#show spanning-tree detail | section Port 13 Port 13 (FastEthernet0/13) of VLAN0010 is designated forwarding Port path cost 19, Port priority 128, Port Identifier 128.13. Designated root has priority 32778, address a40c.c392.1180 Designated bridge has priority 32778, address a40c.c392.1900 Designated port id is 128.13, designated path cost 4 Timers: message age 0, forward delay 0, hold 0 Number of transitions to forwarding state: 1 The port is in the portfast mode by portfast trunk configuration Link type is point-to-point by default Bpdu filter is enabled BPDU: sent 0, received 0

sw3#show interfaces fastEthernet 0/13 status Port Name Status Vlan Duplex Speed Type Fa0/13 Attacker connected 10 a-full a-100 10/100BaseTX

В конечном итоге, для предотвращения атак на STP, настройки на всех портах доступа, должны быть как на порту Fa0/13

sw3#show running-config interface FastEthernet 0/13 Building configuration... Current configuration : 226 bytes ! interface FastEthernet0/13 description Attacker switchport access vlan 10 switchport mode access switchport nonegotiate no lldp receive no cdp enable spanning-tree portfast trunk spanning-tree bpdufilter enable end

В данном примере были использованы коммутаторы Cisco Catalyst серии 2960, и прошивкой:
c2960-lanlitek9-mz.150-2.SE5.bin

«-«-«- Назад
Вперед -»-»-»
Реализация протокола STP
Функция Root Guard и STP

🔁

RetraR — Компьютерные игры для Nintendo Game Boy
Приветствуем всех любителей ретро-игровой индустрии на канале RetraR
RetraR - Computer games for Nintendo Game Boy 🌌🛸👽👾☄️🤖
RetraR - 任天堂ゲームボーイ用コンピュータゲーム 🎮🕹️👾

RetraR
RetraR
Канал ретро компьютерных игр

Оформить заказ

Нажимая на кнопку, вы даете согласие на обработку персональных данных

Спасибо за заказ

Ваш заказ принят в обработку. 

Мы свяжемся с вами в ближайшее время.