perintah linux untuk mencegah serangan dos dengan menggunakan netstat dan iptables

11

Saya ingin DROP lebih dari 200 permintaan per ip untuk mencegah serangan DDoS. ini adalah perintah yang saya gunakan untuk mendeteksi jumlah permintaan per ip:

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

sekarang saya ingin menambahkan semua alamat ip yang membuat lebih dari 200 permintaan ke dalam IPtables ke input DROP dan put out.

Morteza Soltanabadiyan
sumber
Seperti yang disebutkan @dawud pastikan Anda sadar bahwa Anda hanya dapat "mengurangi" dan tidak benar-benar benar-benar mencegah serangan DDOS ke server Anda.
kaptan

Jawaban:

12

Anda juga dapat menggunakan iptables untuk membatasi tingkat koneksi yang masuk. Misalnya, jika Anda tidak ingin lebih dari 200 koneksi per menit dari sumber:

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
sumber
1
Akan sangat bagus untuk memiliki penjelasan tentang ini juga.
ffledgling
18

Anda dapat membuat ipset. Dengan cara ini Anda dapat menambahkan sebanyak mungkin IP ke set yang Anda butuhkan tanpa mengubah iptablesaturan.

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

Atau, dalam kasus Anda, gunakan output skrip Anda, dan bacalah dengan sesuatu seperti:

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

Dan referensi dalam iptablesaturan Anda :

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

Baca halaman manual untuk lebih detail dan opsi.

Ada juga cara lain untuk mengurangi serangan DDOS menggunakan iptablessecara langsung. Baca bagian iptablesmanual tentang connlimitdan recentmodul.

dawud
sumber
Ini brilian karena ipset jauh lebih cepat daripada alternatif seperti hashtable.
isuldor