Radoslav Panev

SysAdmin and DevOps

Защита от DoS атака с iptables

07 Dec 2013 » Linux

Ако се съмнявате в DoS атака ползвайте следната команда :

netstat -alpn| grep ":80"| awk '{ print $5 }'| cut -d: -f4| sort| uniq -c | sort -n

Примерен изходен вариант:

(eragon)(0)(01:54 AM Sat Dec 07)
└─(~)(15 files, 972Kb)─> netstat -alpn| grep ":80"| awk '{ print $5 }'| cut -d: -f4| sort| uniq -c | sort -n
      1 *
     19 10.10.10.10

По-долните два реда са примерни, може да се променят според вашите нужди.

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

Имайте в предвид, че максималните стойности за –seconds са 60, а за –hitcount са 20.
Със следният ред

iptables -L INPUT -n --line-numbers

лисваме всички правила в iptables:

(eragon)(0)(01:44 AM Sat Dec 07)
└─(~)(15 files, 972Kb)─> 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

За да изтрием правилото за блокиране на IP-тата в този случай пишем:

iptables -D INPUT 1

Тука 1 (едно) след INPUT е номера на правилото показано по-горе.