DHCP snooping and so on

Внимательно прочитав данную статью вы ознакомитесь с понятием безопасности 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

dhcp-snooping_01

Итак, у нас наличии L3-коммутатор уровня распределения (DSW0), аплинком смотрящий в сторону ядра, за котором находится один из наших легальных DHCP-серверов, а даунлинки которого ведут к L2-коммутаторам уровня доступа (ASW0, ASW1, ASW2ASWn). В данной статье мы будет настраивать только коммутатор 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

Конфигурация порта FastEthernet 0/1

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-пакетов/сек

ограничим количество DHCP-пакетов в секунду на порте доступа

явно укажем для каких VLAN использовать функцию

отключим вставку опции 82

и включим функцию

2.1.4. Диагностика

Обратите внимание: функция включена, функционирует для VLAN 10 и 110, вставка 82 опции отключена, входящие пакеты с опцией 82 не допускаются. Тогда как интерфейс GigabitEthernet0/1 является доверенным, разрешает пакеты с опцией 82.

Спросите, почему количество отброшенных DHCP-пакетов превышает количество пропущенных? Для этого надо понимать, что без DHCP Snoopong, клиент отправляет тот же  DHCPDISCOVER на MAC-адрес “ffff:ffff:ffff” и IP-адрес “255.255.255.255”, поэтому пакет будет продублирован на ВСЕ порты устройства (принадлежащие тому же VLAN). Тогда как DHCP Snooping, при 24 портах и 1 аплинке, отбросит 23 пакета мечтающих выйти в свет через недоверенные порты, так как мы сами ему сказали: “Там рыбы нет”.

Это внутренняя база 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. Например,

при данной таблице, злоумышленник не сможет действовать с порта 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. Настройка

Включаем функцию

Добавляем ручную запись, где разрешим входящие пакеты на порт FastEthernet 0/2 от хоста с определённым IP/MAC-адресами, если сам интерфейс находится в VLAN 10

3.3. Диагностика

После добавления запись не появится в таблице DHCP Snooping binding, поэтому для проверки успешности настройки следует использовать следующую команду

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 использовать функцию

установим аплинк к DSW0 как доверенный

ограничим количество ARP-пакетов в секунду на порте доступа

Включить логирование

4.3. Диагностика

Проверка портов

FastEthernet0/1 – недоверенный и все ARP-пакеты свяше 50/сек будут отбрасываться.
GigabitEthernet0/1 – доверенный и не имеет ограничения по количеству пропускаемых ARP-пакетов в секунду.

Проверка по VLAN

Благодаря этой статистике можно увидеть что Dynamic ARP Inspection действительно включен для VLAN 10 и 110, а так же как много пакетов отброшено ( в данном выводе 0 пакетов).

Команда только для статистики по проверенным пакетам

Посмотреть буфер логов об отбрасывании пакетов в рамках работы Dynamic ARP Inspection

5. Итоговая конфигурация ASW0

6. Источники

Configuring DHCP Features and IP Source Guard and Dynamic ARP Inspection on Catalyst 2960 and 2960-S Switches, Release 15.0(1)SE

SHARE: Tweet about this on TwitterShare on FacebookShare on VKShare on LinkedInShare on Google+Email this to someone
  • Dmitry

    Port Security не проще вместо последних двух защит

    • Sk1f3r

      Если это был вопрос и вы имели ввиду switchport port-security, то это
      немного разные вещи. DHCP Snooping+ISG+DAI позволяет конечным хостам
      переключаться в другой физический порт и будет ругаться только на явные
      попытки spoofing. Тогда как Port Security требует явного/sticky указания
      какому/каким MAC-ам можно цепляться к порту, при этом ничего не зная о
      уровне IP. Они могут использоваться вместе и тогда хост будет обязан
      иметь конкретный MAC, получить IP посредством DHCP, не будет иметь права
      мануально изменить MAC/IP и в добавок будет ограничен по dhcp/arp rate
      limit. Добавьте dot1x по вкусу :)