Найти dhcp сервер в сети - vicemultiplayer.ru

Содержание

Найти dhcp сервер в сети

dhcdrop — Поиск нелегальных DHCP серверов в сети.

Довольно часто в сети которая использует для настройки протокол DHCP возникает проблема с появлением нелегальных DHCP серверов. Часто причиной этого является пользователь который подключил кабель не в тот порт своего маршрутизатора или юный администратор, который пытается изучать сетевые технологии на практике. Однако, результат один и тот же, ваши клиенты/абоненты получив в аренду адрес от такого сервера не получат доступ в интернет.

Немного теории

При запросе к DHCP серверу, сервер выдает определенный ip адрес и закрепляет его за MAC адресом клиента. Это значит, что клиенту с таким MAC адресом может быть выдан только такой ip адрес. IP адрес резервируется сервером для клиента на определенное время и если по истечению этого периода клиент не запросил продление, ip адрес может быть выдан другому пользователю. На каждом домашнем роутере настроен определенный пул адресов — количество IP адресов которое может сервер выдать, обычно это от нескольких десятков до 2х сотен адресов. После того как все адреса в пуле зарезервированы, DHCP сервер игнорирует запросы клиентов.

Чем плохи ложные DHCP сервера?

Плохи они тем, что когда у клиента вашего сервера закончится время аренды ip адреса, он запросит в аренду новый ip адрес сформировав DHCP запрос (DHCPDISCOVER) используя случайный исходящий MAC адрес. Таким образом если первый сервер который выдаст в аренду ip адрес будет не ваш, а одного из пользователей, то все кто получит от него адреса не смогут получить доступ к интернету.

Как обезопасить сеть от ложных DHCP серверов?

Есть несколько способов борьбы с ложными серверами, блокировка на оборудовании доступа или программное обеспечение. Очень редко L2 коммутаторы имеют функции блокировки DHCP ответов. В этом случае нам понадобится программа dhcdrop, которая поможет нам бороться с поддельными серверами.

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

С полным списком функций программы вы можете ознакомится на официальном сайте проекта, а для текущей статьи нам понадобится всего несколько простых команд и небольшой скрипт(на сайте проекта можно загрузить приложение).

Исходя из документации мы имеем:

  • -q — тихий режим работы;
  • -t — режим теститрования;
  • -i — сетевой интерфейс;
  • -l — легальный сервер(указывать МАС адрес);

Режим тестирования нам нужен для того, чтоб программа не начинала автоматическое подавление сервера, нам это ни к чему, тихий режим, чтоб не сыпать в консоль сообщениями, так как у нас скрипт будет запускаться каждые 5 минут через планировщик задач.

Пример команды которую мы будем использовать:

dhcdrop -q -t -l f8:1a:67:14:7a:79 -i vlan10

Поскольку сеть в которой я работаю разбита на виртуальные подсети и каждый интерфейс подсети имеет имя vlanN, при помощи скрипта мы будем перебирать интерфейсы и для каждого запускать сканирование. Если же вам просто нужно просканировать на интерфейсе, просто пишете имя интерфейса(eth0,ix0 и т.п).

Сам скрипт выглядит следующим образом:

Сохраняем скрипт в формате .sh и добавляем в планировщик задач cron.

Алгоритм работы скрипта очень простой. Сначала мы считываем конфигурацию DHCP интерфейсов(интерфейсы на которых работает DHCP сервер), а далее для каждого интерфейса выполняем команду dhcdrop -q -t -i <имя интерфейса>-l f8:1a:67:14:7a:79 . Если программа завершается с кодом 200, что сигнализирует об присутствии нелегитимного DHCP сервера, отправляем email при помощи sendmail. Отправку почты не составит труда адаптировать под другой клиент. Нужно только поменять email адреса на реальные. Данный скрипт написан для FreeBSD и успешно используется на протяжении долгого времени.

Читать еще:  Как найти вирус без антивируса

Далее действуйте на ваше усмотрение, либо забейте весь пул адресов, либо просто отключите злоумышленника на оборудовании найдя его по МАС адресу.

DHCP RogueChecker – в хозяйстве пригодится

Недавно понадобилось перенести сервер DHCP с Windows 2003 Server на Windows Server 2008 (делается, кстати, очень просто, ниже скажу об этом пару слов). И вспомнил один случай, когда-то давно со мной приключившийся. Имя ему — Rogue DHCP Server.

Сначала обещанная пара слов о переносе DHCP сервера с Windows 2003 Server на Windows Server 2008. Я воспользовался самым простым в данном случае, на мой взгляд, способом. На старом сервере выполняем экспорт в файл:

На новом сервере добавляем роль DHCP server и импортируем:

Если развёрнута AD, удаляем старый сервер из авторизованных и авторизуем новый, сделать это можно из консоли управления DHCP или так:

Запускаем, проверяем, что всё работает :), удаляем со старого сервера роль DHCP.

Теперь о том давнем случае. Я тогда занимался администрированием небольшой сети, где-то не более сотни рабочих мест. Коллега попросил на несколько дней домой простенький Ethernet-роутер, оставшийся не у дел со времён, когда в компании насчитывался только с десяток компьютеров. Получив от меня роутер, довольный коллега удалился с ним в свой кабинет и решил ознакомиться с его возможностями прямо на месте. Для этого он сбросил настройки роутера к заводским, и не придумал ничего лучше, как подключить LAN-сегмент роутера в нашу корпоративную сеть.

Как известно, большинство недорогих SOHO роутеров поставляются со встроенным DHCP сервером, включенным по умолчанию. И получили мы в сети его — rogue DHCP server. Когда стали истекать сроки аренды, клиенты стали получать адреса от DHCP сервера роутера, и нормальная работа сети оказалась нарушена.

Фальшивый, или неавторизованный, DHCP сервер может появиться не только по ошибке. (Например, не очень опытный ИТ-сотрудник может установить в исследовательских целях непосредственно на рабочем месте софт, в том числе обладающий функцией DHCP сервера, или просто зачем-то включит имеющуюся в Windows функцию ICS.) Всё может быть намного серьёзней, rogue DHCP server может быть началом атаки типа «человек посередине». Поэтому в крупных и ответственных сетях с этим явлением надо бороться заранее, средствами систем IDS и с помощью высокоуровневых управляемых коммутаторов.

Описание таких методов выходит за рамки этой небольшой заметки, а здесь я опишу один из вариантов быстрого обнаружения «левых» DHCP серверов для небольшой или бюджетной сети. Метод всего один – периодически проверять наличие DHCP серверов в сети, отправляя запрос на получение адреса, и сверять ответившие серверы со списком известных «легальных» серверов.

Есть множество готовых утилит для этого, например dhcploc.exe непосредственно от Microsoft, Roadkil’s DHCP Find под Windows, dhcp_probe для UNIX и UNIX-like, Rogue Detect, написанный на Perl, и т. п. Но сегодня я хочу отметить маленькую утилиту RogueChecker от Subhash Badri, написана под Windows, с графическим интерфейсом.

Инсталляции не требует, после запуска открывает окно и создаёт значок в системном трее. В том числе RogueChecker может показывать авторизованные в AD серверы DHCP.

На второй вкладке можно выбрать интерфейсы и задать частоту поиска DHCP серверов.

После первого поиска все найденные DHCP серверы будут считаться неизвестными. Утилита не сверяет найденные серверы со списком авторизованных в AD. Сначала я счёл это недостатком, но потом пришёл к выводу, что всё правильно. Не составит труда отметить галочками правильные серверы, а независимый список авторизованных позволит обнаружить ситуацию, когда DHCP сервер уже не используется, но информация о его авторизации по-прежнему хранится в AD. Кстати, список авторизованных в AD серверов DHCP можно посмотреть, выполнив на сервере:

Список серверов, отмеченных как правильные, сохраняется в папке, откуда запущена программа, в файле с именем WellKnownServers.xml.

Значок в трее меняется, если обнаружен неизвестный DHCP сервер.

Обнаружение новых DHCP-серверов в локальной сети

Не подскажете, как можно заранее (до звонков пользователей 🙂 выявить появление в сети нового DHCP-сервера?

# dhcpcd -T ; cat /etc/dhcpc/dhcpcd-eth0.info

видит, только, валидный dhcpd, а нового сервера не видит.

P.S. Административные аспекты дрессуры пользователей, просьба, не предлагать. 🙂

Re: Обнаружение новых DHCP-серверов в локальной сети

Просканируй сеть tcpdumpom на предмет обнаружения открытых портов на которых работает dhcpd

Читать еще:  Как найти hosts на windows 7

Re: Обнаружение новых DHCP-серверов в локальной сети

> Просканируй сеть tcpdumpom

ты имел ввиду nmap ?

Проблема в том, что хостов очень много.

> tcpdumpom на предмет обнаружения открытых портов на которых работает dhcpd

Вывод «tcpdump udp» писать в файл накладно, а на:

# tcpdump -q udp | grep «bootps»

не могу навесить дополнительных фильтров, конвейер перестаёт выводить что-либо, вообще. 🙁

Re: Обнаружение новых DHCP-серверов в локальной сети

А разве на свитчах tcpdump ответы другим машинам от DHCPD выловит? Или у вас там хабы?

Re: Обнаружение новых DHCP-серверов в локальной сети

> А разве на свитчах tcpdump ответы другим машинам от DHCPD выловит? Или у вас там хабы?

Цепляйся на центральный коммутатор и выловишь что-нибудь 🙂

Re: Обнаружение новых DHCP-серверов в локальной сети

Я бы попробовал воткнуть сетевую карточку (которой валидный не даст адрес) и ждал бы пока она не получит IP.

Re: Обнаружение новых DHCP-серверов в локальной сети

Не нужно писать вывод tcpdump в файл слишком долго. Нужно включить tcpdump (вывод в файл, можно с фильтром), включить комп, когда комп получит адрес, выключить tcpdump. Посмотреть в файле какие сервера ответили на запрос адреса. Я думаю, что если в сети 3 dhcp сервера, то на один запрос ответят все 3, запросивший хост получит адрес от первого ответившего и будет использовать полученный от него адрес, но ответят все 3 сервера. Эти ответы и надо определить по содержимому файла.

Re: Обнаружение новых DHCP-серверов в локальной сети

Я хотел было повесить процесс на парсинг непрерывного конвейера

# tcpdump -lq udp 2>1 | grep «bootps >» | grep -v «[valid-dhcpd]»

который даёт захваченные ответы невалидных dhcp-серверов, с последующей обработкой полученного. Однако, упёрся в проблему отсутствия вывода непрерывного сложного конвейера 🙁

При всём этом, «разовый» сенсор, типа:

# tcpdump -lq -c 1000 udp 2>1 | grep «bootps >» | grep -v «[valid-dhcpd]»

,отрабатывает 1000 пакетов нормально, но не долго 🙂 , посему, есть высокая вероятность потери информации.

Есть какие-либо идеи, или это у меня уникальная проблема с «непрерывным конвейером»?

Re: Обнаружение новых DHCP-серверов в локальной сети

Или я дурак, или одно из двух. Почему бы не написать:
tcpdump -i eth0 -n udp and port 67 and src host ! 192.168.0.1 (IP валидного сервера)
Этот вывод не остановится до тех пор, пока не ломанут tcpdump 😉

Re: Обнаружение новых DHCP-серверов в локальной сети

дело не в том, что его ломанут, а в том, что в сети одновременно может быть несколько dhcp серверов, раздающих адреса, от какого адреса комп будет получать адрес — зависит от топологии сети. Т.е. некоторые компы будут получать в основном с одного, другие — с другого, или это может быть случано, — в зависимости от загрузки в данный момент серверов и сетевого оборудования.

Не нужно делать pipe для tcpdump, запись в файл чем не устраивает?

Re: Обнаружение новых DHCP-серверов в локальной сети

Видимо я плохо объяснил 🙁 Топология и загрузка сети не имеет значение. Важно, чтобы в точке прослушки tcpdump-ом был ВЕСЬ UDP трафик! Тогда предложенные мной (см. выше) опции tcpdump-а отобразят все ответы НЕвалидных DHCP серверов. Ни каких пайпов и файлов. Вывод будет идти на консоль. При желании его можно обрабатывать скриптом, например для отсылки SMS или просто почты.

Re: Обнаружение новых DHCP-серверов в локальной сети

# tcpdump -i eth0 -n udp and src port 67 and src host ! 192.168.0.1

> Ни каких пайпов и файлов. Вывод будет идти на консоль. При желании его можно обрабатывать скриптом, например для отсылки SMS или просто почты.

Может я сильно туплю под вечер.

Но, как без пайпов и файлов его обработать (можно пример, plz)?

Re: Обнаружение новых DHCP-серверов в локальной сети

Я знака ! в параметрах не заметил.)
Твой вариант правильный.

Re: Обнаружение новых DHCP-серверов в локальной сети

Да его не надо обрабатывать он будет выводить только ответы невалидных серверов. Если ничего не выводит, значит их нет.

Re: Обнаружение новых DHCP-серверов в локальной сети

> Если ничего не выводит, значит их нет.

> Да его не надо обрабатывать он будет выводить только ответы невалидных серверов.

Однако, мысль в том, чтоб повесить обработчик события. Например: popup, mail, sms или «arp — MAC — snmp — block_port», т.е., хотя бы частично, автоматизировать процесс 🙂

Re: Обнаружение новых DHCP-серверов в локальной сети

«Однако, мысль в том, чтоб повесить обработчик события. Например: popup, mail, sms или «arp — MAC — snmp — block_port», т.е., хотя бы частично, автоматизировать процесс 🙂 «

Читать еще:  Как найти вирус в браузере

Наверное, тогда вывод в файл с периодическим сканированием его содержимого на наличие новых записей с последуещей желаемой обработкой этих записей.

Re: Обнаружение новых DHCP-серверов в локальной сети

Re: Обнаружение новых DHCP-серверов в локальной сети

> Наверное, тогда вывод в файл с периодическим сканированием его содержимого на наличие новых записей с последуещей желаемой обработкой этих записей.

Угумс. Только, суть, как раз в том, что у меня есть проблемы с адекватной записью в файл или обработкой конвейером 🙁

Вот, я и пытаюсь выяснить, это только у меня так, или не только у меня. 😐

Re: Обнаружение новых DHCP-серверов в локальной сети

# tcpdump -i eth0 -n udp and src port 67 and src host ! 192.168.0.1 >

ничего не пишет в файл,

# tcpdump -i eth0 -n udp and src port 67 and src host ! 192.168.0.1 | cut -d» » -f2

. и так далее, ничего не выводит.

Re: Обнаружение новых DHCP-серверов в локальной сети

Так может у тебя и нет других dhcp серверов кроме того, что указан в команде. Вот и вывода нет.

Re: Обнаружение новых DHCP-серверов в локальной сети

> Так может у тебя и нет других dhcp серверов кроме того, что указан в команде. Вот и вывода нет.

Не надо так опошлять идею 😀 Их у меня три штуки. 🙂

# tcpdump -i eth0 -n udp and src port 67 >

ничего не пишет в файл (в смысле, с приемлемой синхронностью с событием),

# tcpdump -i eth0 -n udp and src port 67 | cut -d» » -f2

ничего не выводит (аналогично).

Не могу понять, откуда такая буферизация и как с ней бороться 🙁

У кого-нибудь эта проблема воспроизводится?

P.S. Собственно, вопрос в том, как победить буферизацию.

Re: Обнаружение новых DHCP-серверов в локальной сети

WebLampa

Освещаю, не отсвечивая))

Свежие записи

Находим чужие DHCP-серверы в сети.

Маршрутизаторы Mikrotik позволяют вычислить чужой, «левый», сторонний DHCP-сервер который находится в вашей сети и тем самым мешает вашим устройствам получать правильные IP-адреса. Такая ситуация может возникнуть, когда клиент, например, подсоединил свой домашний роутер не через WAN порт, а через LAN-порты, а ваша сеть не ориентированна на изоляцию клиента (VLANs, EoIP/VPLS Tunnels, Horizon Bridging/Private VLAN Edge (PVE)). Для этого в RouterOS существует настройка /ip dhcp-server alert:

Добавляем правило, с отсылкой на выполнения скрипта script1:

interface — интерфейс, на котором искать не легитимные DHCP-сервера;
valid-server — список МАС-адресов ваших легитимных DHCP-серверов;
alert-timeout — таймаут обнаружения чужих DHCP-серверов. Если параметр не заполнить (сделать не активным) — скрипт выполнится один раз при обнаружении. Это важный параметр, заполнять его нужно исходя из DHCP Lease Time вашей сети. Если у вас Lease Time стоит 12 часов, то alert-timeout можно сделать 1−2 часа. Вероятность того, что чужой сервер раздаст между этими периодами адреса минимальна. Если Lease Time то и alert-timeout нужно уменьшить. Но, если вы будете при обнаружении «левого» DHCP отправлять e-mail, то сильно уменьшенное время в alert-timeout приведет к спаму на ваше «мыло» до того момента, пока «левый» сервер не пропадет.
unknown-server — список МАС-адресов обнаруженных неизвестных серверов DHCP. Сервер будет удален из этого списка после тайм-аута.
on-alert — сценарий для запуска, если неизвестный сервер DHCP обнаружен;
reset-alert — не выведен в интерфейс WinBox, доступен с командной строки. Команда /ip dhcp alert reset-alert очищает список всех найденных «левых» DHCP-серверов.

В пункте Unknown Server видно MAC-адрес «левого» сервера. Alert Timeout стоит тестовые 10 секунд, обычно это значение у меня 1 час. Интерфейс может быть как реальный, так и бридж. Значение Valid Servers заполняем нашими легитимными DHCP-серверами, так как у меня он только один (мое текущее устройство), то заполняем MAC с нашего интерфейса.

/tool e-mail send server=10.10.10.10 port=25 user=admin@ya.ru password=111 111 start-tls=yes to=»admin@ya.ru» from=admin@ya.ru subject=(«DHCP Alert: Discovered unknown dhcp-server, RouterBoard identity: „.[/system identity get name]) body=»MikroTik have been detected unknown dhcp-server: nnIP: $address nInterface: $interface nMAC: quot;mac-address“»;
/log info «e-mail send unknown dhcp-server»

После появления в сети чужого DHCP-сервера раз в заданное время опроса скрипт будет выполнятся, в это время будут писаться записи в терминал и лог журнал:


Последняя запись в логе инициализированная скриптом. Ну и само письмо будет иметь такой вид:

Как видим в тему письма подтягиваются название роутера (идентификатор). А в тело — IP, интерфейс обнаружения и MAC-адрес чужого DHCP-сервера. Письма будут отсылаться через промежуток времени указанный в Alert Timeout, до того момента, пока DHCP-сервер не пропадет или вы его не найдете.

Ссылка на основную публикацию
Adblock
detector