white_crow Опубликовано 12 октября, 2010 (изменено) · Жалоба Юзеры задалбливают 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 Изменено 12 октября, 2010 пользователем white_crow Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Oleg Gawriloff Опубликовано 12 октября, 2010 · Жалоба Указывайте винде что бы не просила выдавать. Точнее выдавайте нулевой. option wpad code 252 = text; option wpad "\n\000"; Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
white_crow Опубликовано 12 октября, 2010 (изменено) · Жалоба Указывайте винде что бы не просила выдавать. Точнее выдавайте нулевой.option wpad code 252 = text; option wpad "\n\000"; 1. Это мне в конфиг DHCP добавить ? 2. Ну а вообще по iptables правило из первого поста от DDoS на DHCP - нормально? (просто еще бывает, что некоторые шмаляют DHCPDISCOVER сто раз подряд) Изменено 12 октября, 2010 пользователем white_crow Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 12 октября, 2010 · Жалоба >2. Ну а вообще по iptables правило из первого поста от DDoS на DHCP - нормально? (просто еще бывает, что некоторые шмаляют DHCPDISCOVER сто раз подряд) ИМХО лучше использовать fail2ban для таких деятелей. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
white_crow Опубликовано 12 октября, 2010 (изменено) · Жалоба >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 ? Изменено 12 октября, 2010 пользователем white_crow Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 12 октября, 2010 · Жалоба У вас dhcp сервер напрямую видет абонентов или на него шлёт запросы dhcp relay Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 12 октября, 2010 · Жалоба об iptables можете забыть сразу. http://www.mail-archive.com/netfilter@list...g/msg03189.html Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
white_crow Опубликовано 12 октября, 2010 · Жалоба У вас dhcp сервер напрямую видет абонентов или на него шлёт запросы dhcp relay все через релэй Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
white_crow Опубликовано 12 октября, 2010 · Жалоба об iptables можете забыть сразу. http://www.mail-archive.com/netfilter@list...g/msg03189.html жесть. Т.е. ICS DHCP юзает не обычные сокеты, а raw сокеты ? Спрашивается нафига это ? Но с другой стороны - я же блокирую запросы ОТ клиентов на сервер (вернее от релеев), а они то уж наверное шлют через стандартные UDP сокеты ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 12 октября, 2010 · Жалоба Ну так если у Вас relay, то вам не кажется, что с помощью iptables Вы заблокируете relay-agent'а ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 12 октября, 2010 (изменено) · Жалоба >жесть. Т.е. 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'ов Изменено 12 октября, 2010 пользователем s.lobanov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
white_crow Опубликовано 12 октября, 2010 · Жалоба 1. понятно теперь нафига (про raw сокеты) 2. Но т.к. действительно - юзаются dhcp-relay, то широковещательных запросов - нет. А вот по-поводу того, что тогда дропаются IP агента - оно может и не плохо - зачем ему чаще, чем 3 пакета в сек слать (тоггда надо опять мне убрать ограниченрие 10/min и вернуть на 10/sec). Хотя лучше может действительно забыть в данном случаен про iptables и рулить на ближнем конце с помощью ограничений в DHCP-snooping - благо - все свичи - умные... Много новых тонкостей узнал - не зря запостил - ВСЕМ СПАСИБО! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 12 октября, 2010 · Жалоба Если вы будете дропать пакеты с src_ip=IP_агента, то из-за одного абонента будут страдать соседи по коммутатору, ставьте dhcp packet rate на абоненсткому порту, раз говорите, что есть такая фича на свитчах Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
white_crow Опубликовано 12 октября, 2010 · Жалоба да, это лучший вариант. Спасибо за помощь Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
white_crow Опубликовано 13 октября, 2010 (изменено) · Жалоба Вроде настроил ограничения на свичах (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; _________________________________ Что им надо, что они (клиенты еще хотят) и почему такое поведение - огромное количество одинаковых запросов в секунду? Неужели тока у меня в сети так? Изменено 13 октября, 2010 пользователем white_crow Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 13 октября, 2010 · Жалоба >логи нереально потом читать. Если dhcpd умеет логироваться через syslog, то проблема с мусором решается просто: установка syslog-ng и настройка фильтров с использование рег. выражений. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
white_crow Опубликовано 13 октября, 2010 · Жалоба >логи нереально потом читать. Если dhcpd умеет логироваться через syslog, то проблема с мусором решается просто: установка syslog-ng и настройка фильтров с использование рег. выражений. это хорошая мысль. И все интересно: Почему и зачем так ведут себя клиенты? Что им еще прописать в конфиге dhcp сервака - чтобы они не шмаляли пакетами DHCPINFORM У кого-нить есть такая же ситуация с постоянными DHCPINFORM ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
disappointed Опубликовано 13 октября, 2010 · Жалоба Можно ещё так фильтровать. -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 Пока будут попытки первышающие критерий - всё будет подропано. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shicoy Опубликовано 13 октября, 2010 (изменено) · Жалоба Винь просит что бы ей 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 Изменено 13 октября, 2010 пользователем shicoy Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
white_crow Опубликовано 15 октября, 2010 · Жалоба Винь просит что бы ей 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 адрес. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
white_crow Опубликовано 16 октября, 2010 · Жалоба Согласно вот этой ссылки 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 серва.... Пока точно не ясно - где именно ошибка - в конфигурации свичей или в прошивках или еще что-то, послал запрос в саппорт - жду Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
white_crow Опубликовано 16 октября, 2010 · Жалоба Кстати, по-поводу первого способа - тупо добавить в конфиг dhcp в глобальном разделе option wpad code 252 = text; option wpad "\n\000"; По-моему - не помогло - как шли информы, так и идут от тех же самых клиентов - в чем прикол? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 17 октября, 2010 · Жалоба см сообщение 19. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
white_crow Опубликовано 17 октября, 2010 (изменено) · Жалоба Я вставил в конфиг в глобальную секцию вот это: 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); } Каков механизм? Это заставит венду не слать информы? Изменено 17 октября, 2010 пользователем white_crow Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 17 октября, 2010 · Жалоба Лучше бы изучили как заставить винду их слать :) А потом проапгрейдили дхцп чтобы не замечал такие пустяки. Есть другой вариант: переложить нагрузку на днс. Пропишите у себя в днс: 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% гарантии что сработает не даю, возможно МС занесла эти домены в чёрный список. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...