понедельник, 19 августа 2013 г.

Отлавливаем в сети левые компы

  Есть локальная сеть. Несколько сотен компьютеров, серверов и прочего сетевого оборудования. Народ повадился таскать на работу свои ноутбуки, нетбуки и даже стационарные компьютеры. Со всеми своими неработающе-взломанными антивирусами и вирусами. Умники начали сами переустанавливать Windows. Это надо было прекратить.
  Решение проблемы в виде Network Access Protection (NAP), этой сети не грозило вследствие то ли занятости, то ли лени администраторов.
  Управляемых свичей - коммутаторов в этой сети были единицы. Поэтому точно отследить расположение постороннего компьютера часто было невозможно. А дыру прикрыть надо.
  Некоторое время не знал что делать. Но - эврика - однажды меня посетила гениальная мысль, как того древнего и продвинутого Архимеда.

  В этой сети адреса раздавались протоколом DHCP. Появился комп в сети. И тут же DHCP-сервер выдает ему IP-адрес, шлюз и прочие сетевые настройки.
  Возникла мысль в DHCP-сервере этим "левым" компьютерам выдавать неправильные настройки. Я решил, что если компьютер получит маску 255.255.255.255 и не получит шлюз, то от ЛВС он отсечен и никакой опасности он уже не представляет.
  Правда в отличие от вышеупомянутого полностью автоматического NAP-а, по моему способу поиск нелегитимного компьютера в сети приходится делать вручную. Я так и не придумал как это автоматизировать.
  Я просматриваю сетевое окружение в поисках компа с именем, который не соответствует стандартам в той организации. И написал на Линуксе скрипт, который опрашивает весь диапазон IP-адресов и составляет список вида "MAC-адрес IP-адрес Имя_компьютера_в_сети Группа_компьютера_в_сети". И опять же просматриваю его вручную в поисках подозрительных имен или IP-адресов, которые заняты, но имен устройств нет (такое бывает когда брандмауэр Windows включен и в нем запрещены все исключения)
  Второе препятствие, которое пришлось решать - изначально я планировал что эти левые настройки должен выдавать основной DHCP-сервер этой сети. Но по некоторым причинам пришлось развернуть дополнительный свой DHCP-сервер на подчиненном мне компьютере. Указав в настройках, чтобы он отдавал неправильную конфигурацию сети только строго определенным MAC-адресам, а остальных игнорировал. Чтобы два сервера не начали друг другу мешать. Была опасность, что "левый" компьютер успеет получить правильные настройки от основного сервера. Но в реальности оказалось, что мой DHCP-сервер всегда находил свою жертву.
  Ниже приведен файл настройки dhcpd.conf моего сервера. IP-адреса и маску подсети в нем я изменил от тех, что были реально использованы.

  subnet 10.0.0.0 netmask 255.255.255.0 {
    authoritative;

    deny unknown-clients;

    host host1 {
      hardware ethernet 20:30:40:50:60:70;
      option subnet-mask 255.255.255.255;
      fixed-address 10.0.0.249;
    }
 
    host host2 {
      hardware ethernet 21:31:41:51:61:71;
      option subnet-mask 255.255.255.255;
      fixed-address 10.0.0.250;
    }

  }

  Теперь осталось только ждать звонков клиентов с неработающей сетью.
  Небольшое примечание. DHCP-сервер я настраивал впервые, поспешно изучая руководства и "man dhcpd.conf" Поэтому вы можете настроить его лучше. Допустим несмотря на использование "deny unknown-clients;" сервер почему-то отсылал настройки всем. Именно поэтому пришлось "option subnet-mask 255.255.255.255" внести внутри host {}