polecenie linux, aby zapobiec atakowi dos za pomocą netstat i iptables

11

Chcę DROP ponad 200 żądań na ip, aby zapobiec atakowi DDOS. to polecenie, którego użyłem do wykrycia liczby żądań na ip:

netstat -alpn | grep :80 | awk '{print $5}' |awk -F: '{print $(NF-1)}' |sort | uniq -c | sort -nr

teraz chcę dodać wszystkie adresy IP, które wysłały ponad 200 żądań do IPtables do danych wejściowych i wyjściowych DROP.

Morteza Soltanabadiyan
źródło
Jak wspomniano w @dawud, upewnij się, że masz świadomość, że możesz jedynie „złagodzić”, a nie całkowicie całkowicie zapobiec atakowi DDOS na twój serwer.
kaptan

Odpowiedzi:

12

Możesz także użyć iptables, aby ograniczyć szybkość połączeń przychodzących. Na przykład jeśli nie chcesz więcej niż 200 połączeń na minutę ze źródła:

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

LinuxDevOps
źródło
1
Byłoby wspaniale mieć wyjaśnienie tego.
ffledgling
18

Możesz utworzyć ipset. W ten sposób możesz dodać tyle adresów IP, ile potrzebujesz, bez modyfikowania iptableszestawu reguł.

ipset -N myset iphash
ipset -A myset 1.1.1.1
ipset -A myset 2.2.2.2

Lub, w twoim przypadku, użyj danych wyjściowych skryptu i przeczytaj go za pomocą czegoś takiego:

while read a; do ipset -A myset "$a"; done < <(your script here)

I odwołaj się do tego w swoich iptablesregułach:

iptables -A INPUT -m set --set myset src -j DROP

Przeczytaj stronę podręcznika, aby uzyskać więcej informacji i opcji.

Istnieją również inne sposoby złagodzenia ataku DDOS przy użyciu iptablesbezpośrednio. Przeczytaj iptablessekcję strony o modułach connlimiti recent.

dawud
źródło
Jest to genialne, ponieważ ipsety są znacznie szybsze niż alternatywy, takie jak tabele skrótów.
isuldor