В первой части нашей статьи, мы уже рассказали о том, какие виды атак существует в Layer2 сетях. Сегодня мы познакомимся с первой из них.
Коммутатор имеет CAM таблицу, где содержится «привязка», какие MAC адреса на каком порту принимаются.
Разумеется CAM таблица не бесконечна и имеет свои размеры. Например коммутатор Catalyst 2960 может содержать 8192 MAC адресов, Catalyst 6000 серии 128000 MAC адресов.
Стоит подумать, а что же произойдет, когда вся таблица будет занята? Новые записи не смогут добавляться, весь трафик будет проходить на все порты.
Что это даст атакующему вполне очевидно. Он может «прослушать» весь сетевой трафик и получить конфеденциальную информацию.
Стоит отметить, что всё это действенно для VLAN’а, в котором находится злоумышленник. т.е. после переполнения данной таблицы атакующий не сможет прослушивать весь сетевой трафик, который «ходит» через коммутатор, а лишь своего VLAN, но и это не очень радостно.
Какие же существуют способы борьбы с данным видом атаки?
Логика подсказывает, что для подавления такой атаки, нам необходимо указать, что на порте коммутатора, к которому подключен пользователь может быть скажем не больше одного MAC адреса, а в случае если появляется более одного, перевести порт в отключенное состояние и отправить сообщение администратору о нарушении безопасности (например на syslog сервер).
Рассмотрим на примере.
Допустим, у нас есть коммутатор Cisco Catalyst 2960,24 порта к которым подключены пользователи. Нужно сделать так, чтоб на каждом порту мог быть только один хост (иными словами только один MAC адрес, какой? сейчас нас это не интересует).
Для этого делаем:
Заходим в режим глобального конфигурирования:
switch# conf t
Затем перейдем к конфигурированию портов, выберем сразу все, с 1 по 24
switch(config)#int range f0/1
Затем укажем что все эти порты являются портами доступа
switch(config-if-range)#switchport mode access
Включаем защиту порта: port-security
switch(config-if-range)#switchport port-security
Выбираем реакцию на нарушения нашей политики безопасности. Т.е. что будет коммутатор делать, когда на порту появится больше MAC адресов чем нами указано. В данном случае мы хотим чтоб порт выключался и посылалось соответсвующее сообщение по SNMP trap и syslog. Данную опцию можно не указывать принудительно, она действует по умолчанию. Так же существуют режимы: protect и restrict. Смысл этих режимов заключается в том, что порт не будет выключаться (т.е. переходить в состояние shutdown), а лишь будут блокироваться пакеты, если обнаружено нарушение связанное с MAC адресами. Protect от Restrict отличается тем, что при возникновении внештатной ситуации restrict может послать snmp trap и syslog сообщение о нарушении политики безопасности.
switch(config-if-range)#switchport port-security violation shutdown
Соответсвенно указываем сколько MAC адресов мы готовы увидеть на этом порту. В данном случае 1 MAC адрес, значение 1, устанавливается по умолчанию.
switch(config-if-range)#switchport port-security maximum 1
Поставим порт коммутатора в режим обучения, т.е. первый MAC адрес, который будет получен через этот порт, будет прописан автоматически в running-config. Запись будет сохраняться до тех пор не будет перезагружен коммутатор. Либо если сделать copy running-config startup config (или просто wr) то, значения привязка MAC адреса к порту будет сохранена и в дальнейшем может использоваться даже после перезагрузки коммутатора.
switch(config-if-range)#switchport port-security mac-address sticky
Данной меры вполне достаточно чтобы избежать атаку на переполнение CAM таблицы.
Несколько команд для просмотра установок сделанных на портах, связанных с port-security.
show port-security
Пример:
catalyst#show port-security
Secure Port MaxSecureAddr CurrentAddr SecurityViolation Security Action
(Count) (Count) (Count)
—————————————————————————
Fa0/1 2 2 38174 Restrict
Fa0/2 2 2 21601 Restrict
Fa0/3 3 3 6346 Restrict
Fa0/4 2 2 34777 Restrict
Fa0/5 2 2 0 Restrict
skipped
Fa0/48 2 2 26 Restrict
—————————————————————————
Total Addresses in System (excluding one mac per port) : 35
Max Addresses limit in System (excluding one mac per port) : 8320
catalyst#
Команда покажет вам на каких портах включен port-security и как они сконфигурированы относительно безопасности port-security.