Jump to content

Recommended Posts

Posted (edited)

Юзеры задалбливают 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

Edited by white_crow
Posted (edited)
Указывайте винде что бы не просила выдавать. Точнее выдавайте нулевой.

option wpad code 252 = text;

option wpad "\n\000";

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

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

Edited by white_crow
Posted

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

 

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

Posted (edited)
>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 ?

Edited by white_crow
Posted
об iptables можете забыть сразу.

 

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

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

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

 

Posted (edited)

>жесть. Т.е. 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'ов

Edited by s.lobanov
Posted

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

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

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

 

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

Posted

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

Posted (edited)

Вроде настроил ограничения на свичах (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;

 

 

_________________________________

 

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

 

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

Edited by white_crow
Posted

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

 

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

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

 

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

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

 

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

 

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

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

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

Posted

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

 

-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

 

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

Posted (edited)

Винь просит что бы ей 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

Edited by shicoy
Posted
Винь просит что бы ей 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 адрес.

Posted

Согласно вот этой ссылки 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 серва....

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

 

 

Posted

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

 

option wpad code 252 = text;

option wpad "\n\000";

 

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

Posted (edited)

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

 

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);

}

 

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

 

Edited by white_crow
Posted

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

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

 

 

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

Пропишите у себя в днс: 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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.