Функционал Port Security напрямую связан с таблицей MAC-адресов коммутатора и работает с ней. От конфигурации зависит какие MAC-адреса будут изучены и в каком количестве. Port Security защищает от атаки переполнения CAM таблицы, ведь если злоумышленник зафлудит коммутатор Ethernet-кадрами с разными Source MAC-адресами, устройство может стать источником Unknown Unicast трафика. Еще один вид атаки - подмена злоумышленником своего MAC-адреса на один из действующих MAC-адресов в CAM таблице.
Когда на порт коммутатора приходит Ethernet-кадр, он проверяет его Source MAC-адрес по таблице MAC-адресов. Если совпадение есть, то кадр будет отправлен по назначению. При использовании Port Security MAC-адрес попадает в CAM-таблицу тремя способами:
- configured - прямое указание MAC-адреса на определенном порте;
- sticky - то же, что и статическая запись, но адрес добавляется не вручную, а автоматически. Это происходит в момент подключения нового устройства;
- dynamic - изучить MAC-адрес нового устройства динамически (по умолчанию).
Важно!
Sticky и Dynamic - взаимоисключающие методы. При использовании статического метода, на Trunk и Hybrid портах необходимо также указывать VLAN ID.
В первых двух случаях адреса сохраняются в конфигурации и останутся там и после перезагрузки. Вы также можете определять допустимое количество MAC-адресов на порте (по умолчанию 1) и действие при его превышении:
- protect - не изучать новые MAC-адреса, отбрасывать пакеты и не записывать событие в Syslog;
- restrict - не изучать новые MAC-адреса, отбрасывать пакеты, посылать SNMP-трап и записывать событие в Syslog;
- shutdown - отключать интерфейс, посылать SNMP-трап и записывать событие в Syslog (по умолчанию).
Важно!
На некоторых коммутаторах требуется включить 'mac-address-learning cpu-control' - об этом вы увидите соответсвующее предупреждение:
Mac learning is not in cpu-control mode, please enable it to make port-security work well!
Настроим порт коммутатора e1/0/1 таким образом, что максимальное количество MAC-адресов будет равняться двум, а также будет создана статическая запись. Действие при превышении количества адресов - restrict:
(config)#int e1/0/1 (config-if-ethernet1/0/1)#switchport port-security (config-if-ethernet1/0/1)#switchport port-security maximum 2 (config-if-ethernet1/0/1)#switchport port-security violation protect (config-if-ethernet1/0/1)#switchport port-security mac-address f0-de-f1-19-d5-eb (config-if-ethernet1/0/1)#exit
Порт e1/0/2 будет изучать MAC-адреса методом sticky:
(config)#int e1/0/2 (config-if-ethernet1/0/2)#switchport port-security (config-if-ethernet1/0/2)#switchport port-security mac-address sticky (config-if-ethernet1/0/2)#end
Теперь взглянем на таблицу MAC-адресов:
Vlan Mac Address Type Creator Ports ---- --------------------------- ------- ------------------------------------- 1 f0-de-f1-19-d5-eb SECUREC PSecure Ethernet1/0/1 1 f8-f0-82-75-cd-41 STATIC System CPU
Она уже содержит в себе запись запись типа 'SECUREC'. Все возможные значения:
- SECUREC - статическая запись;
- SECURES - статическая запись методом Sticky;
- SECURED - динамическая запись.
Начнем последовательно подключать к коммутатору за портом e1/0/1 сетевые устройства. После превышения порога разрешенного количества получаем запись в логе:
%Jan 01 02:30:30:637 2006 Port-security has reached the threshold on Interface Ethernet1/0/1 and violation mode is restrict, the current unkown source mac addr is d8-c4-97-c0-c7-52, vlan id 1!
С этого момента MAC-адреса новых устройств не изучаются за портом e1/0/1. Посмотрим на таблицу адресов Port Security:
#sh port-security address Secure Mac Address Table ------------------------------------------------------------------------------------- Vlan Mac Address Type Ports 1 f0-de-f1-19-d5-eb SECUREC Ethernet1/0/1 1 38-63-bb-71-d3-00 SECURED Ethernet1/0/1 1 b8-27-eb-ea-05-e1 SECURED Ethernet1/0/1 Total Addresses:3
Только две динамические записи, хотя подключено большее количество устройств.
Теперь начнем последовательно подключать сетевые устройства за портом e1/0/2 и после превышения максимального количества получаем:
%Jan 01 02:34:27:024 2006 Port-security has reached the threshold on Interface Ethernet1/0/2, unkown source mac addr b8-27-eb-ea-05-e1, vlan id 1 and violation mode is shutdown, so shutdown it! %Jan 01 02:34:27:050 2006 %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet1/0/2, changed state to DOWN %Jan 01 02:34:27:055 2006 %LINK-5-CHANGED: Interface Ethernet1/0/2, changed state to administratively DOWN %Jan 01 02:34:28:059 2006 %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan1,changed state to DOWN
Порт отключился. Напомним, что именно действие 'shutdown' срабатывает по умолчанию, а максимальное количество - один MAC-адрес. Взглянем на таблицу адресов Port Security снова:
#sh port-security address Secure Mac Address Table ------------------------------------------------------------------------------------- Vlan Mac Address Type Ports 1 f0-de-f1-19-d5-eb SECUREC Ethernet1/0/1 1 38-63-bb-71-d3-00 SECURED Ethernet1/0/1 1 b8-27-eb-ea-05-e1 SECURED Ethernet1/0/1 1 38-63-bb-19-de-71 SECURES Ethernet1/0/2 Total Addresses:4
Посмотрим на конфигурацию порта 1/0/2 в стартовой конфигурации:
#sh run int e1/0/2 ! Interface Ethernet1/0/2 switchport port-security switchport port-security mac-address sticky switchport port-security mac-address sticky 38-63-bb-71-d3-00 !
Как видно, адрес изученный методом 'sticky' попал в running-config. Вы также можете посмотреть информацию о количестве срабатываний действия 'violation':
#sh port-security int e1/0/2 Violation mode : Shutdown Maximum MAC Addresses : 1 Configured MAC Addresses : 0 Security Violation count : 1
Очистить таблицу Port Security можно командой:
clear port-security all
Возможные значения:
- all - все записи;
- configured - статические;
- dynamic - динамические;
- sticky - записи sticky.