iptables:dns_query_limiting
This is an old revision of the document!
IPTables - DNS query limiting
Analysis of DNS queries coming in was able to determine an average of 5 requests per second per IP.
To prevent instances where a lot of valid requests come in a relatively short amount of time, it is better to not measure over a single second but an average over a longer period. For example, as it's been determined that there is an average of 5 requests per second, then that would mean that over 10 seconds there would be an average of 50 requests.
To factor in sudden bursts of requests coming in 15 requests are allowed to happen in each of the 10 seconds.
#!/bin/bash # This script limits the queries per second to 5/s # with a burst rate of 15/s and does not require # buffer space changes # Requests per second RQS="15" # Requests per 10 seconds RQH="50" iptables --flush iptables -A INPUT -p udp --dport 53 -m state --state NEW -m recent --set --name DNSQF --rsource iptables -A INPUT -p udp --dport 53 -m state --state NEW -m recent --update --seconds 1 --hitcount ${RQS} --name DNSQF --rsource -j DROP iptables -A INPUT -p udp --dport 53 -m state --state NEW -m recent --set --name DNSHF --rsource iptables -A INPUT -p udp --dport 53 -m state --state NEW -m recent --update --seconds 7 --hitcount ${RQH} --name DNSHF --rsource -j DROP
iptables/dns_query_limiting.1467970681.txt.gz ยท Last modified: 2020/07/15 09:30 (external edit)