В этой статье будет рассмотрено, как можно произвести атаки на Layer2 сети и как можно защитить такую сеть от нападения с помощью оборудования Cisco Systems. Типы Layer2 аттак Vlan Hopping Смысл атаки заключается в том, что злоумышленник может получить доступ к другому устройству в сети не из своего VLAN Атака на STP Смысл атаки заключается в том, что злоумышленник, с помощью программных средств может отправить коммутатору пакет BPDU, в котором указать высокий приоритет и меньший MAC адрес и тем самым стать «корневым коммутатором» с целью перехвата сетевого трафика. MAC спуфинг Злоумышленник может подменить MAC адрес, с целью захватить трафик необходимого ему устройства. Атака на PVLAN Private Vlan, это виланы, которые составляют одну подсеть (как правило) и между хостами этого вилана связи быть не должно. Но злоумышленник может получить доступ к соседнему устройству PVLAN посредством устройства L3 (роутера). Атака на DHCP Злоумышленник может заполнить весь пул DHCP с помощью генерации большого количества запросов с несуществующими MAC адресами. Что приведет к DOS атаке, т.е. отказу в обслуживании, т.к.. так как после заполнения пула сервер не сможет выделять адреса реальным хостам. После чего атакующий может поднять собственный, DHCP сервер и хосты сети будут получать от недоверительного сервера все настройки, которые укажет злоумышленник. Например, он может направить весь трафик через свой хост и таким образом перехватить и просканировать его на предмет служебной информации. Рассмотрим эти атаки и меры борьбы с ними более подробно. 1. Переполнение CAM таблицы. Коммутатор имеет CAM таблицу, где содержится "привязка", какие MAC адреса на каком порту принимаются. Разумеется CAM таблица не бесконечна и имеет свои размеры. Например коммутатор Catalyst 2960 может содержать 8192 MAC адресов, Catalyst 6000 серии 128000 MAC адресов. Стоит подумать, а что же произойдет, когда вся таблица будет занята? Новые записи не смогут добавляться, весь трафик будет проходить на все порты. Что это даст атакующему вполне очевидно. Он может "прослушать" весь сетевой трафик и получить конфеденциальную информацию. Стоит отметить, что всё это действенно для VLAN'а, в котором находится злоумышленник. т.е. после переполнения данной таблицы атакующий не сможет прослушивать весь сетевой трафик, который "ходит" через коммутатор, а лишь своего VLAN, но и это не очень радостно. Какие же существуют способы борьбы с данным видом атаки? Логика подсказывает, что для подавления такой атаки, нам необходимо указать, что на порте коммутатора, к которому подключен пользователь может быть скажем не больше одного MAC адреса, а в случае если появляется более одного, перевести порт в отключенное состояние и отправить сообщение администратору о нарушении безопасности (например на syslog сервер). Рассмотрим на примере. Допустим, у нас есть коммутатор Cisco Catalyst 2960,24 порта к которым подключены пользователи. Нужно сделать так, чтоб на каждом порту мог быть только один хост (иными словами только один MAC адрес, какой? сейчас нас это не интересует). Для этого делаем: Заходим в режим глобального конфигурирования: Code: switch# conf t Затем перейдем к конфигурированию портов, выберем сразу все, с 1 по 24 Code: switch(config)#int range f0/1 Затем укажем что все эти порты являются портами доступа Code: switch(config-if-range)#switchport mode access Включаем защиту порта: port-security Code: switch(config-if-range)#switchport port-security Выбираем реакцию на нарушения нашей политики безопасности. Т.е. что будет коммутатор делать, когда на порту появится больше MAC адресов чем нами указано. В данном случае мы хотим чтоб порт выключался и посылалось соответсвующее сообщение по SNMP trap и syslog. Данную опцию можно не указывать принудительно, она действует по умолчанию. Так же существуют режимы: protect и restrict. Смысл этих режимов заключается в том, что порт не будет выключаться (т.е. переходить в состояние shutdown), а лишь будут блокироваться пакеты, если обнаружено нарушение связанное с MAC адресами. Protect от Restrict отличается тем, что при возникновении внештатной ситуации restrict может послать snmp trap и syslog сообщение о нарушении политики безопасности. Code: switch(config-if-range)#switchport port-security violation shutdown Соответсвенно указываем сколько MAC адресов мы готовы увидеть на этом порту. В данном случае 1 MAC адрес, значение 1, устанавливается по умолчанию. Code: switch(config-if-range)#switchport port-security maximum 1 Поставим порт коммутатора в режим обучения, т.е. первый MAC адрес, который будет получен через этот порт, будет прописан автоматически в running-config. Запись будет сохраняться до тех пор не будет перезагружен коммутатор. Либо если сделать copy running-config startup config (или просто wr) то, значения привязка MAC адреса к порту будет сохранена и в дальнейшем может использоваться даже после перезагрузки коммутатора. Code: switch(config-if-range)#switchport port-security mac-address sticky Данной меры вполне достаточно чтобы избежать атаку на переполнение CAM таблицы. Несколько команд для просмотра установок сделанных на портах, связанных с port-security. Code: show port-security Пример: Code: 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. show port-security interface имя_интерфейса. Пример: Code: catalyst#show port-security int f0/1 Port Security : Enabled Port Status : Secure-up Violation Mode : Restrict Aging Time : 0 mins Aging Type : Absolute SecureStatic Address Aging : Disabled Maximum MAC Addresses : 2 Total MAC Addresses : 2 Configured MAC Addresses : 0 Sticky MAC Addresses : 2 Last Source Address:Vlan : 001b.d491.4b1a:1 Security Violation Count : 38176 catalyst# В отличии от предыдущей команды, покажет вывод настроек конкретного интерфейса.
2. Vlan Hopping Рассмотрим более подробно данный вид атаки, способ реализации и как ее предотвратить. Цель данной атаки в том, что пользователь может попытаться передать данные в другой vlan. Давайте рассмотрим, как это сделать. Как подсказывает логика, это возможно когда атакующий может инициировать trunk режим. В коммутаторах Cisco Catalyst, по умолчанию порт работает не в режиму mode access и не в режиме mode trunk, таким образом на порту работает протокол DTP (Dynamic Trunk Protocol). В такой ситуации стоит атакующему "претвориться" коммутатором, как между ними будет установленно транковое соединения, и соответсвенно будут доступны vlan'ы сконфигурированные на коммутаторе и после чего передать данные в другой Vlan не составит труда. Бороться с этим не легко, а очень легко. Для начала нужно все используемые интерфейсы коммутатора перевести принудительно в режимы access и trunk, где это положено. Неиспользуемые порты необходимо перевести в shutdown, и перенести их в несуществующий VLAN, который будет известен только данному коммутатору, т.е. не передавался по trunk портам другим коммутаторам. Первый этап был рассмотрен нами выше. Для перевода порта в режим доступа необходимо: Переключиться в режим глобального конфигурирования Code: switch# conf t Заходим в настройку порта: Code: switch(conf)#int f0/1 Указываем принудительно режим доступа: Code: switch(config-if)#switchport mode access Для того чтобы перевести порт коммутатора в режим trunk,в режиме конфигурации интерфейса выполнить следующую команду: Code: switch(config-if)#switchport mode trunk Для неактивных портов, создадим специальный VLAN, скажем под номером 666, дадим ему имя unconnected и перенесем все неиспользуемые порты в этот самый VLAN и сделаем им shutdown. Создаем VLAN. Code: switch(conf)#vlan 666 Даем ему имя: Code: switch(config-vlan)#name Unconnected switch(config-vlan)#exit Переносим необходимые нам порты (например с 12 по 24) в созданный VLAN. Code: switch(conf)#int range f0/12 - 24 switch(config-if-range)#switchport access vlan 666 switch(config-if-range)#shut Описанные настройки позволят противостоять атакам типа Vlan Hopping. 3. Атака на STP. Как известно, STP (Spanning Tree Protocol) это протокол, предназначенный для предотвращения зацикливания пакетов в сети, при наличии дублирующих маршрутов. В кратце как это работает. Сначала происходит обнаружения коммутаторов которые связаны между собой, Здесь точка. Затем... Выбирается так называемый Root Bridge, т.е. главный «корневой коммутатор» . Далее по специальному алгоритму будут заблокированы порты коммутатора, которые создают петли в получившейся топологии. Более подробно работу STP мы не будем рассматривать. Что может сделать атакующий? Атакующий может так же "претвориться" коммутатором, направить в сторону коммутатора BPDU пакет, в котором может подделать приоритет, mac адрес, для того чтобы стать «корневым коммутатором», и с его помощью перехватить сетевой трафик. Корневой коммутатор становится тот, у которого самый высокий приоритет. Если приоритет у нескольких коммутаторов одинаковый, то для выбора корневого коммутатора используется MAC адрес, у кого он меньше тот и становится корневым. Постараемся избавиться от этой уязвимости. Что для этого необходимо? Запретить хождение BPDU пакетов с портов, в которых мы точно знаем, что там не должно быть никаких коммутаторов. И в случае если такой пакет всё же пришёл, переводить этот порт в shutdown. Обезопасить наш корневой коммутатор, чтоб не при каких условиях не могу быть выбран другой корневой коммутатор, в том числе и наш атакующий (атакующему не составит труда поставить приортитет лучше чем у настояшего главного коммутатора, и MAC адрес поменьше, что будет гарантировано, что атакующий будет root.) Перейдем к реализации данной идеи непосредственно на коммутаторе. Для начала, на всех портах доступа поставим специальный режим STP, который называется portfast. После этого клиент , подключенный к такому порту, не будет принимать участие в разрешении маршрутов по алгоритму STP и данные будут передаваться ему сразу. Если данная опция включена не будет, то сначала подключенный клиент инициирует пересчет маршрутов по алгоритму STP (это может занять достаточно много времени, десятки секунд и даже больше) и лишь после того будут начинать передаваться пользовательские данные через порт. По умолчанию portfast на Cisco Catalyst отключен и это нужно будет сконфигурировать вручную. Будем конфигурировать Portfast на портах f0/1 - 24. Code: switch# conf t switch(config)#int range f0/1 - 24 switch(config-if-range)#spanning-tree portfast Далее укажем что на этих портах хождение BPDU пакетов противопоказано, для этого в режиме глобальной конфигурации необходимо сделать следующее: Code: switch(config)#spanning-tree portfast bpduguard default Теперь, при появлении на портах, на которых указан режим STP portfast, BPDU пакета, порт будет отключаться, т.е. переходить в режим shutdown. И последнее, необходимо обезопасить наш Root Bridge. Для этого необходимо перейти в конфигурацию интерфейса, к которому подключен другой коммутатор и сделать следующее: Code: switch(config)# int f0/1 switch(config-if)spanning-tree guard root Теперь, в случае если появится злоумышленник и направит в сторону коммутатора пакет BPDU с максимальным приоритетом и меньшим MAC адресом, это не позволит стать ему «корневым коммутатором»
4. MAC Spoofing. MAC Spoofing, это атака, реализуемая путем подделывания MAC адреса, например атакующий может подделать MAC адрес, который использовал другой хост сети. Что это может дать атакующему зависит от политики безопасности сети. Для того чтобы предотвратить данный тип атаки необходимо выполнить меры, которые описаны в пункте 1. «Переполнение CAM таблицы , т.е. необходимо, указать максимальное количество mac адресов на порту, указать действие, которое будет выполнено в случае нарушения нашей политики (shutdown, restrict, protect). Указать MAC адреса статически, динамически, либо в режиме обучении. Для указания mac адреса статическим, в режими конфигурирования интерфейса необходимо выполнить: Switch(config-if)# switchport port-security mac-address 3234.2343.fa12 Где, 3234.2343.fa12 mac адрес клиента. Для указания динамического mac адреса, ничего дополнительного не делается, необходимо только включить фурнкцию port-security, как было описано выше. Чтобы указать режим обучения mac-адресов необходимо выполнить в режиме конфигурирования интерфейса: switch(config-if-range)#switchport port-security mac-address sticky Указать время жизни записей arp-таблице. Рассмотрим пример, в котором установим максимальное количество адресов на порту в 1, действие shutdown и укажем что arp таблица имеет таймер в 60 секунд. Code: switch# conf t switch(config)#int range f0/1 - 24 switch(config-if-range)#switchport mode access switch(config-if-range)#switchport port-security switch(config-if-range)#switchport port-security violation shutdown switch(config-if-range)#switchport port-security maximum 1 switch(config-if-range)#arp timeout 60 В этом примере все порты коммутатора FastEthernet с 1 по 24 переведены в режим доступа, применена технология port-security. На каждом порту может находиться лишь один клиент одновременно, об этом говорит команда switchport port-security maximum 1, данный параметр установлен по умолчанию и поэтому в конфигурационном файле этой команды видно не будет. В случае если на порту появилось сразу два и более MAC адреса, порт переводится в режим shutdown. Команда arp timeout 60, говорит о том, что mac адрес будет находиться в ARP кеше 60 секунд без обновления. 5. Атака на PVLAN (Private VLAN). В технологии PVLAN в отличии от VLAN порты могут находиться в трёх режимах: Promiscuous Community Isolated Порты которые отмечены как Isolated, не могут передавать данные в своем VLAN между клиентами. Данные передаваться могут только между Isolated и Promiscuous портами. Promiscuous порты это порты в PVLAN, в которые можно передавать данные со всех Isalated и Community портов. как и в обычном VLAN. Community это группы портов, между членами которых можно передавать данные, можно назвать vlan в vlan'е. Если атакующему доступно устройство Layer 3 (например маршрутизатор, либо коммутатор третьего уровня), он может установить связь между клиентами, которые находятся в одном PVLAN, между Isolated портами. Как это можно реализовать? Пользователь может подделать пакет, в котором IP назначения он укажет необходимое ему устройство (которое находится на другом порту Isolated), источник останется без изменения, т.к. ip атакающего, как и MAC адрес, а вот в качестве MAC адрес назначения он укажет MAC устройства L3. L3 устройство получится данный пакет и может переправить его по указанному адресу. Принимающая сторона может сделать тоже самое, тем самым обеспечив передачу данных между Isolated портами. Предотвращение такой атаки сводится к тому, что на устройстве L3 создается специальный Access List в котором запрещается прямая передача данных между сегментом сети. Рассмотрим пример настройки. Code: router#conf t router(config)#ip access-list extended pvlan router(config-ext-nacl)#deny ip 10.0.0.0 0.0.0.255 10.0.0.0 0.0.0.255 router(config-ext-nacl)#permit any any router(config-ext-nacl)#exit router(config)#int f0/1 router(config-if)#ip access-group pvlan in Таким образом был создан список управления досутпом под названием pvlan, в котором указывается что с сети 10.0.0.0/24 запрещено передавать данные в 10.0.0.0/24, всё остальное разрешено. И этот список доступа, последней командой был связан с интерфейсом f0/1. Описанные выше настройки не позволят атакующему установить связь между клиентами одного PVLAN, между Isolated портами используя L3 устройство. 6. Атака на DHCP Существуеет несколько способов атаковать DHCP сервер. 1.Злоумышленник может сформировать и послать DHCP серверу огромное количество DHCP запросов, с разными MAC адресами. Сервер будет выделять IP адреса из пула и рано или поздно весь DHCP pool закончится, после чего сервер не сможет обслуживать новых клиентов. Данный вид атаки можно классифицировать как DOS (Denial of service - Откзал в обслуживании). Нарушается работоспособность сети. Метод борьбы с такими атаками называется DHCP Snooping. В кратце рассмотрим как это работает. Когда коммутатор получает пакет сравнивает MAC-адрес указанный в DHCP-запросе и MAC-адрес, который был прописан на порту коммутатора. Если адреса совпадают, то коммутатор отправляет пакет дальше. Если адреса не совпадают, то коммутатор отбрасывает пакет. 2. Злоумышленник может поставить свой DHCP сервер и выдавать свои настройки пользователям сети. (может указать любой DNS,Gateway и т.д.) и воспользоваться уже по своему усмотрению, начиная от прослушивания трафика, до подделки DNS ответов, и т.д. Если в сети существует несколько DHCP серверов, то на запрос будут отвечать все серверы, но клиентом будет обработан только первый ответ. Какой из DHCP серверов ответит быстрее и чей ответ быстрее дойдет до клиента зависит от многих факторов, таких как: загрузка DHCP сервера, загрузка сети и т.д. Для того чтоб злоумышленник был уверен, что именно от его DHCP сервера клиент получит ответ, атакующим может быть предварительно произведена DOS атака на легальные DHCP сервера способом описанным в пункте 1 В технологии DHCP Snooping существует поняетие доверительных и не доверительных портов. (trusted и untrusted соответсвенно) Доверительные порты, это порты с которых может приходить ответ DHCP (DHCPOFFER и так далее), а не доверительные порты, это порты с которых не могут приходить ответы DHCPOFFER. Доверительные порты указываются вручну. Все порты, которые не указаны доверительными, автоматически становятся недоверительными. Порт, который непосредственно подключен к DHCP серверу должен быть объявлен как доверительный (trust порт). DHCP Snooping настраивается для каждого VLAN. Для настройки DHCP snooping необходимо сделать сначала включить snooping в режиме глобальной конфигурации, затем включить на нужном vlan, затем указать trust порты. Рассмотрим на примере. Code: switch(config)# ip dhcp snooping switch(config)# ip dhcp snooping vlan 10 switch(config)#int f0/1 switch(config-if)#ip dhcp snooping trust В данном примере, мы включили защиту DHCP на vlan 10. Интерфейс f0/1 у нас подключен непосредственно к DHCP серверу, поэтому на нем мы включили trust. Так же можно включить или выключить опции 82 DHCP (которая отвечает за информацию relay, т.е. через какие коммутаторы прошёл данный пакет, аналогию можно провести с таблицей маршрутизации). Делается в режиме глобального конфигурирования командой: Code: switch(config)#ip dhcp snooping information option Так же есть возможность включить ограничение количество запросов DHCP в секунду. Делается это на интерфейсе, в нашем случае f0/1. К этому параметру нужно относиться с осторожностью. Если количество запросов в секунду будет больше чем мы указали (в нашем примере 100), то запросы будут отклонены. Code: switch(config)#interface fa0/1 switch(config-if)#ip dhcp snooping limit rate 100 В статье мы рассмотрели основные виды Layer 2 Атак, и рассмотрели как с ними можно бороться. Описанные меры должны применяться комплексно, для повышения безопасности сети в целом.
автортство мое. публиковал статью в журнале "Системный администратор" в декабре. есть концентратоы (точнее были, которые работали на Layer 1, обычные хабы) есть коммутаторы, которые работают на Layer 2 (грубо говоря понимает MAC адресацию) Есть Layer 3 (которые разбирают до уровня IP в OSI) Есть MLS (Multilayer Switch), которые могут работать на 3,4 и др уровнях. В данной статье я расмотрел настройку оборудования Layer2.
при описании оборудования, редко, когда можно встретить, оборудование канального уровня, употребляется Layer2 оборудвание рад, что мы разрешили этот вопрос.