Столкнулся с этим примерно 8 месяцев назад, проблему так и не решил. Иногда в разные промежутки времени один из клиентов подхватывает непонятные настройки сети, с другим DHCP сервером, но ИП подсеть 192.168.10.*** и DNS совпадает с моими настройками DHCP. Сколько я не мучился не нашел злоумышленника. Возникает по-разному иногда несколько месяцев все работает нормально, а иногда несколько раз в день. Этот DHCP не пингуется.
(12) Судя по правильному скрину у него отдельные устройства отвечают за маршрутизацию, выдачу адресов и ДНС сервера (один совмещен с DHCP). Это значит, что достаточно большой парк компьютеров и пользователей и кто-то из них включает устройство с альтернативным DHCP. Нужно вычислить его МАК адрес и забанить на роутере. А лучше вычислить и покарать.
(12) А по-поводу NetBios - скорее всего давно построенная сеть, где если его выключить, какое-то древнее устройство откажется работать в самый неподходящий момент. Хотя дыра, согласен, еще та.
(18) Ну тут пришлось для демонстрации включить и перенастроить старый роутер. В жизни все бывает. На одном заводе, было дело, при переезде в суматохе патчкордом две розетки соединили - весь сегмент штормило (коммутатор там тупой без STP был) ладно вдвоем работали, вот там да на 3 этажах все кабинеты обошли, зато потом все линки прокаталожили.
(21) Ага, там шеф любил в 15 играть: кадры к проходной, бухи на их место, конструкторов с технологами вместе посадить и к вечеру все уже должно быть сделано.
А причем тут вообще NetBIOS? Проблема в неавторизованном DHCP и она стара как мир. Никаких прав для этого не надо, а DHCP-сервером может оказаться практически любая коробка. Достаточно воткнуть ее в сеть.
Клиент по истечении аренды делает запрос и ему отвечает ближайший сервер. А так как протокол DHCP-прост и примитивен, то никаких защит от такого у него нет.
Выход, как правильно сказали выше, только один - снять дамп трафика в момент получения адреса и проанализировать его. Оттуда вытащить MAC левого сервера, потом по ARP-таблицам коммутаторов вычислить порт (если коммутаторы умные), найти и покарать. Затем опять таки смотреть по возможностям сетевого оборудования, если коммутаторы управляемые - то есть варианты. Если нет - покарать публично, чтобы иным было неповадно.
(26) Как это связано с проблемой автора? Вы вообще понимаете как работает протокол DHCP?
На моменте получения адреса система вообще ничего не знает о том, где она находится, в какой сети, она просто кидает широковещательный запрос "есть тут кто, кто выдаст мне адрес?". В ответ на него DHCP-сервер отвечает "Есть, могу дать такой адрес".
Проверить "наш" это сервер или "не наш" система никак не может и, если серверов несколько, принимает предложение того, кто ответит первым.
И только потом, получив адрес и настроив сетевой адаптер, система начинает запускать сетевые службы и "разбираться" куда она попала. Вы можете быть хоть в доменной сети, хоть в одноранговой, хоть с включенным NetBIOS, хоть с выключенным, на процесс получения адреса это никак не влияет и никак не способно защитить от левого DHCP-сервера.
При этом получение "неправильного" адреса ошибкой не является, с точки зрения протокола DHCP все штатно и хорошо.
т.е. я подключился витой парой в вашу сеть и работаю, да ?
Вы вообще понимаете о чем мы разговариваем?
После того как я воткну в сеть витую пару, то мое устройство, если в сети есть DHCP-сервер, получит от него IP-адрес. Без всяких лишних вопросов, паролей и СМС.
Если мое устройство само является DHCP-сервером - то оно сможет выдавать адреса другим компьютерам в этой сети. Достаточно просто воткнуть провод.
А вот что произойдет позже - это совершенно отдельный разговор. Там уже все зависит от того, какие ресурсы есть в этой сети и как настроен доступ к ним. Но к теме поднятой автором это не относится.
Я скажу вам больше, имея просто физический доступ к розетке я могу сделать вам много всяких гадостей. Совершенно бесплатно, без логинов, паролей.
Начну с коммутационной петли. Если розетка скоммутирована в тупой L2 - то ваша сеть ляжет через минуту максимум.
Потом есть хорошая игрушка - DHCP starvation - у вас резко закончатся адреса в пуле и вы будете долго искать куда они делись.
А уж если я могу подключить в вашу розетку свой DHCP-сервер, то тут вообще простор для деятельности, вплоть до реализации MitM, т.е. я смогу перехватывать и читать весь ваш трафик.
При этом я не администратор и не знаю никаких логинов и паролей. Просто мимо проходил, а тут розеточка...
Доступ куда? Вы сначала разберитесь для чего нужен этот "белый список". Если на L2 ваш роутер работает как тупой коммутатор, а он скорее всего так и работает, то никакой список не помешает мне шариться по вашей сети.
C:\>dhcdrop -D
Available interfaces:
1:\Device\NPF_GenericDialupAdapter
descr: Adapter for generic dialup and VPN capture
2:\Device\NPF_{0C796DB5-22D9-46AB-9301-9C7ADC2304AF}
descr: ZyXEL GN650 1000Base-T Adapter (Microsoft's Packet Scheduler)
iaddr: 192.168.1.2/24 bcast: 255.255.255.255
iaddr: 10.7.7.7/24 bcast: 255.255.255.255
Указываем номер или имя интерфейса, который смотрит в необходимую сеть
dhcdrop -i eth1
$ sudo dhcdrop -i eth1
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
К примеру, первым отозвался наш штатный DHCP сервер "00:16:09:D8:CF:60 You IP: 10.7.7.201/24", его не трогаем, жмем "n" и ищем следующий DHCP сервер.
Searching next server...
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 сервер "00:16:09:D8:CF:60 You IP: 192.168.1.2/24". Уже по MACу можем определить производителя и сузить круг поиска зловредна. Так же можем отключать поочередно сегменты сети и проверять утилитой, пропал зловредный DHCP или нет. И т.д. пока не найдем.
Если нет времени для поисков, а работать надо нормально, то переходим к грубой силе и просто выводим из строя зловредный DHCP. Для этого "съедаем" весь его пул выдаваемых адресов, фейковыми запросами.
Выводим из строя зловредный DHCP
Drop him? [y/n] y
1. Got BOOTREPLY (DHCPACK) for client ether: 00:16:09:D8:CF:60 You IP: 192.168.1.2/24
2. Got BOOTREPLY (DHCPACK) for client ether: 00:A2:FA:12:41:F7 You IP: 192.168.1.3/24
3. Got BOOTREPLY (DHCPACK) for client ether: 00:56:EA:F8:1C:B0 You IP: 192.168.1.4/24
4. Got BOOTREPLY (DHCPACK) for client ether: 00:EA:91:1A:C8:A8 You IP: 192.168.1.5/24
5. Got BOOTREPLY (DHCPACK) for client ether: 00:83:8A:25:C7:1C You IP: 192.168.1.6/24
6. Got BOOTREPLY (DHCPACK) for client ether: 00:CA:A7:FF:C1:70 You IP: 192.168.1.7/24
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Wait DHCPOFFER timeout. Resending DHCPDISCOVER.
Finished.
(35) Все делается гораздо проще, на том ПК, который получил адрес от левого сервера делаем ARP-запрос
arp -a
из которого узнаем MAC-адрес нужного устройства. По MAC уже можно вычислить производителя и сузить круг поисков.
А дальше все зависит от оборудования, если оно тупое - то только опытным путем, отключаем сегменты и смотрим есть в них работающий DHCP или нет.
Если оборудование умное - изучаем CAM-таблицы, которые содержат соответствие MAC-адреса порту коммутатора и спокойно разматываем клубочек. Но на умном оборудовании таких ситуаций не должно быть в принципе, так как практически все модели поддерживают DHCP snooping.
arp -a, такое себе решение.
Может сработает только тогда, когда вы поймаете выдачу от левого DHCP-сервера.
В ТЗ сказано, что это происходит не регулярно.
В моем решении нет необходимости "ждать у моря погоды".
Также есть вариант контр. действий.