Внимательно прочитав данную статью вы ознакомитесь с понятием безопасности DHCP и увидите демонстрацию внедрения, на базе коммутаторов Cisco Catalyst 2960, реализующей ее функции DHCP Snooping с дополняющими функциями: IP Source Guard и Dynamic ARP Inspection.
Ссылки для ознакомления:
DHCP (ru)
DHCP & DHCP Snooping (en)
1. Введение
Несмотря на то, что DHCP может показаться довольно простым протоколом, в нём скрываются огромные возможности, с которыми надеюсь вам ещё только предстоит ознакомиться. В случае использования данного протокола в вашей компьютерной сети, помимо получения внушительного списка плюсов, вы так же получаете один большой минус – критическую зависимость от стабильности сервера DHCP. А вместе с этим и необходимость обезопастить себя от небольшого списка угроз, способных прервать доступность сервисов:
- подмена DHCP-сервера (DHCP spoofing)
Протокол устроен так, что клиент отправляет широковешательный DHCP-запрос типа DHCPDISCOVER с целью обнаружения любого DHCP-сервера. Серверов обслуживающих DHCP-запросы может быть несколько и реалии таковы, что клиент примет предложение сдать в арену IP-адрес от того сервера, чем пакет типа DHCPOFFER прийдёт к нему первым. Таким образом, злоумышленник может установить в нашу сеть нелегитимный DHCP-сервер и раздавать клиентам настройки позволяющие в дальнейшем получить часть трафика клиентов. - Исчерпание пула адресов (DHCP starvation)
Используя подмену поля chaddr в пакете DHCPDISCOVER, один и тот же клиент может арендовать на себя все доступные адреса пула. Таким образом, легальные клиенты не смогут получить IP-адрес и использовать сервисы сети. - Угон IP-адреса (Hijacking)
Злоумышленик, подменив свои IP и MAC-адреса на значения легального клиента, может отправить DHCP-серверу пакет DHCPRELEASE, означающий прекращение аренды IP-адреса и возвращение этого адреса в пул доступных для аренды адресов. После этого злоумышленник может запросить этот же адрес вновь, либо попросту скрыться и допустить дублирование IP-адресов в нашей сети.
Для предотвращения вышеуказанных атак Cisco Systems предлагает использовать доступную в операционной системе Cisco IOS функцию DHCP Snooping.
2. DHCP Snooping
Итак, у нас наличии L3-коммутатор уровня распределения (DSW0), аплинком смотрящий в сторону ядра, за котором находится один из наших легальных DHCP-серверов, а даунлинки которого ведут к L2-коммутаторам уровня доступа (ASW0, ASW1, ASW2 … ASWn). В данной статье мы будет настраивать только коммутатор ASW0, к FastEthernet-порту которого подключен Cisco IP Phone, в PC-порт которого подключен компьютер пользователя.
Из схемы очевидно, что пакеты которые отправляет легальный DHCP-сервер свои клиентам приходят на коммутатор ASW0 на порт GigabitEthernet 0/1 и основная идея состоит в настройке данного порта как доверенного (trust), в то время как все остальные, ненастроенные порты, автоматически становятся недоверенным (untrusted). Как только доверие выставлено и запущен сервис IP DHCP Snooping для недоверенных портов начинают действовать следующие правила:
- пакет, источником которого должен быть DHCP-server (DHCPOFFER, DHCPACK, DHCPNAK, DHCPLEASEQUERY) отбрасывается;
- пакеты, содержащие опцию 82 отбрасываются (подробности далее);
- пакеты, в которых значение поля ciaddr DHCP-пакета не совпадает с MAC-адресом отправителя этого пакета отбрасываются;
- пакеты типа DHCPRELEASE или DHCPDECLINE пришедшие не на тот порт, где привязан MAC-адрес отправителя отбрасываются.
Спускать пакет “вниз”, до клиента это пожалуйста, а принять его входящим не выйдет. Таким образом, даже если злоумышленник и сможет установить некий DHCP-сервер на свой компьютер, то любые пакеты от него всё равно будут блокироваться нашим коммутатором, так как его компьютер подключен к недоверенному порту.
Выполним базовую настройку.
2.1 Определение задачи
2.1.1 Характеристика коммутатора ASW0
- Наименование устройства: Cisco Catalyst 2960
- Операционная система: Cisco IOS LAN Base 15.0(1)SE
- Восходящий к DHCP-серверу порт: GigibitEthernet 0/1
- Недоверенные порты: FastEthernet 0/1-24
Конфигурация порта:
Конфигурация порта GigibitEthernet 0/1
1 2 3 4 5 6 |
! interface GigabitEthernet0/1 description # UPLINK ON sr0 # switchport mode trunk switchport trunk allowed vlan 10,110 ! |
Конфигурация порта FastEthernet 0/1
1 2 3 4 5 6 7 8 |
! interface FastEthernet0/1 description # ACTIVE CLIENT PORT # switchport mode access switchport access vlan 10 switchport voice vlan 110 spanning-tree portfast ! |
2.1.2. Задача
- Пометить восходящий порт доверенным, чтобы на порт допускались входящие пакеты DHCP-сервера;
- указать лимит пропускаемых DHCP-пакетов на порт доступа FastEthernet 0/1 в значение 10 пакетов/сек из расчёта что 1 клиент не сможет сгененировать больше при правильном запросу IP-адреса;
- укажем для каких VLAN использовать функцию, иначе экземпляр DHCP Snooping запустится только для Native VLAN;
- отключим вставку DHCP-опции 82 в DHCP-пакеты клиентов (подробности опции выходят за рамки статьи, но конкретно в данном случае, мало того что сам коммутатор доступа блокирует пакеты с это опцией, так ещё и сам вставляет её в каждый клиентский DHCP-пакет проходящий сквозь него. В нашей схеме DHCP-пакет от клиента приходит на DSW0, где на SVI-интерфейсе его ждёт ip helper-address. По умолчанию, устройства Cisco, функционирующие в режиме DHCP Relay или DHCP server отбрасывают пакеты с опцией 82 внутри, поэтому, чтобы не выполнять дополнительную настройку на DSW0 мы просто отключим вставку данной опции);
- включить функцию – настоятельно рекомендовано, сначала выполнять всю настройку и только после включать саму функцию.
2.1.3. Настройка
Укажем доверенные порты и установим лимит в 48 DHCP-пакетов/сек
1 2 |
ASW0(config)# interface GigabitEthernet 0/1 ASW0(config-if)# ip dhcp snooping trust |
ограничим количество DHCP-пакетов в секунду на порте доступа
1 2 |
ASW0(config)# interface FastEthernet 0/1 ASW0(config-if)# ip dhcp snooping limit rate 10 |
явно укажем для каких VLAN использовать функцию
1 |
ASW0(config)# ip dhcp snooping vlan 10,110 |
отключим вставку опции 82
1 |
ASW0(config)# no ip dhcp snooping information option |
и включим функцию
1 |
ASW0(config)# ip dhcp snooping |
2.1.4. Диагностика
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
ASW0# show ip dhcp snooping Switch DHCP snooping is enabled DHCP snooping is configured on following VLANs: 10,110 DHCP snooping is operational on following VLANs: 10,110 DHCP snooping is configured on the following L3 Interfaces: Insertion of option 82 is disabled circuit-id default format: vlan-mod-port remote-id: 42e4.d7f2.5201 (MAC) Option 82 on untrusted port is not allowed Verification of hwaddr field is enabled Verification of giaddr field is enabled DHCP snooping trust/rate is configured on the following Interfaces: Interface Trusted Allow option Rate limit (pps) ----------------------- ------- ------------ ---------------- GigabitEthernet0/1 yes yes unlimited |
Обратите внимание: функция включена, функционирует для VLAN 10 и 110, вставка 82 опции отключена, входящие пакеты с опцией 82 не допускаются. Тогда как интерфейс GigabitEthernet0/1 является доверенным, разрешает пакеты с опцией 82.
1 2 3 4 |
ASW0# show ip dhcp snooping statistics Packets Forwarded = 5680 Packets Dropped = 6304 Packets Dropped From untrusted ports = 0 |
Спросите, почему количество отброшенных DHCP-пакетов превышает количество пропущенных? Для этого надо понимать, что без DHCP Snoopong, клиент отправляет тот же DHCPDISCOVER на MAC-адрес “ffff:ffff:ffff” и IP-адрес “255.255.255.255”, поэтому пакет будет продублирован на ВСЕ порты устройства (принадлежащие тому же VLAN). Тогда как DHCP Snooping, при 24 портах и 1 аплинке, отбросит 23 пакета мечтающих выйти в свет через недоверенные порты, так как мы сами ему сказали: “Там рыбы нет”.
1 2 3 4 5 6 |
ASW0# show ip dhcp snooping binding MacAddress IpAddress Lease(sec) Type VLAN Interface ------------------ --------------- ---------- ------------- ---- -------------------- 48:5B:39:D1:6D:C7 192.168.10.51 46436 dhcp-snooping 10 FastEthernet0/1 00:C0:26:AB:A4:40 192.168.110.12 54792 dhcp-snooping 10 FastEthernet0/1 Total number of bindings: 3 |
Это внутренняя база DHCP Snooping, с помощью которого можно увидеть на каком конкретно интерефейсе клиент получил конкретный IP-адрес, а так же увидеть его MAC-адрес. Данная команда – самая информативная, и благодаря ей можно быстрее всего обнаружить, что клиент не имеет доступа к локальной сети, если это проблема связана с получением IP-адреса по DHCP
3. IP Source Guard
Помимо DHCP Snooping, мы внедрим в нашу сеть функцию IP Source Guard, которая напрямую зависит от представленной выше внутренней базы.
Функция предназначена для борьбы с атакой IP address spoofing, направленной на подмену Source IP в IP-пакете. Включается функцию на основе порта и как только она включена, доступ на данный порт будет доступен только для IP-адреса соответствующего IP-адресу во внутренней таблице DHCP Snooping. Например,
1 2 3 4 5 6 |
ASW0# show ip dhcp snooping binding MacAddress IpAddress Lease(sec) Type VLAN Interface ------------------ --------------- ---------- ------------- ---- -------------------- 48:5B:39:D1:6D:C7 192.168.10.51 46436 dhcp-snooping 10 FastEthernet0/1 00:18:F3:8A:93:E6 192.168.10.47 46225 dhcp-snooping 10 FastEthernet0/2 Total number of bindings: 2 |
при данной таблице, злоумышленник не сможет действовать с порта FastEthernet0/1 под IP-адресом отличающимся от 192.168.10.51, так же как и злоумышленник находящийся за портом FastEthernet0/2 не сможет подменить свой IP-адрес на 192.168.10.51, ведь DHCP Snooping точно помнит, что такой IP-адрес есть только за портом FastEthernet0/1.
При этом есть возможность проверять на соответствие не только IP-адрес, но и MAC-адрес. Т.е. на порту FastEthernet0/1 коммутатор будет принимать входящие данные только от клиента с IP/MAC-адресами соответствующими таблице. Обычно, причины не использовать эту возможность отсутствуют.
Базовое включение данной опции на порте доступа запрещает использование статического IP-адреса за ним, ведь тогда информации о нём попросту будет отсутствовать в базе DHCP Snooping. Для решения данной проблемы есть вариант ручной привязки, выполнение которой так же будет представлено.
3.1. Постановка задачи
- включить функцию сверки пары IP/MAC на портах доступа FastEthernet 0/1 и 0/1;
- так как за портом FastEthernet 0/2 находится сетевой принтер со статическим IP-адресом, следует создать запись вручную.
3.2. Настройка
Включаем функцию
1 2 |
ASW0(config)# interface range FastEthernet 0/1 - 0/2 ASW0(config-if)# ip verify source port-security |
Добавляем ручную запись, где разрешим входящие пакеты на порт FastEthernet 0/2 от хоста с определённым IP/MAC-адресами, если сам интерфейс находится в VLAN 10
1 |
ASW0(config)# ip source binding 0022.15DA.B39C vlan 10 192.168.10.249 interface FastEthernet 0/2 |
3.3. Диагностика
После добавления запись не появится в таблице DHCP Snooping binding, поэтому для проверки успешности настройки следует использовать следующую команду
1 2 3 4 5 6 7 |
ASW0# show ip source binding MacAddress IpAddress Lease(sec) Type VLAN Interface ------------------ --------------- ---------- ------------- ---- -------------------- 00:22:15:DA:B3:9C 192.168.29.251 infinite static 10 FastEthernet0/2 48:5B:39:D1:6D:C7 192.168.10.51 46436 dhcp-snooping 10 FastEthernet0/1 00:C0:26:AB:A4:40 192.168.110.12 54792 dhcp-snooping 110 FastEthernet0/1 Total number of bindings: 3 |
4. Dynamic ARP Inspection
Несмотря на то, что мы уже защитились от большого количества угроз, наш мифический злоумышленник всё ещё может добавить к атаке IP-spoofing атаку ARP-spoofing и получить доступ к нашей локальной сети. Для борьбы с этим используется функция Dynamic ARP Inspection, работа которого заключается в следующем:
- Перехватывать все ARP-запросы и ответы на недоверенных портах;
- Проверять каждый перехваченный пакет на содержание легитимной пары IP/MAC перед тем как обновлять локальный ARP-кэш или перенаправлением в соответствующем направлении;
- Отбрасывать неправильные ARP-пакеты.
Работа функции основывается на всё той же базе DHCP Snooping binding и даёт следующие плюсы:
- защита от атаки ARP-spoofing, когда клиент порта доступа может иметь только один конкретный MAC-адрес, соответствующий данным таблицы DHCP Snooping binding;
- ограничить количество ARP-запросов в секунду, благодаря чему можно защитить коммутатор от переполнения ARP-таблицы;
- сгенерировать сообщение о отброшенных пакетах, что может помочь сетевому администратору предотвратить незаконные инспектирование и попытку доступа к сети.
Так как в таблице соответствия не может быть тех портов, которые мы пометили как DHCP Snooping Trust, то их же необходимо сделать доверенными для функционирования Dynamic ARP Inspection. Другими словами, порты являющиеся аплинком к прочему сетевому оборудованию необходимо помечать доверенными, так как базу MAC-адресов на нём вести накладно и бесполезно.
4.1. Постановка задачи
- ограничить функционирование Dynamic ARP Inspection только для VLAN 10 и 110;
- установить порт GigabitEthernet 0/1 как доверенный для Dynamic ARP Inspection;
- установить лимит ARP-пакетов на порте доступа FastEthernet 0/1 в значение 50, как достаточный для предпологаемого хоста (по умолчанию 15 для недоверенных портов и неограничен для доверенных);
- включить логирование событий отбрасывания пакетов.
4.2. Настройка
Явно укажем для каких VLAN использовать функцию
1 |
ASW0(config)# ip arp inspection vlan 10,110 |
установим аплинк к DSW0 как доверенный
1 2 |
ASW0(config)# interface GigabitEthernet 0/1 ASW0(config-if)# ip arp inspection trust |
ограничим количество ARP-пакетов в секунду на порте доступа
1 2 |
ASW0(config)# interface FastEthernet 0/1 ASW0(config-if)# ip arp inspection limit 50 |
Включить логирование
1 |
ASW0(config)# ip arp inspection vlan logging |
4.3. Диагностика
Проверка портов
1 2 3 4 5 |
show ip arp inspection interfaces Interface Trust State Rate (pps) Burst Interval --------------- ----------- ---------- -------------- Fa0/1 Untrusted 50 1 Gi0/1 Trusted None N/A |
FastEthernet0/1 – недоверенный и все ARP-пакеты свяше 50/сек будут отбрасываться.
GigabitEthernet0/1 – доверенный и не имеет ограничения по количеству пропускаемых ARP-пакетов в секунду.
Проверка по VLAN
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
show ip arp inspection Vlan Configuration Operation ACL Match Static ACL ---- ------------- --------- --------- ---------- 10 Enabled Active 110 Enabled Active Vlan ACL Logging DHCP Logging Probe Logging ---- ----------- ------------ ------------- 10 Deny Deny Off 110 Deny Deny Off Vlan Forwarded Dropped DHCP Drops ACL Drops ---- --------- ------- ---------- --------- 10 18 0 0 0 126 3 0 0 0 Vlan DHCP Permits ACL Permits Probe Permits Source MAC Failures ---- ------------ ----------- ------------- ------------------- 10 0 0 0 0 110 1 0 0 0 Vlan Dest MAC Failures IP Validation Failures Invalid Protocol Data ---- ----------------- ---------------------- --------------------- 10 0 0 0 110 0 0 0 |
Благодаря этой статистике можно увидеть что Dynamic ARP Inspection действительно включен для VLAN 10 и 110, а так же как много пакетов отброшено ( в данном выводе 0 пакетов).
Команда только для статистики по проверенным пакетам
1 |
show ip arp inspection statistics |
Посмотреть буфер логов об отбрасывании пакетов в рамках работы Dynamic ARP Inspection
1 2 3 4 5 |
show ip arp inspection log Total Log Buffer Size : 32 Syslog rate : 5 entries per 1 seconds. Smartlog is not enabled No entries in log buffer. |
5. Итоговая конфигурация ASW0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
! ip arp inspection vlan 10,110 ip dhcp snooping vlan 10,110 no ip dhcp snooping information option ip dhcp snooping ! interface GigabitEthernet0/1 description # UPLINK ON sr0 # switchport trunk allowed vlan 10,110 switchport mode trunk ip arp inspection trust ip dhcp snooping trust ! interface FastEthernet0/1 description # ACTIVE CLIENT PORT # switchport access vlan 10 switchport mode access switchport voice vlan 110 spanning-tree portfast ip verify source port-security ip dhcp snooping limit rate 10 ip arp inspection limit 50 ! interface FastEthernet0/2 description # NETWORK PRINTER # switchport access vlan 10 switchport mode access spanning-tree portfast ip verify source port-security ip arp inspection limit 50 ! ip source binding 0022.15DA.B39C vlan 10 192.168.10.249 interface FastEthernet 0/2 ! |
6. Источники
Configuring DHCP Features and IP Source Guard and Dynamic ARP Inspection on Catalyst 2960 and 2960-S Switches, Release 15.0(1)SE