Материал просмотрен 6,787 раз(а)

Начну с некоторого количества скучной теории. PortSecurity – функция коммутатора, позволяющая указать MAC-адреса устройств, которым позволено передавать данные через порт.
Используется для предотвращения:

  • несанкционированной смены MAC-адреса сетевого устройства или подключения к сети;
  • атак направленных на переполнение таблицы коммутации.

Настроив эту функцию, мы можем быть спокойны, что злоумышленник не выдернет патч-корд из розетки и подключится к нашей сети со своим ноутбуком. Коммутатор запретит ему передавать данные через свой порт. Сейчас мы попробуем разобраться, что это за функция и как её настроить.

MAC-адреса в коммутаторах

К сожалению, придётся мне перемежать практические наработки с теоретическими выкладками, но это сделано для того, чтобы у вас сложилось более чёткое понимание работы коммутатора. Приступим.

Коммутаторы поддерживают 3 типа разрешенных MAC-адресов:

  1. STATIC – статические. Задаются вручную, хранятся в конфигурации.
  2. DYNAMIC – динамические. Выучиваются во время работы коммутатора, стираются при перезагрузке.
  3. STICKY – коммутатор сам заучивает такие адреса и сохраняет в конфигурацию. После перезагрузки не стираются.

Все адреса сохраняются в таблицу MAC-адресов и могут быть просмотрены командной

#show mac-address-table [interface <интерфейс>]

Так, что у нас дальше? Ага. Режимы реагирования на нарушения безопасности. Что такое «нарушение безопасности»? Вообще, рассматриваются 2 ситуации:

  1. максимальное количество безопасных MAC-адресов было добавлено в таблицу адресов и хост, чей MAC-адрес не записан в таблице адресов пытается получить доступ через интерфейс;
  2. адрес, выученный или настроенный как безопасный на одном интерфейсе, появился на другом безопасном интерфейсе в том же VLAN’е.

Чаще всего, конечно, возникает первая ситуация, т.е. неправомерный доступ к сети.

Реагирование на нарушение безопасности

Итак, три режима реагирования:

    • protect — когда количество безопасных MAC-адресов достигает максимального ограничения настроенного на порту, пакеты с неизвестным MAC-адресом отправителя отбрасываются до тех пор, пока не будет удалено достаточное количество безопасных MAC-адресов, чтобы их количество было меньше максимального значения, или увеличено максимальное количество разрешенных адресов. Оповещения о нарушении безопасности нет.
    • restrict — когда количество безопасных MAC-адресов достигает максимального ограничения настроенного на порту, пакеты с неизвестным MAC-адресом отправителя отбрасываются до тех пор, пока не будет удалено достаточное количество безопасных MAC-адресов, чтобы их количество было меньше максимального значения, или увеличено максимальное количество разрешенных адресов. В этом режиме при нарушении безопасности отправляется оповещение — отправляется SNMP trap, сообщение syslog и увеличивается счетчик нарушений (violation counter).
    • shutdown — нарушение безопасности приводит к тому, что интерфейс переводится в состояние error-disabled и выключается немедленно, и выключается LED порта. Отправляется SNMP trap, сообщение syslog и увеличивается счетчик нарушений (violation counter). Когда порт в состоянии error-disabled, вывести из этого состояния его можно введя команду errdisable recovery cause psecure-violation или вручную включить интерфейс введя в режиме настройки интерфейса shutdown и no shutdown.

По-умолчанию на всех портах включен режим shutdown.

Проверка на эмуляторе Cisco Packet Tracer

Ссылку на скачивание CPT можно найти в нашем файловом хранилище.

Ну что, рассмотрим ситуацию?

Входим в IOS коммутатора:

Switch>en
Switch#conf t
Switch(config)#interface fastethernet0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport port-security
Switch(config-if)#switchport port-security maximum 3
Switch(config-if)#exit
Switch(config)#exit
Switch#write m

Убедимася, что Switch #sh run

Показывает

interface FastEthernet0/1
switchport mode access
switchport port-security
switchport port-security maximum 3

Настроили port-security. Проверяем таблицу MAC-адресов:

Switch#show mac-address-table interfaces fastEthernet 0/1
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----

Ну правильно! Пусто. Откуда там взяться записям? Пингуем с одного хоста другой.

PC>ping 10.0.0.2

Pinging 10.0.0.2 with 32 bytes of data:

Reply from 10.0.0.2: bytes=32 time=20ms TTL=128
Reply from 10.0.0.2: bytes=32 time=8ms TTL=128
Reply from 10.0.0.2: bytes=32 time=6ms TTL=128
Reply from 10.0.0.2: bytes=32 time=8ms TTL=128

Ping statistics for 10.0.0.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 6ms, Maximum = 20ms, Average = 10ms

Повторяем на коммутаторе просмотр таблицы MAC-адресов:

Switch#sh mac-address-table int fa0/1

Mac Address Table
——————————————-
Vlan Mac Address Type Ports
—- ———– ——– —–
1 0090.213a.e000 STATIC Fa0/1
1 0090.213a.f000 DYNAMIC Fa1/1
Switch#

Добавилось 2 записи. Ну понятное дело, приём-передача. Это и есть 2 MAC-адреса наших хостов. Первая запись статичная – на этом порту устройство с этим адресом. А вторая динамичная – через этот порт проходил пакет по адресу назначения на порт Fa1/1.

А теперь делаем ход конём. Меняем MAC-адрес первого узла в настройках хоста. Повторяем пинг.

Switch#sh mac-address-table int fa0/1
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 0090.213a.e000 STATIC Fa0/1
1 0090.213a.e001 STATIC Fa0/1
1 0090.213a.f000 DYNAMIC Fa1/1
Switch#

Ага. Добавилась новая статичная запись. Ой-ой-ой, внимательно. У нас же ограничение в 3 записи. Сменим MAC-адрес ещё 2 раза и что мы увидим в консоли:

%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to administratively down

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down

Проверка простая:

Switch#show interfaces fastEthernet 0/1
FastEthernet0/1 is down, line protocol is down (err-disabled)

Это значит, что порт отрубился в err-disabled. (так как мы оставили дефолтное shutdown). Ура-ура. Защита сработала!

Очистить таблицу MAC и поднять порт

Очистить таблицу MAC-адресов можно так:

Switch#clear port-security all

Поднять порт из err-disable можно разными способами, например

Switch(config-if)#shutdown
Switch(config-if)#no shutdown