# Защита коммутаторов
## 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: *исходящее направление*