DHCP snooping
Материал из Xgu.ru
- Автор: Наташа Самойленко
DHCP snooping — функция коммутатора, предназначенная для защиты от атак с использованием протокола DHCP. Например, атаки с подменой DHCP-сервера в сети или атаки DHCP starvation, которая заставляет DHCP-сервер выдать все существующие на сервере адреса злоумышленнику.
DHCP snooping регулирует только сообщения DHCP и не может повлиять напрямую на трафик пользователей или другие протоколы. Некоторые функции коммутаторов, не имеющие непосредственного отношения к DHCP, могут выполнять проверки на основании таблицы привязок DHCP snooping (DHCP snooping binding database). В их числе:
- Dynamic ARP Protection (Inspection) — проверка ARP-пакетов, направленная на борьбу с ARP-spoofing,
- IP Source Guard — выполняет проверку IP-адреса отправителя в IP-пакетах, предназначенная для борьбы с IP-spoofingом.
Содержание |
[править] Введение
DHCP snooping позволяет:
- защитить клиентов в сети от получения адреса от неавторизованного DHCP-сервера,
- регулировать какие сообщения протокола DHCP отбрасывать, какие перенаправлять и на какие порты.
Для правильной работы DHCP snooping, необходимо указать какие порты коммутатора будут доверенными (trusted), а какие — нет (untrusted, в дальнейшем — ненадёжными):
- Ненадёжные (Untrusted) — порты, к которым подключены клиенты. DHCP-ответы, приходящие с этих портов отбрасываются коммутатором. Для ненадёжных портов выполняется ряд проверок сообщений DHCP и создаётся база данных привязки DHCP (DHCP snooping binding database).
- Доверенные (Trusted) — порты коммутатора, к которым подключен другой коммутатор или DHCP-сервер. DHCP-пакеты полученные с доверенных портов не отбрасываются.
[править] Принципы работы DHCP snooping
По умолчанию коммутатор отбрасывает DHCP-пакет, который пришел на ненадёжный порт, если:
- Приходит одно из сообщений, которые отправляет DHCP-сервер (DHCPOFFER, DHCPACK, DHCPNAK или DHCPLEASEQUERY);
- Приходит сообщение DHCPRELEASE или DHCPDECLINE, в котором содержится MAC-адрес из базы данных привязки DHCP, но информация об интерфейсе в таблице не совпадает с интерфейсом, на котором был получен пакет;
- В пришедшем DHCP-пакете не совпадают MAC-адрес указанный в DHCP-запросе и MAC-адрес отправителя;
- Приходит DHCP-пакет, в котором есть опция 82.
[править] Пример топологии
Топология изображенная на рисунке не является рекомендацией, а служит демонстрацией того, какие порты коммутаторов указывать доверенными, а какие ненадёжными.
Настройки DHCP snooping на коммутаторах разных производителей выполняются для этой топологии (конфигурационные файлы коммутаторов в конце страницы).
Пояснения к рисунку:
- На коммутаторах sw1 и sw2 включен DHCP snooping;
- Порт 24 коммутатора sw1 и порт a1 коммутатора sw2 указаны доверенными, так как на ненадежных портах сообщения DHCP-сервера будут отбрасываться;
- Порт 24 коммутатора sw1 и порт a1 коммутатора sw2 указаны доверенными, так как коммутатор, на котором включен DHCP snooping будет перенаправлять DHCP-запросы только на доверенные порты.
[править] Порядок настройки
- Настройка и проверка работы DHCP-сервера и DHCP-ретранслятора без включенного DHCP snooping.
- Включение DHCP snooping. После включения DHCP snooping на коммутаторе и в соответствующих VLAN, все порты коммутатора по умолчанию считаются ненадёжными.
- Указание доверенных портов. Те порты к которым подключены коммутаторы и которые ведут к DHCP-серверу (или порты к которым сервер подключен) должны быть настроены как доверенные.
- Настройка политики обработки опции 82.
- (Опционально) Включение или выключение дополнительных проверок DHCP-сообщений.
После того, как DHCP snooping включен на коммутаторе, по мере выдачи адресов клиентам, начинает заполняться база данных привязки DHCP.
В базе данных привязки DHCP хранятся (информация хранится только о ненадёжных портах):
- MAC-адрес клиента
- Арендованный IP-адрес клиента
- Время аренды в секундах
- Идентификатор VLAN
- Идентификатор порта к которому присоединен клиент
[править] Использование опции 82
По умолчанию коммутатор на котором включен DHCP snooping, вставляет опцию 82 в DHCP-запросы. Коммутатор может изменять или вставлять опцию 82, даже если клиент и сервер находятся в одной подсети.
При вставке опции 82, коммутатор фактически вставляет два значения:
- Remote ID (MAC-адрес или IP-адрес коммутатора). Это значение можно настраивать;
- Circuit ID (порт с которого пришел запрос). Это значение не настраивается.
По умолчанию коммутатор, использующий DHCP snooping, обнаруживает и отбрасывает любой DHCP-запрос содержащий опцию 82, который он получил через ненадёжный порт. |
Этот режим стоит оставить, если коммутатор соединен с конечными клиентами. Получение запроса с опцией 82 от клиента будет говорит об атаке, которую коммутатор должен предотвратить.
Но если функция DHCP snooping включена на нескольких коммутаторах, которые соединены последовательно, то такое поведение по умолчанию, приведет к тому, что клиенты не смогут получить адрес по DHCP (если сервер находится через несколько коммутаторов).
В приведенной схеме такая проблема возникнет:
- Когда sw1 получает запрос от хоста, он проверяет его и, если все в порядке, отправляет дальше. Но при этом, в этот запрос вставляется опция 82
- sw2, при получении запроса на ненадёжном интерфейсе, опять выполняет проверки и, увидев опцию 82 в запросе, отбрасывает его
Есть три способа решения этой проблемы:
- Сделать порт a5 на коммутаторе sw2 доверенным
- Хотя тогда запросы от хостов и не будут проверяться, чаще всего, это не страшно, так как, все запросы клиентов уже были проверены на sw1
- Настроить варианты обработки опции 82 на sw2:
- Сохранить опцию 82 в пришедшем пакете
- Заменить опцию 82 в пришедшем пакете
- Отключить вставку опции 82 на sw1 (может быть не на всем оборудовании)
[править] Настройка DHCP snooping на коммутаторах ProCurve
Включить DHCP snooping:
sw2(config)# dhcp-snooping
Включить DHCP snooping в VLAN, которые должны быть защищены с его помощью:
sw2(config)# dhcp-snooping vlan 25
[править] Настройка доверенных и ненадёжных портов
По умолчанию на коммутаторе все порты ненадёжные, поэтому доверенные порты надо явным образом указывать.
Указать доверенные порты:
sw2(config)# dhcp-snooping trust a1
[править] Настройка авторизованного DHCP-сервера
После того как порт указан как доверенный, сообщения от любого DHCP-сервера, который подключен к этому порту передаются. Для того чтобы указать IP-адреса конкретных DHCP-серверов, которым разрешено работать в сети, необходимо настроить список авторизованных DHCP-серверов.
Максимальное количество DHCP-серверов в списке — 20.
(Опционально) Указать адрес авторизованного DHCP-сервера, доступного через доверенный порт:
sw2(config)# dhcp-snooping authorized-server 192.168.25.254
После указания авторизованных серверов коммутатор не будет отбрасывать сообщения DHCP-сервера, если выполняются оба условия:
- сообщение пришло на доверенный порт,
- адрес сервера указан с списке авторизованных DHCP-серверов.
[править] Проверка соответствия MAC-адресов
По умолчанию, после включения DHCP snooping, на коммутаторе включена проверка соответствия MAC-адресов. Коммутатор проверяет соответствие MAC-адреса в DHCP-запросе MAC-адресу клиента. Если они не соответствуют, то коммутатор отбрасывает пакет.
При необходимости можно отключить эту проверку:
switch(config)# no dhcp-snooping verify mac
[править] Настройка опции 82
С опцией 82 связаны две настройки:
- Настройка значения remote ID;
- Настройка политики обработки пакетов с опцией 82.
Настройка remote ID:
sw2(config)# dhcp-snooping option 82 remote-id [mac | subnet-ip | mgmt-ip]
Значения remote ID:
- mac — MAC-адрес коммутатора (значение по умолчанию);
- subnet-ip — IP-адрес VLAN, который получил DHCP-запрос;
- mgmt-ip — IP-адрес коммутатора.
Настройка политики обработки пакетов с опцией 82:
sw2(config)# dhcp-snooping option 82 untrusted-policy [drop | keep | replace]
Значения политики:
- drop — отбросить пакет;
- keep — коммутатор отправляет пакет с сохранением значения опции 82;
- replace — коммутатор отправляет пакет, но заменяет значение опции 82.
Отключить вставку опции 82:
switch(config)# no dhcp-snooping option 82
[править] Просмотр настроек и проверка работы DHCP snooping
Просмотр настроек DHCP snooping:
sw2(config)# show dhcp-snooping DHCP Snooping Information DHCP Snooping : Yes Enabled Vlans : 1 10 25 30 Verify MAC : Yes Option 82 untrusted policy : replace Option 82 Insertion : Yes Option 82 remote-id : mac Store lease database : Not configured Authorized Servers ------------------ 192.168.25.254 Port Trust ----- ----- A1 Yes A2 No A3 No A4 No A5 No .......
Просмотр статистики DHCP snooping:
sw2(config)# show dhcp-snooping stats Packet type Action Reason Count ----------- ------- ---------------------------- --------- server forward from trusted port 15 client forward to trusted port 9 server drop received on untrusted port 3 server drop unauthorized server 0 client drop destination on untrusted port 0 client drop untrusted option 82 field 13 client drop bad DHCP release request 0 client drop failed verify MAC check 0
Просмотр базы данных привязки DHCP для коммутатора sw2:
sw2(config)# show dhcp-snooping binding MacAddress IP VLAN Interface Time Left ------------- --------------- ---- --------- --------- 00163e-000101 192.168.10.10 10 A5 562 00163e-000103 192.168.30.10 30 A5 569
Просмотр базы данных привязки DHCP для коммутатора sw1:
sw1(config)# show dhcp-snooping binding MacAddress IP VLAN Interface Time Left ------------- --------------- ---- --------- --------- 00163e-000101 192.168.10.10 10 1 525 00163e-000103 192.168.30.10 30 7 532
[править] DHCP snooping и DHCP-ретранслятор
Настройки опции 82 с DHCP snooping перекрывают любые глобальные настройки указанные при настройке коммутатора для работы DHCP-ретранслятором.
Описание процедуры настройки коммутаторов ProCurve для работы DHCP-ретранслятором можно прочитать на странице Опция 82 DHCP.
Если DHCP snooping не настроен в VLAN, то для него применяются глобальные настройки.
[править] Поиск неисправностей
Включение debug:
sw2# debug dhcp-snooping [agent | event | packet]
В прошивках старше K.15
sw2# debug security dhcp-snooping [agent | event | packet]
Если необходимо вывести сообщения отладки в текущую сессию:
sw2# debug destination session
Если необходимо отправлять сообщения на log-сервер (log-сервер должен быть настроен командой logging <IP-адрес>):
sw2# debug destination logging
[править] Настройка DHCP snooping на коммутаторах Cisco
Включить DHCP snooping:
sw2(config)# ip dhcp snooping
Включить DHCP snooping в VLAN, которые должны быть защищены с его помощью:
sw2(config)# ip dhcp snooping vlan 10
|
После включения DHCP snooping в VLAN, коммутатор перестает отправлять DHCP-сообщения от клиента на все порты VLAN. Сообщения по-прежнему отправляются на широковещательный адрес, но теперь коммутатор будет передавать их только на доверенные порты, так как только на них может находиться DHCP-сервер. |
[править] Настройка доверенных и ненадёжных портов
По умолчанию на коммутаторе все порты ненадёжные, поэтому доверенные порты надо явным образом указывать.
Указать доверенные порты:
sw2(config)# interface fa 0/1 sw2(config-if)# ip dhcp snooping trust
(Опционально) Указать адрес авторизованного DHCP-сервера, доступного через доверенный порт:
sw2(config)#ip dhcp-server 10.84.168.253
По умолчанию, после включения DHCP snooping, на коммутаторе включена проверка соответствия MAC-адресов. Коммутатор проверяет соответствие MAC-адреса в DHCP-запросе MAC-адресу клиента. Если они не соответствуют, то коммутатор отбрасывает пакет.
При необходимости можно отключить эту проверку:
switch(config)# no ip dhcp snooping verify mac-address
[править] Добавление статических записей в базу данных привязки DHCP
Добавление статической записи в базу данных привязки DHCP:
sw2#ip dhcp snooping binding <mac-address> vlan <vid> <ip-address> interface <interface-id> expiry <seconds>
[править] Настройка опции 82
С опцией 82 связаны две настройки:
- Настройка значения remote ID;
- Настройка политики обработки пакетов с опцией 82.
Настройка remote ID (по умолчанию используется MAC-адрес коммутатора):
sw2(config)# ip dhcp snooping information option format remote-id [string ASCII-string | hostname]
Настройка политики обработки пакетов с опцией 82. Коммутатор не будет отбрасывать пакеты, в которых есть опция 82:
sw2(config)# ip dhcp snooping information option allow-untrusted
Отключить вставку опции 82:
switch(config)# no ip dhcp snooping information option
[править] Просмотр настроек и проверка работы DHCP snooping
Просмотр настроек DHCP snooping:
sw2# show ip dhcp snooping
Просмотр статистики DHCP snooping:
sw2# show ip dhcp snooping statistics
Просмотр базы данных привязки DHCP:
sw2# show ip dhcp snooping binding
[править] Конфигурационные файлы
[править] DHCP-сервер
Конфигурационный файл DHCP-сервера:
ddns-update-style none; default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 192.168.25.0 netmask 255.255.255.0 { range 192.168.25.200 192.168.25.220; option routers 192.168.25.254; } subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.10 192.168.10.15; option routers 192.168.10.1; } subnet 192.168.30.0 netmask 255.255.255.0 { range 192.168.30.10 192.168.30.15; option routers 192.168.30.1; }
[править] Коммутаторы ProCurve
Конфигурация sw1:
; J4906A Configuration Editor; Created on release #M.10.41 hostname "sw1" vlan 1 name "DEFAULT_VLAN" untagged 2-6,8-48 ip address dhcp-bootp no untagged 1,7 exit vlan 10 name "VLAN10" untagged 1 tagged 24 exit vlan 30 name "VLAN30" untagged 7 tagged 24 exit # Включение DHCP snooping dhcp-snooping # Включение DHCP snooping в VLAN'ах 1, 10, 30 dhcp-snooping vlan 1 10 30 # Настройка 24 порта доверенным interface 24 dhcp-snooping trust exit
Конфигурация sw2:
; J8697A Configuration Editor; Created on release #K.13.23 hostname "sw2" module 1 type J8705A interface A10 disable exit ip routing snmp-server community "public" Unrestricted vlan 1 name "DEFAULT_VLAN" untagged A2-A24 ip address dhcp-bootp no untagged A1 exit vlan 10 name "VLAN10" # По умолчанию на коммутаторе включен DHCP-ретранслятор. # ip helper-address указывает куда перенаправлять DHCP-запросы. # 192.168.25.254 — адрес DHCP-сервера. # Теперь все DHCP-запросы полученные в этом VLAN будут перенаправлены на адрес 192.168.25.254. ip helper-address 192.168.25.254 ip address 192.168.10.1 255.255.255.0 tagged A5 exit vlan 30 name "VLAN30" # ip helper-address указывает куда перенаправлять DHCP-запросы. ip helper-address 192.168.25.254 ip address 192.168.30.1 255.255.255.0 tagged A5 exit vlan 25 name "VLAN25" untagged A1 ip address 192.168.25.1 255.255.255.0 exit # Включение DHCP snooping dhcp-snooping # Задание адреса авторизованного DHCP-сервера dhcp-snooping authorized-server 192.168.25.254 # Настройка политики обработки опции 82. # Так как на коммутаторе sw1 включен DHCP snooping, # то на коммутатор sw2 DHCP-запросы приходят с опцией 82. # По умолчанию коммутатор такие пакеты отбрасывает. # Эта политика указывает, что опцию 82 в пришедших пакетах надо заменить. dhcp-snooping option 82 untrusted-policy replace # Включение DHCP snooping в VLAN'ах 1, 10, 25, 30 dhcp-snooping vlan 1 10 25 30 # Настройка порта a1 доверенным interface A1 dhcp-snooping trust exit
[править] Дополнительная информация
[править] Материалы по DHCP на Xgu.ru
- DHCP
- Опция 82 DHCP
- DHCP snooping
- Win2k3 DHCP
ProCurve | ||
---|---|---|
Основы | ProCurve Adaptive Edge | ProCurve ProActive Defense | ProCurve Network Access Control | ProCurve Wireless | |
Программы | ProCurve Manager | ProCurve Identity Driven Manager | ProCurve Network Immunity Manager | ProCurve Mobility Manager | |
Устройства | ProCurve Switch | ProCurve Router | ProCurve ONE Module | ProCurve TMS Module | ProCurve NAC 800 | ProCurve Access Point | ProCurve WESM | |
Настройка | ||
Безопасность | ProCurve Security | Доступ к коммутатору ProCurve | DHCP snooping | Dynamic ARP Protection | IP Source Guard | Port security | Аутентификация при доступе к сети | 802.1X в ProCurve | Web-аутентификация в ProCurve | MAC-аутентификация в ProCurve | |
Канальный уровень | CDP | LLDP | VLAN в ProCurve | GVRP | STP в ProCurve | ProCurve Mesh | Агрегирование каналов | Зеркалирование трафика | QinQ | |
Сетевой уровень | RIP в ProCurve | OSPF в ProCurve | VRRP в ProCurve | XRRP в ProCurve | QoS в ProCurve | Multicast в ProCurve | PIM в ProCurve | |
Разное | Опция 82 DHCP | SNMP в ProCurve |