Речь в данной статье пойдет не о простом DHCP (Dynamic Host Protocol) сервере, как вы могли подумать, прочитав название статьи, а о немного более функциональной программе. Надеюсь, Вам будет интересно. Итак, начнем с сути проблемы.
В локальных сетях часто возникает проблема распределения адресов. Многие люди пытаются получить неправильные или просто понравившиеся адреса. Если эти адреса в данное время не заняты (компьютеры-владельцы выключены), то им это удается, и настоящий владелец не может получить свой адрес. Таким образом, могут пострадать многие сетевые сервисы, так как адресация происходит именно по IP. Большинство брандмауэров также работает на уровне IP адресов, то есть произойдет подмена компьютеров, и защитные правила не будут работать для конкретной машины.
Например, одно время на форуме bugtraq.ru была очень популярна тема, в которой автор спрашивал, как "спастись" от пользователей, которые меняют одновременно IP и MAC адрес и получают несанкционированный доступ к 1С бухгалтерии. Так как же спастись?
Справочная информация:
МАС (Media Access Control) адрес, 48-битное число,- физический сетевой адрес, заданный аппаратным образом. IP (Internet Protocol) адрес, 32-битное число,- логический сетевой адрес, заданный администратором сети или самим пользователем. |
Справочная информация:
Протокол ARP (Address Resolution Protocol) |
Отправитель пакета определяет МАС адрес получателя, посылая широковещательный запрос по протоколу ARP. Давайте рассмотрим ARP запрос.
Типичный пакет ARP запроса
Адрес получателя: FF:FF:FF:FF:FF:FF (широковещательный) Адрес отправителя: 00:01:02:75:93:33 Тип содержимого пакета: ARP 08-06 Тип оборудования: Тип протокола: IP 00-08, Ethernet 00-01 Длина МАС и IP адресов в битах: 06 и 04 Код операции: ARP запрос 01 Аппаратный адрес отправителя: 00:01:02:75:93:33 Адрес протокола отправителя: 192.168.200.1 (IP-адрес) Аппаратный адрес цели: 00:00:00:00:00:00 (неизвестен) Адрес протокола цели: 192.168.200.4 (искомый IP) Обрамление пакета: 18 байт (Windows) |
И что же мы видим? Пакет рассылается широковещательно! Компьютер как будто спрашивает всю сеть, кто имеет нужный IP (логический) адрес, вышлите свой MAC (аппаратный) адрес. Машина в сети, которая считает, что она имеет соответствующий IP адрес, посылает ARP отклик со своим МАС адресом. Рассмотрим ARP ответ.
Типичный пакет ARP ответа
Адрес получателя: 00:60:97:8F:93:5D Адрес отправителя: 00:01:02:75:93:33 Тип содержимого пакета: ARP 08-06 Тип оборудования: Тип протокола: IP 00-08, Ethernet 00-01 Длина МАС и IP адресов в битах: 06 и 04 Код операции: ARP ответ 02 Аппаратный адрес отправителя: 00:01:02:75:93:33 Адрес протокола отправителя: 192.168.200.1 (IP-адрес) Аппаратный адрес цели: 00:60:97:8F:93:5D Адрес протокола цели: 192.168.200.60 Обрамление пакета: 18 байт (Windows) |
ARP ответ сообщает запрашивающему МАС адрес,
соответствующий IP адресу запроса.
Примерно такой же ARP запрос
посылается, когда компьютер включает сетевой адаптер. Посылается
"беспричинный" ARP, который настраивает коммутаторы для пропуска
нужных отправителю пакетов, а также проверяет уникальность
запрашиваемого IP адреса в сегменте сети.
Справочная информация:
Коммутаторы используют аппаратные (МАС) адреса получателей для отправки пакетов в нужные порты. | |
Концентраторы просто передают весь трафик по всем портам. |
В пакете совпадают IP адреса отправителя и получателя, он также широковещательный. Если в сети уже есть компьютер, настроенный на использование запрашиваемого адреса, то он воспринимает "беспричинный" ARP как обычный ARP запрос и посылает ARP ответ, в котором указывает свой МАС адрес. Включившийся компьютер не ожидает получения ответа, а если получает, то мы видим:
На самом деле, у нас есть возможность программно генерировать подобные ARP ответы и не пускать компьютер в сеть, то есть якобы присвоить себе все адреса сети. По каким критериям мы можем не давать или давать получить адрес? Посмотрим на ARP запрос. Ага, нам предоставляется только МАС адрес, а поскольку его можно легко подделать этот параметр является недостаточным.
На помощь нам приходит протокол DHCP. Он позволяет получить большее количество параметров конфигурации от клиента и уже по ним сделать выбор: пускать или не пускать в сеть.
Справочная информация:
DHCP (Dynamic Host Configuration Protocol) протокол
динамической настройки сети системы, клиент для этого
протокола существует во всех современных ОС. |
DHCP действует так: сначала клиент посылает широковещательное
сообщение DHCP Discover, в котором определяет желаемые параметры
инициализации сети. Сервер (или несколько) отвечает DHCP Offer, где
предлагает параметры инициализации, затем клиент принимает параметры
и отвечает сообщением DHCP Request. Процесс завершается сообщением
сервера DHCP Ack. Существуют еще другие типы сообщений, но подробное
описание протокола DHCP выходит за рамки данной
статьи.
Рассмотрим поле опций сообщения DHCP Discover, какие
параметры мы можем получить из него?
Поле опций DHCP Discover
Magic Cookie: 63-82-53-63 (идентификатор
опций) Тип сообщения(35): DHCPDISCOVER(01)(1 байт) Windows расширение(74):DHCPDISCOVER(01)(1 байт) Идентификатор клиента(3D):01-00-0С-6E-CD-B7-DF(7 байт)(MAC) Имя компьютера(0С):Sophia(6 байт) Имя производителя(3C): MSFT 5.07 -> Windows XP without SP1 Запрос параметров у сервера(37): Параметры(11 байт) Код окончания посылки(FF):1 байт Обрамление пакета: 13 байт (Windows) |
Ну вот, уже намного больше параметров. Здесь мы можем использовать не только МАС адрес, а имя компьютера и тип операционной системы, также возможны манипуляции с идентификатором клиента.
По этому принципу я и решил сделать программу, так как не нашел подобных разработок. Рабочее название системы - SecureDHCP.
Это DHCP сервер с возможностью контроля
выделения статических адресов по МАС адресу и времени входа
в сеть.
Динамические адреса выделяются по МАС адресу, имени компьютера,
типу операционной системы, идентификатору клиента и времени.
Сервер поддерживает перехват клиентов других конкурирующих
DHCP серверов.
Постоянное ARP ping сканирование(посылаются ARP запросы
и ожидаются ответы) своих клиентов позволяет собирать точные
данные о времени проведенном в сети каждым из них. По этим
данным можно строить графики.
Также блокируется хакерская смена МАС и IP адреса на адреса
компьютера, уже вошедшего в сеть, так как его статус постоянно
проверяется ARP ping.
Реализован web-интерфейс с поддержкой SSL(при помощи OpenSSL).
В качестве обработчика веб-страниц используется PHP.
Сейчас в системе используется база данных Microsoft Jet,
а раньше настройки и данные находились в файлах, Вы можете
посмотреть их (хотя они уже устарели):
Конфигурационный
файл
Файл
сетевых адаптеров
Файл
выделения адресов
Файл
отчета
Cкриншоты:
Процесс разработки | Вход в систему |
Окно простой статистики | Суточный график суммарного времени пребывания в сети |
Система находится в стадии альфа-тестирования, разрабатывается сайт http://www.ethersec.net/.
Так что coming soon...
Дальнейшее развитие системы подразумевает доработку
сервера и написание клиентских программ для различных ОС, чтобы
точно и однозначно идентифицировать систему в момент входа в сеть на
низком уровне. Будут использованы цифровые сертификаты и пароль
входа. Появится возможность не допускать смену МАС адреса и имени
компьютера без ведома администрации сети.
Приветствуются все
комментарии и вопросы по данной теме.
Спасибо за проявленное
внимание!
Удачи!
обсудить | все отзывы (10) | |
[46033; 303; 6.17] |
|
|