Как сделать нашу сеть безопаснее? Можно отключить неиспользуемые порты. Этот вариант кажется весьма безопасным, но с другой стороны, мало, что дает для защиты сети, так как рядом с отключенным портом, соседний все равно остается в рабочем состоянии.
Для решения этой проблемы существует Port Security. Данная технология позволяет предотвратить несанкционированный доступ к нашей сети, анализируя MAC адреса устройств.
Каждый коммутатор имеет таблицу MAC адресов, в которой указано к какому порту подключено устройство с определенным MAC адресом.
S#sh mac address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 0050.7966.680c DYNAMIC Et0/0
1 0050.7966.680d DYNAMIC Et0/1
Total Mac Addresses for this criterion: 2
Схема простая — один коммутатор L2 и 3 ПК.
Настроим на e0/0 Port Security, ограничив максимальное количество MAC адресов до 1.
S#conf t
S(config)#int e0/0
S(config-if)#switchport mode access
S(config-if)#switchport port-security maximum 1
Теперь включим Port Security
S(config-if)#switchport port-security
Проверим
S#show port-security
Secure Port MaxSecureAddr CurrentAddr SecurityViolation Security Action
(Count) (Count) (Count)
---------------------------------------------------------------------------
Et0/0 1 1 0 Shutdown
---------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port) : 0
Max Addresses limit in System (excluding one mac per port) : 4096
Как видим, коммутатор обнаружил MAC адрес PC подключенного к порту и занес его в список.
В Port Security существует два режима нарушения:
- отключение
- ограничение
Отключение как следует из названия при появлении на интерфейсе неавторизованного MAC адреса просто отключает порт. Этот режим используется по умолчанию
Ограничение является более гибким и предпочтительным вариантом. Порт остается включенным, но через него запрещается передача пакетов для неавторизованных MAC адресов.
Чтобы задать режим ограничения, введите команду
switchport port-security violation restrict
Если вы сейчас выполните
S#show port-security
Secure Port MaxSecureAddr CurrentAddr SecurityViolation Security Action
(Count) (Count) (Count)
---------------------------------------------------------------------------
Et0/0 1 1 0 Restrict
---------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port) : 0
Max Addresses limit in System (excluding one mac per port) : 4096
В графе Security Action мы увидим изменения с Shutdown на Restrict.
Давайте проверим и подключим в e0/0 другой ПК.
*Feb 10 16:34:57.225: %PORT_SECURITY-2-PSECURE_VIOLATION: Security violation occurred, caused by MAC address 0050.7966.680e on port Ethernet0/0.
S#show port-security
Secure Port MaxSecureAddr CurrentAddr SecurityViolation Security Action
(Count) (Count) (Count)
---------------------------------------------------------------------------
Et0/0 1 1 3 Restrict
---------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port) : 0
Max Addresses limit in System (excluding one mac per port) : 4096
Как видите коммутатор отреагировал, счетчик увеличился, порт остался включенным, но неавторизованный PC не смог взаимодействовать с нашей сетью.
В Port Security мы можем задать время, через которое коммутатор “забудет” зафиксированные MAC адреса.
Если сейчас мы выполним
S#sh port-security interface e0/0
Port Security : Enabled
Port Status : Secure-up
Violation Mode : Restrict
Aging Time : 0 mins
Aging Type : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses : 1
Total MAC Addresses : 1
Configured MAC Addresses : 0
Sticky MAC Addresses : 0
Last Source Address:Vlan : 0050.7966.680e:1
Security Violation Count : 3
Мы увидим, что Aging Time : 0 mins не задан.
Давайте установим 1 минуту
S(config)#int e0/0
S(config-if)#switchport port-security aging time 1
Проверим
S#sh port-security interface e0/0
*Feb 10 16:39:20.942: %SYS-5-CONFIG_I: Configured from console by console
S#sh port-security interface e0/0
S#sh port-security interface e0/0
Port Security : Enabled
Port Status : Secure-up
Violation Mode : Restrict
Aging Time : 1 mins
S#sh port-security address
Secure Mac Address Table
-----------------------------------------------------------------------------
Vlan Mac Address Type Ports Remaining Age
(mins)
---- ----------- ---- ----- -------------
1 0050.7966.680c SecureDynamic Et0/0 < 1
-----------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port) : 0
Max Addresses limit in System (excluding one mac per port) : 4096
Подождем минуту и проверим снова
S#sh port-security address
Secure Mac Address Table
-----------------------------------------------------------------------------
Vlan Mac Address Type Ports Remaining Age
(mins)
---- ----------- ---- ----- -------------
-----------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port) : 0
Max Addresses limit in System (excluding one mac per port) : 4096
Таблица стала пустой
Сделаем пинг с ранее подключенного PC
S#sh port-security address
Secure Mac Address Table
-----------------------------------------------------------------------------
Vlan Mac Address Type Ports Remaining Age
(mins)
---- ----------- ---- ----- -------------
1 0050.7966.680e SecureDynamic Et0/0 1
-----------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port) : 0
Max Addresses limit in System (excluding one mac per port) : 4096
Видим, что MAC адрес изменился, пинг до соседнего ПК проходит.
Теперь запретим подключение неавторизованных устройств.
В Port Security есть такое понятие — sticky mac-address.
Допустим, мы точно знаем, что компьютеры за конкретным коммутатором являются стационарными и постоянно подключены к конкретным портам. Сделаем так, чтобы на интерфейсе e0/0 можно было подключаться только с одного определенного MAC адреса
S(config)#int e0/0
S(config-if)#switchport port-security mac-address sticky
Проверим
S#show running-config interface e0/0
Building configuration...
Current configuration : 268 bytes
!
interface Ethernet0/0
switchport mode access
switchport port-security violation restrict
switchport port-security mac-address sticky
switchport port-security mac-address sticky 0050.7966.680e
switchport port-security aging time 1
switchport port-security
end
S#sh port-security address
Secure Mac Address Table
-----------------------------------------------------------------------------
Vlan Mac Address Type Ports Remaining Age
(mins)
---- ----------- ---- ----- -------------
1 0050.7966.680e SecureSticky Et0/0 -
-----------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port) : 0
Max Addresses limit in System (excluding one mac per port) : 4096
Видим, что коммутатор закрепил данный MAC адрес за портом e0/0. Функция aging time удобна, если у вас стоит задача настроить много новых компьютеров, а на вашем коммутаторе свободен только один порт, вы подключили к нему, допустим, неуправляемый 5 портовый, увеличили количество разрешенных MAC адресов до 5, затем подождали и подключили новые 5 ПК, но с точки зрения безопасности корпоративной сети — sticky mac-address является более безопасным вариантом. Например в SecureSticky отсутствует понятие Remaining Age.
Допустим, нам нужно перенести компьютер подключенный в e0/0 в другое помещение, а сюда подключить новый. Если мы сделаем это сейчас мы увидим
S#
*Feb 10 16:57:34.041: %PORT_SECURITY-2-PSECURE_VIOLATION: Security violation occurred, caused by MAC address 0050.7966.680c on port Ethernet0/0.
Несмотря на то, что Port Security сработал, стоит отметить, что злоумышленник смог бы в теории подделать MAC адрес с авторизованного ПК и клонировать его. С другой стороны это потребует определенного времени и мы уже получили, хотя бы какую-то защиту. Иными словами — лучше чем было.
Чтобы заменить устройство, нам нужно отключить ПК и удалить старый MAC адрес
S(config)#int e0/0
S(config-if)#no switchport port-security mac-address sticky 0050.7966.680e
Теперь подключим новый ПК, подождем и проверим
S#sh port-security address
Secure Mac Address Table
-----------------------------------------------------------------------------
Vlan Mac Address Type Ports Remaining Age
(mins)
---- ----------- ---- ----- -------------
1 0050.7966.680c SecureSticky Et0/0 -
-----------------------------------------------------------------------------
Total Addresses in System (excluding one mac per port) : 0
Max Addresses limit in System (excluding one mac per port) : 4096
Как видим Port Security автоматический добавил MAC адрес нового ПК.
Наша сеть стала немного безопаснее.