fbsd-0.5-port.tar.bz2
fbsd-0.5_1.tbz
win32-0.5.zip
lin-0.5.tar.bz2
Исходные коды-0.5.tar.bz2
Поддерживаемые ОС:
При использовании в сети протокола DHCP и некотором недостатке управляемых коммутаторов с возможностью настройки фильтрации трафика, периодически возникает проблема с появлением ложных DHCP серверов. Обычно, причиной подобной проблемы является неграмотный пользователь, который неправильно подключил SOHO маршрутизатор к сети, либо очередное юное дарование, желающее заняться изучением телекоммуникационных технологий на практике. Так или иначе, но следствие одинакого - Ваши клиенты получившие конфигруационную информацию от подобного "вредителя", выбывают из нормальной работы в сети. В данной статье описана программа dhcdrop, позволяющая решить подобную проблему посредством подавления нелегальных DHCP серверов.
Кроме того, данная программа является хорошим диагностическим инструментом для проверки работоспособности DHCP серверов, а так же средством стресс-тестирования. Применение этой программы для каких-либо иных целей остаётся на Вашей совести
В протоколе DHCP определена опция, которая задает длительность аренды IP адреса (Lease time) - это время на которое DHCP сервер выдаёт IP адрес в пользование клиенту. По истечении этого временного интервала клиент должен выполнить попытку обновить IP адрес с целью продления аренды. Для сервера выдача IP адреса в аренду обозначает то, что за время аренды данный IP адрес может быть выдан только владельцу аренды и никому кроме него. Идентификация клиентов сервером производится на основании MAC адреса. Обычно, каждый сервер имеет пул динамических IP адресов, т.е. IP адресов которые не закреплены за конкретными MAC адресами и выдаются динамически по запросу любому клиенту. Пул на SOHO маршрутизаторах в конфигурации по умолчанию имеет небольшой размер - от нескольких десятков до 2х сотен адресов. В случае использования ПО, выполняющего роль DHCP сервера, величину пула определяет тот, кто настраивает. Если пул адресов исчерпан, то DHCP сервер игнорирует запросы от новых клиентов (возможно документируя это в логах) - т.е., фактически, бездействует.
Таким образом, в случае появления в сети ложных DHCP их можно нейтрализовать достаточно просто - необходимо получить аренду на все доступные на данном сервере IP адреса, каждый раз посылая запросы от уникальных клиентов. Чем больше время аренды в настройках сервера, тем на больший срок DHCP сервер оказывается нейтрализован в случае исчерпания динамического пула. Для большинства SOHO маршрутизаторов Lease Time исчисляется днями, или даже неделями. В случае использования в качестве DHCP сервера WinGate, dhcpd и прочего подобного софта, время зависит от фантазии человека который его настроил.
Программа открывает указанный в параметрах командной строки интерфейс в promiscuous режиме, формирует DHCP запрос (DHCPDISCOVER), используя случайный исходящий MAC адрес (если в параметрах не задано иное поведение), и отправляет его в интерфейс.
После чего переходит к ожиданию ответа (DHCPOFFER) сервера. Если получен ответ с предложением аренды IP адреса, то в интерфейс отправляется следующий DHCP запрос (DHCPREQUEST) на который сервер отвечает DHCPACK-пакетом подтверждающим возможность использования данного IP адреса клиентом. На этом операция получения аренды на предложенный сервером IP адрес завершена. Программа изменяет MAC адрес источника и вновь посылает DHCPDISCOVER, после чего все вышеуказанные операции по получению аренды нового IP адреса повторяются. Стоит обратить внимание что программа изменяет не только MAC адрес клиента в DHCP сообщении, но и MAC адрес в заголовке Ethernet-фрейма. Данная возможность максимально приближает работу программы к работе реального DHCP клиента (а так же позволяет обойти DHCP snooping).
Запуск без параметров:
Подробное описание команд:
-h
- показывает help-сообщение.
-D
- просмотр списка имён и индексов сетевых интерфейсов. Актуально в ОС Windows - см. пример ниже.
-t
- Режим теста. В этом режиме dhcdrop не выполняет подавление сервера. Производится лишь посылка DHCPDISCOVER, если на него приходит ответ нелегального сервера, то программа заверается возвращаяя код 200 и выводя на экран строку вида DHCP SRV: 10.7.7.1 (IP-hdr: 10.7.7.1) SRV ether: 00:02:44:75:77:E4, YIP: 10.7.7.205 содержащую минимум информации о создающем проблему DHCP сервере.
-y
- подразумевается ответ "yes" на любой вопрос программы.
-r
- отключает рандомизацию MAC адреса источника. Каждый последующий MAC адрес источника увеличивается на 1.
-b
- указывает на необходимость использования флага BROADCAST в отправляемых DHCP пакетах.
-a
- всегда ожидать ответа сервера на порт DHCP клиента по умолчанию (68), даже если задано значение номера порта клиента отличное от значения по умолчанию.
-A
- всегда ожидать ответа с порта DHCP сервера по умолчанию (67), даже если задано значение номера порта сервера отличное от значения по умолчанию.
-f
- режим флуда запросами DHCPDISCOVER. ПРИМЕНЯТЬ С ОСТОРОЖНОСТЬЮ. Удобен для стресс-тестирования сервера. В случае указания опции -r все отправляемые пакеты имеют одинаковый MAC адрес.
-R
- отправляет сообщение DHCPRELEASE с MAC адресом источника указанном при запуске программы и IP адресом указанным при помощи опции -F к серверу указанному опцией -s.
-q
- "тихий" режим работы. Выводится минимум информации.
-m count
- максимальное число попыток получения ответа от сервера.
-c count
- максимальное число адресов арендуемых у сервера.
-n hostname
- значение DHCP опции HostName (по умолчанию - "DHCP-dropper")
-N clientname
- значение DHCP опции Vendor-Class (по умолчанию - "DHCP-dropper")
-p port
- порт используемый клиентом для отправки DHCP сообщений. По умолчанию - 68.
-P port
- порт сервера, на который отправляются DHCP сообщения. По умолчанию - 67.
-w секунд
- задаёт таймаут рестарта процесса получения IP адресов в случае использования агрессивного режима. По умолчанию - 60 секунд.
-T timeout
- устанавливает таймаут ожидания ответа сервера (в секундах). По умолчанию - 3 секунды.
-M хостов-максимум
- максимально допустимое количество сканируемых хостов в случае использования агрессивного режима.
-l MAC-address
- Ethernet адрес сервера который необходимо игнориновать при выполненении поиска ложных DHCP серверов в сети. В этой опции следует указать адрес DHCP сервера ответственного за раздачу адресов в данном сегменте сети. Может быть указано несколько адресов - каждый должен предваряться ключом -l.
-L легальная-сеть
- указывает легальную IP подсеть для выбранного интерфейса. Использование этой опции автоматически включает агрессивный режим получения IP адресов. Может быть указано несколько сетей - каждая должна предваряться ключом -L. Подробное описание смотрите ниже.
-S сеть/маска
- ARP сканирование сети 'сеть' с использованием сетевой маски 'маска' в CIDR нотации. IP адрес источника задаётся опцией -F. Если IP адрес источника не задан - используется случайный адрес из диапазона указанной подсети. Пример использования смотрите ниже.
-F исходящий-IP-адрес
- указывает IP адрес источника для сканирования сети (опция -S), либо IP адрес DHCP клиента для отправки сообщения DHCPRELEASE (опция -R).
-s IP-адрес-сервера
- задаёт IP адрес DHCP сервера. Используется с опцией -R.
-C count
- число порождаемых процессов-потомков. Совместим только с флагом -f. Используется для увеличения числа отправляемых пакетов за единицу времени. При значении этого параметра равном 30, 10000 пакетов генерировалось менее чем за 1,5 секунды.
-i interface
- имя либо индекс сетевого интерфейса (см. ключ -D). Не может быть "any"! Единственный обязательный параметр программы.
initial MAC address - задаёт MAC адрес источника используемый при отправке первого DHCP сообщения, либо используемый постоянно, в случае использования опции -f
(flood) вместе с опцией -r
. Если не указан, то используется случайный MAC адрес источника.
Режим автоматического подавления всех серверов кроме легитимного
В случае если мы знаем (а обычно мы знаем) MAC адрес легального DHCP сервера в нашей сети, операцию подавления ложных серверов можно упростить:
В подобном варианте использования dhcdrop подавляет любой сервер кроме указанного опцией -l
сервера, не задавая дополнительных вопросов (благодаря использованию опции -y
).