Я хочу отбрасывать более 200 запросов на каждый IP-адрес, чтобы предотвратить атаку ddos. это команда, которую я использовал для определения количества запросов на ip:
netstat -alpn | grep :80 | awk '{print $5}' |awk -F: '{print $(NF-1)}' |sort | uniq -c | sort -nr
теперь я хочу добавить все IP-адреса, которые сделали более 200 запросов в IPtables для DROP ввода и вывода.
Вы можете создать ipset
. Таким образом, вы можете добавить в набор столько IP-адресов, сколько вам нужно, не изменяя iptables
набор правил.
ipset -N myset iphash
ipset -A myset 1.1.1.1
ipset -A myset 2.2.2.2
Или, в вашем случае, используйте вывод вашего скрипта и прочтите его примерно так:
while read a; do ipset -A myset "$a"; done < <(your script here)
И ссылка на него в вашем iptables
правила:
iptables -A INPUT -m set --set myset src -j DROP
Прочтите справочная страница для получения более подробной информации и опций.
Есть и другие способы смягчать DDOS-атака с использованием iptables
прямо. Прочтите iptables
раздел справочной страницы о connlimit
и recent
модули.
Вы также можете использовать iptables для ограничения скорости входящих соединений. Например, если вам не нужно более 200 подключений в минуту от источника:
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 200 -j DROP