Защита от 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