Убиваем “незаконные” DHCP сервера в сети

Эта запись опубликована в рубрике [ Ubuntu ]

Давненько нашел дропалку DHCP-серверов, но никак не доходили руки до попробовать. Сегодня испытал в работе это дело. Переполняет запросами пул сервера и тот перестает отвечать. Сказочно.

Итак, расскажу об установке под Ubuntu.

Первым делом ставим необходимое для сборки dhcdrop:

$ sudo apt-get install build-essential automake libtool libpcap-dev

Теперь скачиваем последние исходники из svn:

$ svn co https://svn.codenet.ru/netpatch/dhcdrop/trunk/ /tmp/dhcdrop

Запускаем сборку:

$ cd /tmp/dhcdrop
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

Из официальной документации:

  • -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 адрес источника.

Простейший запуск:

$ sudo dhcdrop -i eth0

Найдет все DHCP-сервера и по порядку спросит чего с ними делать. Остальное можно прочитать на официальном сайте. Тем более, что он русский. :)

Постовые: оценка транспортных средств, подключение компьютера, студийная фотосъемка

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Post to Twitter Post to Delicious Post to Facebook Post to MySpace Post to Ping.fm

Оценить эту запись:
1 звезда2 звезды3 звезды4 звезды5 звезд
Метки: [ , , ]
Вы можете следить за ответами к этой записи через RSS 2.0 feed. Вы можете оставить мнение, или трэкбэк с собственного сайта.

3 комментариев(я)

  • 24.11.2009 14:45, fddima сказал:

    $ sudo make install

    И что никто не делает сборок пакетов?
    Некошерненько как-то инсталлить так.

    PS: Дома поставил Ubuntu 9.10 – в принципе юзабельно. :) Хотя есть ряд весьма серьёзных недостатков.

    • 24.11.2009 14:56, Silver Ghost сказал:

      Вроде никто не делает… Я не нашел, хотя и не особо искал, если честно…

      Если найду – выложу. :)

    • 27.12.2009 12:58, sensor_ua сказал:

      Вместо make install давненько рекомендуется использовать checkinstall. Утила checkinstall доставляется отдельно.

      (Обязательно)
      (Обязательно, не публикуется)