понедельник, 5 мая 2014 г.

Защищаем DNS от мини-ddos


Недавно стали DDoS-ить DNS сервер. Некий школьнику своего домена alexcoolshow.ru указал наши DNS, соответственно пришли боты и стали дёргать сервера.
Немного сложности добавляло то, что один запрос вида alexcoolshow, другой AlExCoOlShOw, третий еще как-нибудь играется с регистрами букв.
По умолчанию модуль strings в iptables не умеет работать с регистром, но есть ключик --icase.

Пример правил:

iptables -A INPUT -p tcp -m multiport --dport 53,993 -m string --string 'alexcool' --algo bm --icase -j DROP

iptables -A INPUT -p udp -m multiport --dport 53,993 -m string --string 'alexcool' --algo bm --icase -j DROP


Запрещаем все запросы к DNS (порты 53 и 993), имеющие запрос вида alexcool, независимо от регистра букв. Нагрузка на процессоры  незаметна, в отличие от постоянного дерганья nameserver.