Перейти к содержимому
Калькуляторы

DHCP inform - сотни запросов в секунду с одного IP

Юзеры задалбливают DHCP сервак пакетами DHCPINFORM.

 

Посмотрел DHCP дампом - похоже, какая-то служба венды просит постоянно выдать параметр 252: MSFT - WinSock Proxy Auto Detect

 

Вопрос №1 - зачем же так часто? (или это вирусня пытается задрючить серв?)

 

Вопрос №2 - а) каким правилом в iptables грамотно ограничить к-во пакетов в секунуд с одного IP на порт DHCP (67), с учётом, что UDP.

б) Есть ли варианты просто дропать лишние?

в) Есть ли варианты блокировать на время этот IP источника?

г) Есть ли вариант настроить время блокировки?

д) Какой вариант pps , который достаточен для нормального получения DHCP параметров для клиента

 

 

P.S. Такие правила подойдут? :

 

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Пропускаем все, что идет по уже установленным соединениям

 

iptables -A INPUT -m conntrack --ctstate NEW -p udp --dport 67 -m hashlimit --hashlimit-upto 3/sec --hashlimit-burst 3 --hashlimit-mode srcip --hashlimit-name dhcpHash -j ACCEPT

#Разрешаем 3 пакета в секунду с каждого src IP на порт 67 для новых соединений (с учетом, что это UDP, а не TCP - корректно ли говорить о соединениях, может и не имеет смылса для UDP -m conntrack --ctstate NEW ?

 

#все, что не попало в правила для этого порта - дропаем

iptables -A INPUT -p udp --dport 67 -j DROP

Изменено пользователем white_crow

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Указывайте винде что бы не просила выдавать. Точнее выдавайте нулевой.

option wpad code 252 = text;

option wpad "\n\000";

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Указывайте винде что бы не просила выдавать. Точнее выдавайте нулевой.

option wpad code 252 = text;

option wpad "\n\000";

1. Это мне в конфиг DHCP добавить ?

2. Ну а вообще по iptables правило из первого поста от DDoS на DHCP - нормально? (просто еще бывает, что некоторые шмаляют DHCPDISCOVER сто раз подряд)

Изменено пользователем white_crow

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

>2. Ну а вообще по iptables правило из первого поста от DDoS на DHCP - нормально? (просто еще бывает, что некоторые шмаляют DHCPDISCOVER сто раз подряд)

 

ИМХО лучше использовать fail2ban для таких деятелей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

>2. Ну а вообще по iptables правило из первого поста от DDoS на DHCP - нормально? (просто еще бывает, что некоторые шмаляют DHCPDISCOVER сто раз подряд)

 

ИМХО лучше использовать fail2ban для таких деятелей.

Как вариант - да, вроде софтина неплохая. Но работает на основе анализа логов.

Но Хотелось бы и вариант с iptables рассмотреть и осознать.

 

Из первого поста - iptables не съел --hashlimit-upto (староватая система)

 

Прокатило просто --hashlimit

 

А также убрал -m conntrack --ctstate NEW

 

И поставил не 3 пакета в секунду, а 10 в минуту, ибо 3 в секунду - тоже много - за минуту более сотни записей в логе...

 

Вроде работает.

 

Еще на свичах поставил в DHCP-снупинг - limit DHCP pps - на каждый юзерский порт - не более 3 DHCP запросв в секунуд. Короче - прекрылся со всех сторон.

 

Только вопрос - какое значение параметра --hashlimit-burst - грамотно ставить в iptables ?

Изменено пользователем white_crow

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У вас dhcp сервер напрямую видет абонентов или на него шлёт запросы dhcp relay

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

об iptables можете забыть сразу.

 

http://www.mail-archive.com/netfilter@list...g/msg03189.html

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У вас dhcp сервер напрямую видет абонентов или на него шлёт запросы dhcp relay

все через релэй

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

об iptables можете забыть сразу.

 

http://www.mail-archive.com/netfilter@list...g/msg03189.html

жесть. Т.е. ICS DHCP юзает не обычные сокеты, а raw сокеты ? Спрашивается нафига это ?

Но с другой стороны - я же блокирую запросы ОТ клиентов на сервер (вернее от релеев), а они то уж наверное шлют через стандартные UDP сокеты ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну так если у Вас relay, то вам не кажется, что с помощью iptables Вы заблокируете relay-agent'а ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

>жесть. Т.е. ICS DHCP юзает не обычные сокеты, а raw сокеты ? Спрашивается нафига это ?

 

Приходит кадр src_mac=что-то dst_mac=FFFF-FFFF-FFFF, на L3 src_ip=0.0.0.0 dst_ip=255.255.255.255, он не дойдёт до приложения, которое просто слушает на 0.0.0.0:port, поэтому и приходится вытаскивать его с помощью raw socket'ов

Изменено пользователем s.lobanov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. понятно теперь нафига (про raw сокеты)

2. Но т.к. действительно - юзаются dhcp-relay, то широковещательных запросов - нет.

А вот по-поводу того, что тогда дропаются IP агента - оно может и не плохо - зачем ему чаще, чем 3 пакета в сек слать (тоггда надо опять мне убрать ограниченрие 10/min и вернуть на 10/sec). Хотя лучше может действительно забыть в данном случаен про iptables и рулить на ближнем конце с помощью ограничений в DHCP-snooping - благо - все свичи - умные...

 

Много новых тонкостей узнал - не зря запостил - ВСЕМ СПАСИБО!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если вы будете дропать пакеты с src_ip=IP_агента, то из-за одного абонента будут страдать соседи по коммутатору, ставьте dhcp packet rate на абоненсткому порту, раз говорите, что есть такая фича на свитчах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да, это лучший вариант. Спасибо за помощь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вроде настроил ограничения на свичах (DHCP pps на каждом порту). Но иногда прорывает....

 

И все же интерсно, почему множество клиентов постоянно шлют DHCPINFORM, логи нереально потом читать.

Т.е. это какое-то ненорамльное поведение клиентской машины - десятки и сотни пакетов в секунуду.

 

Вот дамп запросов DHCPINFORM от клиента:

 

TIME: 10:01:07.902531

IP: > (40:4a:03:09:f1:bf) > (00:1c:c4:fa:ef:39)

OP: 1 (BOOTPREQUEST)

HTYPE: 1 (Ethernet)

HLEN: 6

HOPS: 1

XID: 00007835

SECS: 1024

FLAGS: 0

CIADDR: 10.204.7.28

YIADDR: 0.0.0.0

SIADDR: 0.0.0.0

GIADDR: 10.204.0.1

CHADDR: 00:01:6c:ba:0d:ff:00:00:00:00:00:00:00:00:00:00

SNAME: .

FNAME: .

OPTION: 53 ( 1) DHCP message type 8 (DHCPINFORM)

OPTION: 61 ( 7) Client-identifier 01:00:01:6c:ba:0d:ff

OPTION: 12 ( 4) Host name home

OPTION: 60 ( 8) Vendor class identifier MSFT 5.0

OPTION: 55 ( 12) Parameter Request List 1 (Subnet mask)

15 (Domainname)

3 (Routers)

6 (DNS server)

44 (NetBIOS name server)

46 (NetBIOS node type)

47 (NetBIOS scope)

31 (Perform router discovery)

33 (Static route)

249 (MSFT - Classless route)

43 (Vendor specific info)

252 (MSFT - WinSock Proxy Auto Detect)

 

OPTION: 43 ( 3) Vendor specific info dc0100 ...

OPTION: 82 ( 10) Relay Agent Information

Circuit-ID 00:17:03:84:48:30:31:33

 

______________________________________

 

Вот кусок конфига DHCP сервера

 

 

ddns-update-style none;

ignore client-updates;

authoritative;

option ms-classes-static-routes code 249 = array of unsigned integer 8;

option rfc3442-classes-static-routes code 121 = array of unsigned integer 8;

ddns-updates off;

allow leasequery;

option netbios-node-type = uint2;

option wpad code 252 = text;

option wpad "\n\000";

option netbios-name-servers 127.0.0.1;

option netbios-scope "localhost";

option router-discovery off;

 

ubnet 10.192.0.0 netmask 255.255.0.0 {

# HUB: ZyXel XGS-4728F HUB IP: 10.192.0.1

# Правды д.58-1 - Pravdi 58-1

 

 

option routers 10.192.0.1;

option subnet-mask 255.255.0.0;

option nis-domain "vgarant.lan";

option domain-name "vgarant.lan";

option domain-name-servers 192.168.10.1,212.98.160.50;

option time-offset 172800;

default-lease-time 86400;

option ms-classes-static-routes 24,192,168,254,10,192,0,1,10,10,192,10,192,0,1;

option rfc3442-classes-static-routes 24,192,168,254,10,192,0,1,10,10,192,10,192,0,1;

option ntp-servers 192.168.10.1;

option time-servers 192.168.10.1;

option netbios-node-type = uint2;

 

 

_________________________________

 

Что им надо, что они (клиенты еще хотят) и почему такое поведение - огромное количество одинаковых запросов в секунду?

 

Неужели тока у меня в сети так?

Изменено пользователем white_crow

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

>логи нереально потом читать.

 

Если dhcpd умеет логироваться через syslog, то проблема с мусором решается просто: установка syslog-ng и настройка фильтров с использование рег. выражений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

>логи нереально потом читать.

 

Если dhcpd умеет логироваться через syslog, то проблема с мусором решается просто: установка syslog-ng и настройка фильтров с использование рег. выражений.

это хорошая мысль.

 

И все интересно:

 

Почему и зачем так ведут себя клиенты?

Что им еще прописать в конфиге dhcp сервака - чтобы они не шмаляли пакетами DHCPINFORM

У кого-нить есть такая же ситуация с постоянными DHCPINFORM ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно ещё так фильтровать.

 

-A INPUT -m udp -p udp --dport 67 -m state --state NEW -m recent --set --name DHCP

-A INPUT -m udp -p udp --dport 67 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 --name DHCP -j DROP

 

Пока будут попытки первышающие критерий - всё будет подропано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Винь просит что бы ей DHCP выдал WinSock.

Это баг (фича) в одной из сборок винды.

Лечится так (для dhcpd.conf)

class "MSFT" { 
match if substring(option vendor-class-identifier, 0, 4) = "MSFT"; 

# They put 252 on the DHCPINFORM's, but not on the DHCPREQUEST's 
# PRL. So we over-ride the PRL to include 252 = 0xFC, which will also 
# suppress the DHCPINFORMS! 
option dhcp-parameter-request-list = 
concat(option dhcp-parameter-request-list, fc); 
}

 

взято отсюда

http://www.mercenary.net/blog/index.php?/a...HOWTO-WPAD.html

Изменено пользователем shicoy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Винь просит что бы ей DHCP выдал WinSock.

Это баг (фича) в одной из сборок винды.

Лечится так (для dhcpd.conf)

class "MSFT" { 
match if substring(option vendor-class-identifier, 0, 4) = "MSFT"; 

# They put 252 on the DHCPINFORM's, but not on the DHCPREQUEST's 
# PRL. So we over-ride the PRL to include 252 = 0xFC, which will also 
# suppress the DHCPINFORMS! 
option dhcp-parameter-request-list = 
concat(option dhcp-parameter-request-list, fc); 
}

 

взято отсюда

http://www.mercenary.net/blog/index.php?/a...HOWTO-WPAD.html

да, это интересно. Надо будет вдумчивей это почитать.

 

А пока выяснилось, что причной флуда являются не клиенты, ибо везде на доступе поставили ограничение pps = 3 - в DHCP-snooping, но это не помогло.

А вот отключаешь на свиче агрегации DHCP-relay - включаешь релеи на доступе - все ок. Т.е. свич Zyxel XGS 4728 - уходил в ступор под нагрузкой при включенном на нем - DHCP-relay и начинал флудить одними и теми же запросами сотни и тысяи раз в секунду. О баге сообщили в саппорт. А пока перенастраиваем релеи на свичи доступа - снимая нагрузку с агрегации.....

 

 

Можно ещё так фильтровать.

 

-A INPUT -m udp -p udp --dport 67 -m state --state NEW -m recent --set --name DHCP

-A INPUT -m udp -p udp --dport 67 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 --name DHCP -j DROP

 

Пока будут попытки первышающие критерий - всё будет подропано.

Ну, во-первых:

 

такая конструкция уже устарела: -m state --state NEW

Так написано в мануале к свежим Iptables.

Рекомендуют юзать : -m conntrack --ctstate NEW

 

Во-вторых: почитайте посты чуть выше - этот метод уже обсуждали и пришли к выводу, что если на DHCP идут броадкасты от клиентов, то iptables в данном случае не поможет.

А если идут юникасты от DHCP релеев, то вы задропаете пакеты от релея, тем самым пострадают все абоны, которые через него пытаются в нормальном режиме получить Ip адрес.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Согласно вот этой ссылки http://www.mercenary.net/blog/index.php?/a...HOWTO-WPAD.html

 

подавлять option 252 можно двумя способами, но тут какие-то тонкости перевода у меня возникли, не думаю что простой копикаст второго способа - будет правильно - там что-то надо править согласно каментов.

 

Кто хорошо аглийский знает, какие особенности между этими двумя способами:

 

(1) The way to stop all of these clients that implement WPAD from querying DNS at all is to give them a poison pill at DHCP time; ИЛИ (2)heck configure WPAD at DHCP time and start providing a caching proxy service. I'll show you how to do both below the cut.

In ISC DHCP's dhcpd.conf, enter:

# WPAD definition

option wpad code 252 = text;

# Suppress WPAD activity - no cache, no DNS.

option wpad "\n\000";

**************************************

 

(2)

# Configure a valid WPAD cache. The \n is required for Windows.

# All config below this line is optional.

#option wpad "http://www.example.com/wpad.pac\n";

# Special config for Windows ("MSFT 5.0") systems.

# Note this does not catch Windows CE.

class "MSFT" {

match if substring(option vendor-class-identifier, 0, 4) = "MSFT";

# They put 252 on the DHCPINFORM's, but not on the DHCPREQUEST's

# PRL. So we over-ride the PRL to include 252 = 0xFC, which will also

# suppress the DHCPINFORMS!

option dhcp-parameter-request-list =

concat(option dhcp-parameter-request-list, fc);

 

_________________

P.s. Кстати, проблема , описанная в заговоке темы - оказалось куда глубже, чем просто DHCPINFORM.

Возникили Грабли с коммутаторами Zyxel c включенной опцией DHCP relay и MVR и VLAN для ьультикаста.

Начинается какой-то шторм, пакеты по кругу ходят - вот отсюда побочный эффект с задрючиванием DHCP серва....

Пока точно не ясно - где именно ошибка - в конфигурации свичей или в прошивках или еще что-то, послал запрос в саппорт - жду

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кстати, по-поводу первого способа - тупо добавить в конфиг dhcp в глобальном разделе

 

option wpad code 252 = text;

option wpad "\n\000";

 

По-моему - не помогло - как шли информы, так и идут от тех же самых клиентов - в чем прикол?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я вставил в конфиг в глобальную секцию вот это:

 

class "MSFT" {

match if substring(option vendor-class-identifier, 0, 4) = "MSFT";

 

# They put 252 on the DHCPINFORM's, but not on the DHCPREQUEST's

# PRL. So we over-ride the PRL to include 252 = 0xFC, which will also

# suppress the DHCPINFORMS!

option dhcp-parameter-request-list =

concat(option dhcp-parameter-request-list, fc);

}

 

Каков механизм? Это заставит венду не слать информы?

 

Изменено пользователем white_crow

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Лучше бы изучили как заставить винду их слать :)

А потом проапгрейдили дхцп чтобы не замечал такие пустяки.

 

 

Есть другой вариант: переложить нагрузку на днс.

Пропишите у себя в днс: wpad.ru, wpad.com, wpad.net, wpad.org можно и другие корневые домены.

Можете таймаут записи прописать на по больше, чтобы реже спрашивали. Файл сценария всё равно будут дёргать с хттп.

Должен указывать на ваш вебсервер, в корне которого лежит wpad.dat файл, в котором указано возвращать "DIRECT" на все адреса.

 

 

Тут по русски:

http://www.securitylab.ru/analytics/379619.php

 

Тут на английском:

http://en.wikipedia.org/wiki/Web_Proxy_Aut...covery_Protocol

http://homepage.ntlworld.com./jonathan.deb...figuration.html

http://wiki.squid-cache.org/Technology/WPAD/DNS

http://www.wrec.org/Drafts/draft-cooper-webi-wpad-00.txt

 

 

wpad.dat

function FindProxyForURL(url,host)
{
return "DIRECT";
}

 

 

Что нужно указать в веб сервере, чтобы клиенты поняли:

lighttpd: lighttpd.conf: ".dat" => "application/x-ns-proxy-autoconfig",

Apache: httpd.conf: AddType application/x-ns-proxy-autoconfig .dat

nginx: mime.types: application/x-ns-proxy-autoconfig dat;

 

 

100% гарантии что сработает не даю, возможно МС занесла эти домены в чёрный список.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.