Защита от DoS атака с iptables
Тези команди ще ви помогнат да се защитите от DoS атака. Посредством тях, ще блокирате всяко IP, което за 60 секунди има повече от 20 връзки (connections) към текущата машина:
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 20 -j DROP |
Резултат от командата:
[root@server ~]# netstat -alpn| grep ":80"| awk '{ print $5 }'| cut -d: -f4| sort| uniq -c | sort -n 1 * 3 66.249.72.131 16 81.100.74.82 17 82.12.246.158 19 212.183.140.13 19 78.148.123.94 20 85.211.47.252 20 86.166.141.234 20 87.97.215.7 20 89.253.191.173 20 91.92.170.172 20 94.156.57.170 20 94.169.158.18 22 77.78.11.99 |
Разбира се това е само пример и можете да смените стоностите за секунди (60) и брои връзки (20).
Имайте впредвид, че максималните стойности за –seconds са 60, а за –hitcount са 20
За да премахнете правило (RULE) от iptables използвайте следните команди.
Лист на всички правила в iptables:
iptables -L INPUT -n --line-numbers |
[root@server ~]# iptables -L INPUT -n --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW recent: UPDATE seconds: 60 hit_count: 20 name: DEFAULT side: source 2 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW recent: SET name: DEFAULT side: source 3 fail2ban-SSH tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 4 DROP all -- 67.195.0.0/24 0.0.0.0/0 [root@server ~]# |
За да изтрием правилото за блокиране на IP-тата в този случай пишем:
iptables -D INPUT 1 |