# Защита коммутаторов ## Port Security Port security. Эта технология на основе мак адресов устройств регулирует, какие подключенные компьютеры могут передавать данные через конкретный сетевой интерфейс коммутатора. **Используется для:** - Предотвращения несанкционированной смены MAC-адреса сетевого устройства или подключения к сети - Предотвращения атак направленных на переполнение таблицы коммутации. После настройки порт не передает пакеты, если MAC-адрес отправителя не указан как разрешенный. Кроме того, можно указывать не конкретные MAC-адреса, разрешенные на порту коммутатора, а ограничить количество MAC-адресов, которым разрешено передавать трафик через порт. Технология работает на основе таблицы мак адресов коммутатора. Напомню, что в данную таблицу записываются мак адреса компьютеров, обменивающихся информацией в сети. Коммутатор сопоставляет эти мак адреса со своими физическими интерфейсами, благодаря чему происходит процесс коммутации. Получается, что мы можем назначить список разрешенных мак адресов для конкретного интерфейса. В таком случае указанные мак адреса коммутатор допустит до процесса коммутации, а любые другие – нет. **Безопасные MAC-адреса** Коммутатор поддерживает такие типы безопасных MAC-адресов: - Статические MAC-адреса: - задаются статически командой switchport port-security mac-address mac-address в режиме настройки интерфейса, - хранятся в таблице адресов, - добавляются в текущую конфигурацию коммутатора; - Динамические MAC-адреса: - динамически выучиваются, - хранятся только в таблице адресов, - удаляются при перезагрузке коммутатора; - Sticky MAC-адреса: - могут быть статически настроены или динамически выучены, - хранятся в таблице адресов, - добавляются в текущую конфигурацию коммутатора. Если эти адреса сохранены в конфигурационном файле, после перезагрузки коммутатора, их не надо заново перенастраивать. **Режимы реагирования** Нарушением безопасности для port security считаются ситуации: - максимальное количество безопасных MAC-адресов было добавлено в таблицу адресов и хост, чей MAC-адрес не записан в таблице адресов пытается получить доступ через интерфейс, - адрес, выученный или настроенный как безопасный на одном интерфейсе, появился на другом безопасном интерфейсе в том же VLAN'е. На интерфейсе могут быть настроены такие режимы реагирования на нарушения безопасности: - Protect В случае нарушения, кадры Ethernet с неавторизованным MAC-адресом источника отбрасываются. В этом режиме нарушения коммутатор не предоставляет уведомления о событии. - Restrict В случае нарушения кадры Ethernet с неразрешенными MAC-адресами источников отбрасываются. Коммутатор обеспечивает уведомление о нарушениях безопасности и ведет подсчет количества нарушений. - Shutdown Когда происходит нарушение, порт отключается и автоматически регистрируется в журнале. Для возобновления работы порт необходимо перезагрузить вручную. **Настройка Port Security** Так как после команды switchport port-security, сразу включается Port security с настройками по умолчанию, то ее стоит давать вначале только если настройки по умолчанию подходят. Включается Port Security командной: *switch(config-if)# switchport port-security* **Настройки по умолчанию** На коммутаторах Cisco такие настройки по умолчанию для функции port security: - Port security — выключен. - Запоминание sticky-адресов — выключено. - Максимальное количество безопасных MAC-адресов на порту — 1. - Режим реагирования на нарушения — shutdown. - Время хранения адресов: отключено. Значение aging time — 0, для статических адресов — отключено, тип времени — абсолютное. При самостоятельной настройке видим поля: - **aging** – задается временной интервал, после которого динамический МАС-адрес может быть переписан - **mac-address** - указываем безопасный MAC-адрес - **maximum** – указываем максимальное количество MAC-адресов, которые смогут подключиться - **violation** – режим реагирования на нарушение Рассмотрим их подробнее **Aging.** Имеет три параметра: - **Static** – включить aging для настроенных безопасных адресов - **Time** – время устаревания (в минутах от 1 до 1440) - **Type** – тип устаревания (absolute – абсолютное (по умолчанию); inactivity – на основе периода бездействия) **Mac-address**. Можно указать: - **H.H.H** – разрешённый адрес - **Forbidden** – запрещённый адрес - **Sticky** – коммутатор будет учить новые адреса **Maximum** – указываем сколько адресов можно запомнить (1 - 4097) **Violation** – упоминалось раньше Устанавливаем что нужно, что не нужно пропускаем. Если до этого не включили настройки по умолчанию активируем технологию командой *switchport port-security* без опций. **Задача:** на коммутаторе ввести один адрес вручную, остальные адреса запоминать динамически. При этом на инциденты реагировать отключением порта. Тогда получаются следующие настройки: *Switch(config-if)#switchport port-security Switch(config-if)#switchport port-security maximum 4 Switch(config-if)#switchport port-security mac-address 0005.5E80.22A3 Switch(config-if)#switchport port-security mac-address sticky Switch(config-if)#switchport port-security violation shutdown* ## Защита от Rogue DHCP Server Цель данной атаки – подмена DHCP-сервера. При одновременном нахождении в сети двух DHCP-серверов, один из которых «вражеский», некоторая часть клиентов сконфигурирует у себя неправильные адреса и прочие сетевые реквизиты. Вследствие подмены шлюза по умолчанию неавторизованный DHCP-сервер получит возможность прослушивать весь трафик клиентов, перенаправляя в дальнейшем пакеты по назначению. Таким образом мы имеем простейшую реализацию атаки типа MitM (Man in the Middle), которая может быть осуществлена в большинстве современных сетей. Стоит отметить, что чаще всего атака с подменой DHCP-сервера не является атакой, как таковой. Распространены случаи, когда по незнанию в сеть подключается SOHO роутер с настроенным DHCP-сервером, причем подключается он LAN-портом. После этого у клиентов, успевших получить у него IP-адреса, наблюдаются как минимум существенные потери скорости, а чаще всего полная невозможность использования локальных и глобальных ресурсов. Простейший способ защиты от атак подобного рода – включение на всех коммутаторах функции DHCP snooping. Далее необходимо определить два типа портов: - Доверенные – порты коммутатора, к которым подключается DHCP-сервер, либо другой коммутатор. - Недоверенные – порты для клиентских подключений, за которыми DHCP-сервер находиться не может, зато вполне может находиться атакующее устройство. В данном случае DHCP snooping необходим для того, чтобы указать коммутатору, что следует обращать внимание на пакеты DHCP offer и acknowledgment, проходящие сквозь него, и не допускать прохождения данных пакетов с недоверенных портов. Также широковещательные запросы от клиента (discover и request) теперь будут перенаправляться только на доверенные порты. Для конфигурирования функции DHCP snooping необходимо: 1. Включить ее на коммутаторе: *SW(config)#ip dhcp snooping* 2. Указать для каких VLAN требуется отслеживать пакеты: *SW(config)#ip dhcp snooping vlan* 3. Указать доверенные порты на коммутаторе (все остальные по умолчанию становятся недоверенными): *SW(config-if)#ip dhcp snooping trust* ## Защита от DHCP starvation Еще одна атака, осуществляемая при помощи протокола DHCP. DHCP-пул, из которого клиенты получают IP-адреса, ограничен. Например, это может быть 253 адреса (при маске 255.255.255.0). Для нормальной работы сети этого должно хватить всем клиентам, но атака DHCP starvation стремится изменить данную ситуацию. Как происходит действие: 1. Атакующее устройство запрашивает себе IP-адрес у DHCP-сервера и получает его; 2. MAC-адрес атакующего устройства изменяется и оно запрашивает следующий, уже другой IP-адрес, маскируясь под нового клиента; 3. Такие действия повторяются до тех пор, пока весь пул IP-адресов на сервере не будет исчерпан. Далее возможны два последствия, в зависимости от того, что является целью атаки: - Отказ в обслуживании. IP-адреса исчерпаны, и новые хосты не могут получить их. Таким образом, их взаимодействие с сетью на этом закончится. - Подмена DHCP-сервера. DHCP starvation отлично комбинируется с предыдущей атакой. Так как на основном DHCP-сервере свободных адресов не осталось, он выбывает из игры, и 100% клиентов достается вражескому атакующему DHCP-серверу. Самый простой способ защиты – ограничение числа MAC-адресов на порту коммутатора. Реализуется это с помощью функции port-security: 1. *Переводим порт в access режим: SW(config-if)#switchport mode access* 2. *Включаем port-security на интерфейсе: SW(config-if)#switchport port-security* 3. *Ограничиваем число MAC-адресов на интерфейсе: SW(config-if)switchport port-security maximum* 4. Выбираем способ изучения MAC-адресов коммутатором: *SW(config-if)#switchport port-security mac-address <mac-address | sticky>* 5. Задаем тип реагирования на превышение числа разрешенных MAC-адресов: *SW(config-if)#switchport port-security violation <protect | restrict | shutdown>* Таким образом атакующее устройство просто не сможет исчерпать лимит IP-адресов DHCP-пула, так как коммутатор не позволит ему безнаказанно изменять свой MAC-адрес. Также здесь может помочь все тот же DHCP snooping, а именно команда *SW(config-if)ip dhcp snooping limit rate* Данная команда ограничивает количество DHCP пакетов в секунду на порт (рекомендуется не более 100 pps), а при превышении данного ограничения переводит порт в состояние err-disable, то есть временно выключает его. Обычный клиент не превысит данный лимит, а вот атакующее устройство, генерирующее сотни MAC-адресов в секунду, будет обнаружено. ## Защита от CAM-table overflow Напомню, что данная атака заключается в следующем: генерируется большое количество адресов и коммутатор записывает их в свою таблицу, а реальные адреса реальных устройств постепенно выходят из нее. В таком случае коммутатор начнет, рассылать кадры, адресованные конкретному получателю на все порты, находящиеся в том же VLAN, следовательно у атакующего устройства появится возможность перехватить и прочитать их. Следует заметить, что все коммутаторы, подключенные к атакованному также подхватят фальшивые MAC-адреса и начнут вести широковещательную рассылку всех кадров. Методы защиты 1. Port-security на всех access-портах с лимитированием максимального количество MAC-адресов. 2. Шифрование трафика – в таком случае хоть все кадры и будут рассылаться широковещательно, а производительность сети сильно ухудшится, информация, попавшая в чужие руки, не будет прочитана. ## Защита от VLAN hopping Напомню о двух атак типа Vlan Hopping, которые мы ранее рассматривали **Подмена коммутатора** Если злоумышленник может генерировать сообщения динамического транкового протокола (DTP) со своего компьютера, между его компьютером и коммутатором может быть сформирована магистральная линия. Как только магистральный канал сформирован, злоумышленник может получить трафик из всех VLAN. Злоумышленник теперь может прослушивать трафик из всех VLAN. **Двойная маркировка** Данный вид атаки основан на использовании принципов работы аппаратного обеспечения на большинстве коммутаторов. Большинство коммутаторов выполняют лишь один уровень деинкапсуляции 802.1Q, что позволяет злоумышленнику вставлять в кадр скрытую метку 802.1Q. Метка позволяет пересылать кадр в сеть VLAN, которая не указана первоначальной меткой 802.1Q. Важное свойство атаки с двойной инкапсуляцией заключается в том, что она действует, даже если транковые порты отключены, поскольку обычно узел отправляет кадр в сегменте, который не является транковым каналом. Методы защиты - Убедитесь, что порты не настроены на автоматическую работу в режиме транка - Отключите протокол DTP - НИКОГДА не используйте VLAN 1 - Отключите и перенесите в неиспользуемый VLAN неиспользуемые порты - Всегда используйте специальный VLAN ID для всех транковых портов ## Защита от MAC-spoofing Суть данной атаки заключается в подмене MAC-адреса на сетевой карте компьютера, что позволяет ему перехватывать пакеты, адресованные другому устройству, находящемуся в том же широковещательном домене. В таблице MAC-адресов коммутатора запись с атакованным MAC-адресом будет соотнесена с интерфейсом, на котором в последний раз был идентифицирован кадр с данным source MAC. Таким образом, до поступления кадра с атакуемого устройства, все данные коммутатор, на основании своей CAM-таблицы, будет пересылать на атакующий компьютер. Методы защиты Официально рекомендуемый метод – включение port-security на интерфейсе коммутатора, например: *SW(config-if)#switchport mode access* *SW(config-if)#switchport port-security* *SW(config-if)#switchport port-security mac-address 0000.1111.1111* # Защита сегментов сети. ACL ACL - cписки контроля доступа , которые определяют, кто или что может получать доступ к объекту и какие именно операции разрешено или запрещено выполнять субъекту. Благодаря этой технологии обеспечивается фильтрация на сетевом и транспортном уровне модели OSI, позволяя определить, могут ли компьютеры взаимодействовать друг с другом. Технология работает на основе ip адресов и номеров портов. Обычно ACL разрешает или запрещает IP-пакеты, но помимо всего прочего он может заглядывать внутрь IP-пакета, просматривать тип пакета, TCP и UDP порты. Также ACL существует для различных сетевых протоколов (IP, IPX, AppleTalk и так далее). **Достоинства:** - Производительность сети - можно повысить, разрешив только соответствующим службам обмениваться данными с устройствами сети - Защита сети - в сетевой среде пользователям может быть ограничен доступ к конфиденциальным службам - Контроль трафика - разрешает и запрещает трафик, в зависимости от потребностей сети ACL разделяются на два типа: **Стандартные ACL** - могут проверять только адреса источников **Расширенные ACL** - могут проверять адреса источников, а также адреса получателей, в случае IP ещё тип протокола и TCP/UDP порты **Настройка** Сами ACL создаются отдельно, то есть это просто некий список, который создается в глобальном конфиге, потом он присваивается к интерфейсу и только тогда он и начинает работать. Необходимо помнить некоторые моменты, для того, чтобы правильно настроить списки доступа: - Обработка ведется строго в том порядке, в котором записаны условия - Если пакет совпал с условием, дальше он не обрабатывается - В конце каждого списка доступа стоит неявный deny any (запретить всё) - Расширенные ACL нужно размещать как можно ближе к источнику, стандартные же как можно ближе к получателю - Нельзя разместить более 1 списка доступа на интерфейс, на протокол, на направление - ACL не действует на трафик, сгенерированный самим маршрутизатором - Для фильтрации адресов используется WildCard маска ## Базовые списки контроля доступа **Конфигурирование стандартных списков доступа** Конфигурирование списков доступа производится в два этапа: 1. **Создание списка доступа** в режиме глобального конфигурирования. 2. **Привязка списка доступа к интерфейсу** в режиме детального конфигурирования интерфейса. **Создание стандартного списка доступа** Стандартный список доступа записывается следующим образом: *Router(config)#access-list <номер списка от 1 до 99> {permit | deny | remark} {address | any | host} [source-wildcard] [log]* **Параметры:** - permit: *разрешить* - deny: *запретит* - remark: *комментарий о списке доступа* - address: *запрещаем или разрешаем сеть* - any: *разрешаем или запрещаем всё* - host: *разрешаем или запрещаем хосту* - source-wildcard: *WildCard маска сети* - log: *включаем логгирование пакеты проходящие через данную запись ACL* **Прикрепляем к интерфейсу** *Router(config-if)#ip access-group <номер списка или имя ACL>{in | out}* - in: *входящее направление* - out: *исходящее направление* ## Расширенные списки контроля доступа **Конфигурирование расшренных списков доступа** *Router(config)#access-list <номер списка от 100 до 199>{permit | deny | remark} protocol source [source-wildcard] [operatoroperand] [port <порт или название протокола> [established]* **Параметры** - protocol source: *какой протокол будем разрешать или закрывать (ICMP, TCP, UDP, IP, OSPF и т.д)* - deny: *запретить* - operator: - *A.B.C.D — адрес получателя* - *any — любой конечный хост* - *eq — только пакеты на этом порте* - *gt — только пакеты с большим номером порта* - *host — единственный конечный хост* - *lt — только пакеты с более низким номером порта* - *neq — только пакеты не на данном номере порта* - *range — диапазон портов* - port: *номер порта (TCP или UDP), можно указать имя* - established: *разрешаем прохождение TCP-сегментов, которые являются частью уже созданной TCP-сессии* **Прикрепляем к интерфейсу** *Router(config-if)#ip access-group <номер списка или имя ACL>{in | out}* - in: *входящее направление* - out: *исходящее направление*