В предыдущей статье мы рассмотрели техники атак на DHCP. Теперь поговорим о технологиях безопасности, предотвращающих атаки на DHCP.
Еще по теме: Истощение и подмена DHCP-сервера
Защита DHCP от атак
Защиту DHCP условно можно поделить на два вектора: защита от DHCP Starvation и защиту от DHCP Spoofing.
В большинстве своем предотвращение атак на DHCP-протокол берет на себя технология DHCP Snooping, а в качестве обязательного дополнения к ней стоит использовать Port Security. Обе технологии защиты DHCP применяются на коммутаторах.
Trusted- и Untrusted-порты
Забыть о внезапном появлении в сети поддельного сервера DHCP поможет концепция доверенных и недоверенных портов. Доверенный порт разрешает пересылку DHCP-сообщений от сервера. Поддельный DHCP-сервер не сможет предложить клиентам свои ложные параметры отправкой таких сообщений, если будет находиться за ненадежным портом.
Доверенные порты — это те, которые напрямую подключены к DHCP-серверу или которые «смотрят» в его сторону. Соответственно, недоверенные — это все остальные. В нашей лабораторной сети доверенным портом будет только один — G0/1.
После включения DHCP Snooping все порты по умолчанию становятся недоверенными. Поэтому нужно явно указать коммутатору доверенный порт. Но перед этим глобально включим DHCP Snooping и укажем, в каком VLAN она будет работать. Конфигурация коммутатора у меня по умолчанию и все порты принадлежат первому VLAN.
В качестве теста выключим наш DHCP-сервер, откажемся от выданного им адреса и попытаемся получить IP-адрес от поддельного DHCP-сервера.
Вот что происходит на атакующей машине: поддельный DHCP видит клиентские сообщения обнаружения и усердно пытается предложить свои ложные сетевые параметры, но клиент никак не реагирует на ответы.
А все потому, что коммутатор дропает сообщения DHCPOFFER на ненадежном порту, из‑за чего клиент и не видит ложное предложение.
Limit Rate
Еще одна очень полезная функция DHCP Snooping — ограничение на отправку DHCP-сообщений. Это ограничение допускает отправку через порт коммутатора определенного количества DHCP-трафика в секунду.
Чтобы задействовать эту возможность, выберем весь диапазон ненадежных портов и установим ограничение в десять пакетов в секунду. Cisco рекомендует использовать не более 100 пакетов в секунду, но для нашего тестового стенда хватит и десяти. Важно не урезать безобидный трафик от клиентов.
Снова время экспериментов: запустим DoS-рассылку сообщений DHCPDISCOVER и посмотрим, что будет происходить. Долго ждать не приходится: мгновенно прилетает консольный лог и уведомляет нас, что на порте F0/2 было получено десять DHCP-пакетов и порт переводится в состояние err-disable. Порт F0/2 упал. Далее требуется вмешательство администратора, чтобы восстановить работоспособность порта.
Limit Rate полезен тем, что не дает хакеру выполнить отказ в обслуживании или быстро «выжрать» пул адресов, отправляя большое количество DHCP-запросов.
Verify MAC-Address
Функция проверки MAC-адреса по умолчанию активна при включенном DHCP Snooping. Но если по каким‑то причинам она неактивна, то вот синтаксис для включения.
Я акцентировал внимание на поле CHADDR заголовка DHCP и MAC-адреса источника Ethernet-заголовка и говорил, что при нормальном взаимодействии клиента и сервера значения в этих полях идентичны. При включенной функции Verify MAC-Address коммутатор проверяет эти два поля и, если MAC-адреса различны, дропает их.
Кстати, для проверки MAC-адреса используются ресурсы центрального процессора маршрутизатора, что, конечно же, в разы медленнее, чем при обработке пакетов ASIC-микросхемами. При нормальной работе сети ощутимо это никак не сказывается, но давайте смоделируем такую ситуацию: была запущена атака на истощение DHCP, при которой генерируется огромное количество пакетов DHCPDISCOVER. Каждый из них будет проверяться процессором коммутатора на соответствие MAC-адресов.
В течение минуты после начала атаки центральный процессор коммутатора был загружен на 95% из‑за огромного количества пакетов DHCP, которые он должен обработать. Именно для предотвращения таких ситуаций и стоит применять функцию Limit Rate — порт просто уйдет в down, когда допустимое количество пакетов в секунду будет превышено.
Port Security
Последняя функция защиты коммутатора, о которой я хочу рассказать. Она не относится к технологии DHCP Snooping, но играет большую роль в защите сети от атак на DHCP-протокол.
Port Security позволяет указать MAC-адреса хостов, которым разрешено передавать данные через порт. Для проверки используется MAC-адрес источника в Ethernet-заголовке, и в результате будет принято решение о пропуске через порт.
Настроим все ненадежные порты на динамическое выучивание только одного MAC-адреса с сохранением их в текущую конфигурацию коммутатора. Режим реагирования на нарушение правил безопасности укажем shutdown — отключение порта. Но перед этим порты нужно перевести в режим Access.
Если же снова запустить флуд сообщениями DHCPDISCOVER, где в каждом Ethernet-кадре значение MAC-адреса источника будет уникальным, то порт мгновенно перейдет в режим err-disable (прямо как при Limit Rate), так как будет нарушено созданное нами правило запоминания только одного разрешенного MAC-адреса на порте коммутатора.
Можно посмотреть таблицу, которую ведет коммутатор, где отображено соответствие заученных MAC-адресов на каждом интерфейсе.
Истощить DHCP-сервер, изменяя MAC-адрес сетевой платы, не представляет труда для хакера. Да, достаточно долго, но результативно. А при включенной защите порта на коммутаторе такая тактика будет обречена на провал.
Описанные в статье технологии защиты сети от атак на протокол DHCP по отдельности не становятся непреодолимой стеной для атакующего. Поэтому именно их комплексное применение даст должную защиту DHCP.
ПОЛЕЗНЫЕ ССЫЛКИ:
Отличная статья. Правда мало написано про Verify MAC-Address.
При включенной опции Verify MAC-Address коммутатор проверяет в проходящем через него пакете DHCP Request поле chaddr (Client Hardware Address) с mac-адресом источника кадра. Если они отличаются, то коммутатор отбрасывает такой пакет. Сначала не понял, от какой атаки может защитить эта опция, т.к. в кадре не запрещено указывать любой mac-адрес источника и любые данные.
Эта опция по сути спасает от компьютера с вредоносным ПО, подключенного к порту. Любому прогеру не составляет труда написать программу, которая формирует DHCP пакеты и отправляет в сеть, но присвоить отправляемым кадрам разный mac-адрес может составить большую проблему. Для этого нужно программно уметь менять mac-адрес сетевого адаптера. Вот здесь хакеру придется попыхтеть. В сети вроде есть рабочий программный способ смены mac-адреса, но сам не интересовался и не проверял.