Saya menjalankan beberapa ratus webservers di belakang loadbalancers, hosting banyak situs yang berbeda dengan sejumlah besar aplikasi (yang saya tidak punya kendali). Sekitar sebulan sekali, salah satu situs diretas dan skrip banjir diunggah untuk menyerang beberapa bank atau lembaga politik. Di masa lalu, ini selalu banjir UDP yang secara efektif diselesaikan dengan memblokir lalu lintas UDP keluar pada server web individu. Kemarin mereka mulai membanjiri bank besar AS dari server kami menggunakan banyak koneksi TCP ke port 80. Karena jenis koneksi ini sangat valid untuk aplikasi kami, hanya memblokir mereka bukan solusi yang dapat diterima.
Saya mempertimbangkan alternatif berikut. Mana yang akan Anda rekomendasikan? Sudahkah Anda menerapkannya, dan bagaimana?
- Batasi pada server web (iptables) paket TCP keluar dengan port sumber! = 80
- Sama tetapi dengan antrian (tc)
- Batas nilai lalu lintas keluar per pengguna per server. Cukup beban administratif, karena berpotensi ada 1000 pengguna berbeda per server aplikasi. Mungkin ini: bagaimana saya bisa membatasi bandwidth per pengguna?
- Ada yang lain?
Secara alami, saya juga mencari cara untuk meminimalkan kemungkinan peretas masuk ke salah satu situs kami yang dihosting, tetapi karena mekanisme itu tidak akan 100% tahan air, saya ingin sangat membatasi dampak intrusi.
Pembaruan: Saya sedang menguji dengan aturan-aturan ini, yang akan mencegah serangan khusus ini. Bagaimana Anda mengusulkan untuk membuatnya lebih generik? Apakah saya kehilangan serangan TCP DoS yang diketahui saat saya hanya memberi batasan pada paket SYN?
iptables -A OUTPUT -p tcp --syn -m limit --limit 100/min -j ACCEPT
iptables -A OUTPUT -p tcp --syn -m limit --limit 1000/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A OUTPUT -p tcp --syn -j REJECT --reject-with tcp-reset
Bersulang!