Документация по ОС FreeBSD
Суббота, 15.11.2025, 18:22
Главная
Регистрация
Вход
Приветствую Вас
Гость
|
RSS
Меню сайта
Главная страница
Новости в мире Unix
NEW
Каталог файлов
NEW
Установка и настройка
Ports & Packages
cvs
Безопасность
Работа с железом
X Window
Multimedia
Man pages
Net
Apache
DNS
FTP
Mail
Samba
Squid
SSH
VPN
РРР
Shell
IPFW
Tips'n'tricks
RFC
Книги по FreeBSD
Темы экзамена BSDA
Гостевая книга
Форум на bsdportal.ru
Каталог сайтов
Самый свежий софт
Каталог ссылок
Категории каталога
Apache
[58]
DNS
[25]
FTP
[27]
Mail
[74]
Samba
[24]
Squid
[46]
SSH
[23]
VPN
[35]
РРР
[20]
Net
[173]
Главная
»
Статьи
»
Сеть
»
Net
Dhcdrop - блокировка сторонних DHCP-серверов в сети [2012]
DHCP
(
Dynamic Host Configuration Protocol
— протокол динамической конфигурации узла) — это сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP.
Чтобы не говорили, а использование автоматического назначения IP-адресации в сети намного упрощает жизнь и администратору, и конечному пользователю. Однако, при эксплуатации такой сети, можно столкнуться с появлением в сети сторонних DHCP-серверов (маршрутизатор, включенный в сеть LAN-портом; сетевые устройства в режиме моста; DHCP-сервер на компьютере абонента и тд.). В случае, когда сеть построена на управляемых коммутаторах, бороться с этим явлением довольно просто - с помощью ACL. А что делать, если сеть построена на неуправляемых коммутаторах? Как блокировать работу сторонних DHCP-серверов без ущерба для работы сети и не "мешая" основному DHCP-серверу?
Одним из наиболее действенных инструментов выступает программа dhcdrop. Она обеспечивает поиск сторонних DHCP-серверов и их подавление путем исчерпания пула IP-адресов (DHCP starvation). Более подробная информация -
на сайте проекта
.
Что радует - так это то, что dhcdrop есть в портах. Выполним установку:
# cd /usr/ports/net-mgmt/dhcdrop && make install clean && rehash
По завершению установки советую обратиться к страницам man-руководства... Ознакомимся со списком доступных опций (свои комментарии выделил красным):
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 - максимальное число попыток получения ответа от сервера. (по умолчанию 255, в редких случаях необходимо увеличивать)
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 адрес источника.
Отметим также коды выхода программы (надеюсь, что все читатели "дружат" с английским языком):
0 - Exit success. Illegal DHCP server not found.
10 - invalid user ID. You must be root for running programm.
20 - failed to set signal handler.
30 - configuration error. See usage.
40 - memory allocation error. Insufficient memory?
50 - error opening ethernet device.
51 - error listing devices.
60 - pcap filter overflow.
70 - pcap compile error.
80 - pcap set filter error.
90 - error sending packet.
100 - error getting packet.
110 - set non blocked mode error.
120 - invalid device.
200 - illegal DHCP server was found.
Соответственно, подберем следующие ключи для запуска dhcdrop на интерфейсе vlan51:
# dhcdrop -y -r -m 3 fe:fe:fe:fe:fe:00 -l 00:0b:cd:68:78:cc -i vlan51
Здесь:
00:0b:cd:68:78:cc - MAC-адрес легитимного DHCP-сервера.
vlan51 - интерфейс FreeBSD-сервера, который "смотрит" в сеть с посторонним DHCP-сервером
Пример работы dhcdrop:
# dhcdrop -y -r -m 3 fe:fe:fe:fe:fe:00 -l 00:0b:cd:68:78:cc -i vlan51
Using interface: 'vlan51'
Got response from server 192.168.85.65 (IP-header 192.168.85.65), server ethernet address: B0:48:7A:F0:47:1C, lease time: 0.083h (300s)
Got BOOTREPLY (DHCPOFFER) for client ether: FE:FE:FE:FE:FE:00 You IP: 192.168.85.68/26
1. Got BOOTREPLY (DHCPACK) for client ether: FE:FE:FE:FE:FE:00 You IP: 192.168.85.68/26
2. Got BOOTREPLY (DHCPACK) for client ether: FE:FE:FE:FE:FE:01 You IP: 192.168.85.69/26
3. Got BOOTREPLY (DHCPACK) for client ether: FE:FE:FE:FE:FE:02 You IP: 192.168.85.70/26
4. Got BOOTREPLY (DHCPACK) for client ether: FE:FE:FE:FE:FE:03 You IP: 192.168.85.71/26
5. Got BOOTREPLY (DHCPACK) for client ether: FE:FE:FE:FE:FE:04 You IP: 192.168.85.72/26
Interrupted. Quit.
Также стоит отметить некоторые моменты работы с dhcdrop:
в режиме флуда (флаг -f) программа не выбирает адреса из пула сервера, а просто "валит" сеть паразитным трафиком
если запустить программу с числом запросов 1200 (например на час), то обнаруженный сервер будет подавлен только один раз. Особенностью встроенных в аппаратные роутеры DHCP-серверов является их автоматическое очищение пула адресов и восстановление работоспособности через определенный интервал времени. Очевидно, что нужно часто перезапускать программу
Итак, проблема восстановления работоспособности нелегальных серверов так и не решена. Как вариант - запуск dhcdrop с определенной периодичностью, используя cron. Однако более удобно использовать следующий скрипт:
#!/bin/sh
DATE="/bin/date"
LOGDIR="/var/log/dhcdrop/"
LEGAL_SERVERS="00:0b:cd:68:78:cc" # Legal DHCP Servers, space separated mac address
DROPPER="/usr/local/sbin/dhcdrop"IFNAME="vlan50 vlan51 vlan52" # Interfaces on our Router, space separated
TESTPARAMS="-t -m 3"
PARAMS="-y -r -m 3 fe:fe:fe:fe:fe:00"# Lets Go!
# legal params
for mac in ${LEGAL_SERVERS}; do
LMAC="${LMAC} -l ${mac}"
done
# Discovering on every interface
for IF in ${IFNAME}; do
echo "Processing interface ${IF}"
# test to any DHCP-Server
${DROPPER} -i ${IF} ${LMAC} ${TESTPARAMS} # Check for status 200
if [ $? = 200 ]; then
echo "Illegal server found on ${IF}! Dropping him!"
${DATE} >> ${LOGDIR}${IF}
${DROPPER} ${PARAMS} ${LMAC} -i ${IF} >> ${LOGDIR}${IF}
else
echo "Illegal server not found on ${IF}."
fi
done
echo "All done"
Для корректной работы скрипта необходимо создать каталог, куда будут писаться логи:
# mkdir /var/log/dhcdrop
После этого добавим в cron запуск скрипта каждые 10 минут. У меня путь к скрипту /usr/local/etc/dhcdrop.sh, соответственно:
# echo '# DHCDROP' >> /etc/crontab
# echo '*/10 * * * * root /bin/sh /usr/local/etc/dhcdrop.sh > /dev/null 2>&1' >> /etc/crontab
После этого "забываем" о сторонних DHCP-серверах в неуправляемых сегментах сети. Однако, у злоумышленника еще остаются некоторые лазейки:
увеличить пул выдаваемых адресов больше 255 - в таком случае необходимо будет установить переменную PARAMS в значение, например, "-y -r -m 3 -с 4096 fe:fe:fe:fe:fe:00". Значение ключа необходимо подобрать опытным путем.
установить короткое время лизинга IP-адресов (до 1-2 минут). Тогда dhcdrop будет постоянно уходить в цикл.
Источник:
http://muff.kiev.ua/content/dhcdrop-blokirovka-storonnikh-dhcp-serverov-v-seti
Категория:
Net
| Добавил:
oleg
(13.05.2012) | Автор:
muff
Просмотров:
2852
| Рейтинг:
1.0
/
1
|
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Всего комментариев:
0
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация
|
Вход
]
Форма входа
Друзья сайта
Google+
Copyright MyCorp © 2025