Интересуют советы по вопросу: как бороться с dns floodom?
Сеть клиентов - 10.0.0.0/8,
named.conf
options {
directory "/var/named";
listen-on {x.x.x.x; x.x.x.x; localhost;};
query-source port 53;
recursive-clients 4000;
allow-transfer { none; };
forward {ip address dns provaidera};
forward only;
};
zone "localhost" in {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" in {
type master;
file "127.0.0.zone";
allow-update { none; };
};
zone "lin.com" in {
type master;
file "lin.com";
allow-update { none; };
};
zone "10.in-addr.arpa" in {
type master;
file "10.zone";
};
Вот нашел с помощью iptables:
iptables -A INPUT -s 10.0.0.0/8 -p udp --dport 53 -m limit --limit 3/s -j ACCEPT
iptables -A INPUT -s 10.0.0.0/8 -p udp --dport 53 -j DROP
Но ето не подходит, так как соурс задается для подсети, то есть limit 3 пакета в секунду воспринимается для общего количества пиров входящих в заданную подсеть, а не для отдельного клиента. Может, кто знает, как задать лимит для одного пира, который входит подсеть 10.0.0.0/8? Может, есть, какие другие методы или инструменты для борьбы?
Dns flood клиентов на сервере dns, как кто бороться? (проблема dns flood)
Модераторы: SLEDopit, Модераторы разделов
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Dns flood клиентов на сервере dns, как кто бороться?
это действительно серьёзная для вас проблема?
если рассматривать netfilter, то есть ещё connlimit и hashlimit (man iptables).
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
INF[SZ]
- Сообщения: 395
- ОС: Centos
Re: Dns flood клиентов на сервере dns, как кто бороться?
Это действительно серьезная проблема на широких каналах до DNS сервера. Завалить Bind большим количеством рекурсивных DNS запросов дело 10 минут. К огромному сожалению Bind не обладает ограничениями на количество одновременных рекурсивных запросов от одного клиента, так что Вам прийдется выкручиваться с помошью других средств.
connlimit - только для TCP, нам же нужен UDP.
Соорудите что-нибудь типа такого:
Код: Выделить всё
-A INPUT -p udp -m udp --dport 53 -m state --state NEW -m recent --set --name DNS --rsource
-A INPUT -p udp -m udp --dport 53 -m state --state NEW -m recent --update --seconds 60 --hitcount 100 --rttl --name DNS --rsource -j LOG --log-prefix "DNS_FLOODER"
-A INPUT -p udp -m udp --dport 53 -m state --state NEW -m recent --update --seconds 60 --hitcount 100 --rttl --name DNS --rsource -j DROPЛибо ставить dns_flood_detector автоматически парсить его лог и дропать пакеты от "хулиганов". Вариантов как всегда масса.
Я не понял Вашего вопроса, но я Вам на него отвечу.