Многие системные администраторы периодически сталкиваются с неприятной ситуацией: один или несколько клиентов в локальной сети внезапно получают неправильные настройки сети (IP-адрес из другой подсети, левые шлюзы и DNS). Это приводит к потере доступа к интернету и внутренним ресурсам. Причиной такого сбоя является появление в сети несанкционированного, так называемого Rogue DHCP-сервера. Чаще всего им оказывается принесенный кем-то из сотрудников домашний роутер, случайно воткнутый LAN-портом в рабочую розетку. Разберем по шагам, почему это происходит и как мы можем вычислить и обезвредить нарушителя.
Для начала выясним причину, почему компьютеры вообще принимают настройки от чужого устройства. На моменте получения адреса операционная система ничего не знает о том, где она находится и в какой сети работает. Процесс выглядит следующим образом:
DHCPDISCOVER на UDP-порт 67 с посылом: «Есть тут кто-нибудь, кто выдаст мне IP-адрес?».DHCPOFFER: «Да, есть, предлагаю такие-то настройки».В результате, если «левый» роутер оказался физически ближе к клиенту или ответил быстрее корпоративного сервера, компьютер получит неправильные настройки. Более того, наличие такого устройства открывает дыру в безопасности: злоумышленник может реализовать атаки типа Man-in-the-Middle (MitM) или устроить DHCP starvation (истощение пула адресов).
Если проблема возникает нерегулярно, лучшим способом будет поймать нарушителя с поличным в момент выдачи адреса. Для этого нам понадобятся анализаторы трафика, такие как Wireshark или TcpDump.
Настроим прослушивание сети на проблемном компьютере или на отзеркаленном порту коммутатора. В Wireshark необходимо установить фильтр на udp.port == 67 || udp.port == 68. Когда компьютер отправит запрос на получение адреса, мы увидим все ответы DHCPOFFER. В пакете от ложного сервера мы сможем посмотреть MAC-адрес устройства, выдавшего неверный IP. По первым октетам MAC-адреса легко определить вендора (производителя) устройства — это сузит круг поисков (например, мы узнаем, что ищем роутер D-Link или TP-Link).
Если нет времени ждать или разворачивать Wireshark, воспользуемся специализированной кроссплатформенной утилитой dhcdrop. Она позволяет не только найти, но и подавить работу мешающего DHCP-сервера.
Рассмотрим процесс работы с утилитой. Сначала определим доступные сетевые интерфейсы, выполнив команду:
dhcdrop -D
Система выведет список интерфейсов. Выберем тот, который смотрит в проблемную сеть. Затем запустим поиск DHCP-серверов. Если мы работаем в Linux, команда будет выглядеть так:
sudo dhcdrop -i eth1
Проанализируем вывод утилиты. Программа отправляет тестовые запросы и собирает ответы от всех DHCP-серверов в сегменте:
Using interface: 'eth1'
Got response from server 10.7.7.1 (IP-header 10.7.7.1), server ethernet address: 00:02:44:75:77:E4, lease time: 1.1h (3960s)
Got BOOTREPLY (DHCPOFFER) for client ether: 00:16:09:D8:CF:60 You IP: 10.7.7.201/24
Drop him? [y/n] n
Программа нашла наш легитимный сервер и спрашивает, нужно ли его подавить. Нажимаем n (нет) и продолжаем поиск. Вскоре утилита находит второго респондента:
Searching next server...
Got response from server 192.168.1.1 (IP-header 192.168.1.1), server ethernet address: 00:1E:2A:52:C8:CA, lease time: 24h (86400s)
Got BOOTREPLY (DHCPOFFER) for client ether: 00:16:09:D8:CF:60 You IP: 192.168.1.2/24
Drop him? [y/n] y
Мы нашли зловредный DHCP-сервер (он предлагает адрес 192.168.1.2). Если у нас нет времени физически искать порт, нажимаем y. Утилита перейдет к грубой силе: она начнет бомбардировать нелегальный роутер фейковыми запросами от разных MAC-адресов, тем самым «съедая» весь его пул выдаваемых адресов (DHCP Starvation). Как только его пул иссякнет, он перестанет отвечать клиентам, и сеть снова заработает нормально.
После того как мы узнали MAC-адрес вредителя (через Wireshark, dhcdrop или просто посмотрев ARP-таблицу командой arp -a на ПК с левым IP), нам нужно найти, куда именно он подключен. Разберем действия в зависимости от оборудования:
dhcdrop, пропал зловредный сервер или нет.Чтобы подобные проблемы больше не возникали, мы должны внедрить технологии защиты на уровне коммутаторов доступа (при наличии умного оборудования).
DHCPOFFER, приходящие с других (untrusted) портов, коммутатор будет просто отбрасывать.Используя комплексный подход — от быстрого поиска скриптами Nmap или PowerShell, до аппаратных ограничений на портах коммутаторов — мы сможем полностью исключить влияние пользовательского оборудования на работоспособность корпоративной сети.