Популярные сервера
- ISC DHCP now KEA DHCP – ISC has announced the end of maintenance for ISC DHCP as of the end of 2022. ISC has developed a new DHCP server, Kea, which we intend to replace ISC DHCP in most server implementations.
- Cisco CNR
- dnsmasq
Dhcp tunnel vision
Для любителей подключатся к открытым хотспотам, а затем поднимать какой VPN и думать что защищены 🙂
Атака TunnelVision, позволяющая перенаправить VPN-трафик через манипуляции с DHCP- уязвимость пользовательских vpn.
Красиво сделали: Перенаправление осуществляется через выставления серии маршрутов для подсетей с префиксом /1, которые имеют более высокий приоритет, чем применяемый по умолчанию маршрут с префиксом /0 (0.0.0.0/0), соответственно трафик вместо выставленного для VPN виртуального сетевого интерфейса, будет направлен через физический сетевой интерфейс на хост атакующего в локальной сети.
Атака может быть осуществлена в любых операционных системах, поддерживающих 121 опцию DHCP, включая Linux, Windows, iOS и macOS, независимо от используемого протокола VPN (Wireguard, OpenVPN, IPsec) и набора шифров. Платформа Android атаке не подвержена, так как не обрабатывает опцию 121 в DHCP.
DHCP client
Проверка на то, что DHCP делает renew и посмотреть время аренды можно по логам dhcpclient.
sudo grep dhclient /var/log/syslog 2019 Feb 9 13:42:27 info dhclient[12271]: DHCPREQUEST on eth0 to 172.2.2.2 port 67 (xid=0x1111111111) 2019 Feb 9 13:42:27 info dhclient[12271]: DHCPACK from 172.2.2.2 (xid=0x1111111111) 2019 Feb 9 13:42:30 info dhclient[12271]: bound to 172.1.1.1 -- renewal in 38785 seconds. 2019 Feb 10 00:28:55 info dhclient[12271]: DHCPREQUEST on eth0 to 172.2.2.2 port 67 (xid=0x1111111111) 2019 Feb 10 00:29:03 info dhclient[12271]: DHCPREQUEST on eth0 to 172.2.2.2 port 67 (xid=0x1111111111) 2019 Feb 10 00:29:03 info dhclient[12271]: DHCPACK from 172.2.2.2 (xid=0x1111111111) 2019 Feb 10 00:29:05 info dhclient[12271]: bound to 172.1.1.1 -- renewal in 34413 seconds. 2019 Feb 10 10:02:38 info dhclient[12271]: DHCPREQUEST on eth0 to 172.2.2.2 port 67 (xid=0x1111111111) 2019 Feb 10 10:02:43 info dhclient[12271]: DHCPREQUEST on eth0 to 172.2.2.2 port 67 (xid=0x1111111111) 2020 Feb 10 10:02:43 info dhclient[12271]: DHCPACK from 172.2.2.2 (xid=0x1111111111) 2020 Feb 10 10:02:45 info dhclient[12271]: bound to 172.1.1.1 -- renewal in 38382 seconds.
ISC dhcp LOGS/Config/START
cat /var/lib/dhcp/dhcpd.leases nano /etc/dhcp/dhcpd.conf sudo service isc-dhcp-server status
option domain-name-servers 77.88.8.88, 77.88.8.2;
lease 10.3.1.129 { starts 3 2020/02/09 10:45:42; ends 4 2020/02/10 10:45:42; cltt 3 2020/02/09 10:45:42; binding state active; next binding state free; rewind binding state free; hardware ethernet f0:79:59:36:a3:65; uid "\377Y6\243e\000\001\000\001)q\300\342\360yY6\243e"; option agent.circuit-id 0:4:0:3:0:15; option agent.remote-id 0:6:1c:5f:2b:16:ae:d8; client-hostname "serv-01-02"; }
Пример сурового конфига по лизам (максимальная экономия адресов в пуле за счет минимальной времени аренды).
А если это юзер халявной зоны WiFi, то там совсем-совсем другая история.
А если это юзер халявной зоны WiFi, то там совсем-совсем другая история. Они не прогоняются через конторский биллинг принципиально. Для них подняты отдельные ISC DHCPD (другая пара helpers, с failover) с самыми жестокими параметрами. В данном случае порог ((уменьшения лизы до минимального времени в 600 секунд)) это занятость пула на 75%.
max-lease-time 1800; min-lease-time 600; adaptive-lease-time-threshold 75;
DHCP options
Опция 82 используется при работе DHCP relay для передачи сведений откуда пришел запрос (для выдачи верных данных и напр. фиксации трапов с какого коммутатора пришли). В целях безопасности по умолчанию DHCP запросы с уже заполненной опцией 82 отбрасываются. Для каждого порта нужно настраивать поведение для обработки запросов с заполненной опцией 82. Обычно опция 82 состоит из двух сабопций: 82.1 Circuit ID и 82.2 Remote ID. Оба поля могут использоваться и по отдельности и вместе. Так же можно использовать любые другие сабопции.
Опции DHCP используются для авто-провижнинга. Это могут быть разные устройства – VOIP телефоны (option 150 с указанием адреса TFTP сервера для IP phones), точки доступа и даже коммутаторы на базе Linux.
Первая загрузка в Cumulus Linux, определяется наличие скриптов настройки через опцию 239 DHCP. Если в ответ получается URL адрес, то по нему запрашивается скрипт, в нем разыскивается CUMULUS-AUTOPROVISIONING и скрипт запускается от root. Поддерживаются Bash, Ruby, Perl, Python.
Опции используются для передачи от DHCP сервера статических маршрутов на DHCP client.
- 249 – статические маршруты, только винда
- 121 – и винда и линукс
- 33 – статические маршруты без поддержки маски (FFx4)
DHCP CONFLICT IP
DHCP SERVER PING
ping-check https://linux.die.net/man/5/dhcpd.conf http://www.ipamworldwide.com/ipam/dhcp-server-params.html ping-check flag; - when flag = true the DHCP server will ping the address to be offered to a client before issuing the offer. If no response is received the offer is delivered; otherwise the address is abandoned and no response is sent to the client. ping-timeout seconds; - the default timeout for the ping-check parameter is one second. An alternative timeout value may be specified using this parameter statement. The lease will remain abandoned for a minimum of abandon-lease-time seconds. If not defined, the default abandon lease time is 86400 seconds (24 hours).
DHCP использует ARP для защиты от конфликта IP
Как минимум два использования ARP для защиты от конфликта:
- сервер предварительно делает arp request с попыткой резолва IP, который собирается выдать. Делается, если сервер находится в одной подсети с клиентом, которому лизу выдает.
- клиент делает три garp после получения IP, если клиент получает ответ – он отсылает DHCP серверу DHCP DECLINE, чтобы тот пометил адрес как проблемный
Пример дампа:
Cisco CNR особенности
Узнал пару новых вещей, расширяя забитый пул для одного из сегментов сети:
- в случае CNR (или по крайнем мере нашей реализацией взаимодействия с ним) нельзя просто увеличить маску сети для сегмента, несмотря на то, что следующая сеть свободна. Если изменить маску, на DHCP дропаются все старые лизы и DHCP пул просто пересоздастся. Поэтому проще работать по стандартной схеме – вынести текущую сеть как secondary, а новую, с большой маской, настроить как primary (разумеется, предварительно добавив на сервер). В таком случае прерывания нет или оно минимально – при перевешивании primary -> secondary у меня не прервался даже telnet.
- 10% пула по умолчанию уходит в резерв, поэтому выдача IP идет не с 1-го адреса. Нужно это для failover сервера, в случае падения основного. Основной с failover синхронизятся раз в час и чтобы избежать конфликтов для лиз, которые выдались после синхронизации, failover сначала выдает IP из этого резервного пула. Для многих сетей это удобно и тем, что первые адреса диапазона зачастую занимаются под сервера/юр. лиц.
Дамп трафика
question
Какой тип сообщения DHCP отправляется сервером?
DHCP Request
DHCP Discover
DHCP Release
DHCP Offer
DHCP Offer
Выберите правильные шаги для получения Р-адреса через DHCP:
Offer → Request → Discover → Acknowledgment
Discover → Offer → Request → Acknowledgment
Request → Acknowledgment → Discover → Offer
Discover → Request → Offer → Acknowledgment
Discover → Offer → Request → Acknowledgment
DHCP использует протокол транспортного уровня:
Final Results
UDP
И UDP, и ТСР
DHCP – протокол транспортного уровня
TCP
UDP
Если для клиента DHCP сервер DHCP находится в другой сети, то какая технология нужна для получения ІР-адреса?
DHCP Relay
DHCP Inform
DHCP Spoofing
DHCP Relay
Какой тип сообщения DHCP отправляется клиентом?
DHCP Acknowledgment (Ack)
DHCP Request
DHCP Offer
DHCP Request
UDP-порт 67 по умолчанию слушает DHCP-…
Никто не слушает
Сервер
Клиент
Сервер
Какой тип сообщения DHCP отправляется клиентом при обновлении (renew) арендованного ранее ІР-адреса?
DHCP Offer
DHCP Acknowledgment (Ack)
DHCP Renew
DHCP Request
DHCP Request