Linux: mencegah banjir TCP keluar

9

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!

Willem
sumber

Jawaban:

3

Solusi terbaik untuk pendapat saya dan yang telah bekerja sangat baik bagi saya adalah membatasi jumlah koneksi / paket untuk ip tujuan. Menetapkan batas ke tingkat yang wajar akan mencegah penyerang untuk mengirim sejumlah besar koneksi ke target. Mengatur port dan protokol bukanlah ide yang baik karena jika penyerang mengirimkan http banjir hari ini, besok ia akan menggunakan berbagai jenis serangan. jadi membatasi koneksi per ip secara umum akan menjadi solusi untuk masalah Anda.

Saya harap ini membantu :)

Hex
sumber
-3

Sikap saya selalu diambil adalah bahwa server web tidak boleh membuat koneksi TCP keluar sama sekali - hanya mengirim lalu lintas sebagai server menanggapi permintaan masuk. (Saya juga mengizinkan inbound TCP hanya untuk server web dan SSH.) (Terkait dengan ini saya juga percaya server web tidak pernah menjadi tuan rumah yang tepat untuk mengirim surat.) Ini tidak hanya akan mencegah serangan keluar - itu juga menambah sedikit kesulitan untuk serangan yang dilakukan pada sistem Anda (peretas tidak dapat memperoleh jendela xterm atau membiarkan toolkit mereka ke host Anda).

Peter
sumber
OK, lalu bagaimana cara situs web mengambil dan mengambil umpan RSS dari situs web lain?
Michael Hampton