Bagaimana cara terbaik bertahan melawan serangan DOS "slowloris" terhadap server web Apache?

32

Baru-baru ini sebuah skrip bernama "slowloris" telah mendapatkan perhatian. Konsep dasar dari apa yang slowloris lakukan bukanlah serangan baru tetapi dengan perhatian baru-baru ini saya melihat peningkatan kecil dalam serangan terhadap beberapa situs web Apache kami.

Saat ini tampaknya tidak ada pertahanan 100% terhadap ini.

Solusi terbaik yang telah kami tentukan (sejauh ini) adalah meningkatkan MaxClients.

Ini tentu saja tidak lebih dari meningkatkan persyaratan untuk komputer penyerang dan tidak benar-benar melindungi server 100%.

Satu laporan lain menunjukkan bahwa menggunakan proxy terbalik (seperti Perlbal) di depan server Apache dapat membantu mencegah serangan.

Menggunakan mod_evasive untuk membatasi jumlah koneksi dari satu host dan menggunakan mod_security untuk menolak permintaan yang sepertinya dikeluarkan oleh slowloris tampaknya menjadi pertahanan terbaik sejauh ini.

Adakah orang di ServerFault yang mengalami serangan seperti ini? Jika demikian, tindakan apa yang Anda terapkan untuk mempertahankan / mencegahnya?

CATATAN: Pertanyaan ini untuk server Apache karena pemahaman saya bahwa server Windows IIS tidak terpengaruh.

KPWINC
sumber

Jawaban:

22

Saya mengalami serangan seperti itu ... di tengah musim panas (23 Juni), di mana Anda seharusnya berada di pedesaan dan minum bir:>

Saya meletakkan Apache saya di belakang Varnish , yang tidak hanya dilindungi dari slowloris, tetapi juga mempercepat permintaan web.

Juga, iptablesmembantu saya:

iptables -I INPUT -p tcp --dport 80 \
         -m connlimit --connlimit-above 20 --connlimit-mask 40 -j DROP

Aturan ini membatasi satu host untuk 20 koneksi ke port 80, yang seharusnya tidak mempengaruhi pengguna yang tidak berbahaya, tetapi akan membuat slowloris tidak dapat digunakan dari satu host.

Kristaps
sumber
4
+1 untuk aturan iptables.
Tim
1
Hanya kepala. "Out of the box", pernis tidak men-cache halaman jika menerima cookie. Anda perlu melakukan beberapa konfigurasi khusus untuk menyiasatinya. Contoh tersedia di situs mereka dan mudah diterapkan.
David
Varnish cukup dapat diprogram, jadi Anda mungkin dapat mengkonfigurasinya untuk melihat apa yang terjadi dan menanganinya. Namun, saya berpikir bahwa dengan meletakkan proxy di depan apache, Anda hanya memindahkan masalah dari server web ke proxy. Masalahnya masih ada, hanya di tempat yang berbeda. Koneksi / port akan tetap digunakan. Saya akan mulai dengan aturan iptables yang terdaftar (atau yang setara untuk firewall Anda) kemudian lihat proxy.
David
1
masalah dengan serangan sloworis terbatas pada model multi threading apache (dan beberapa webservers lain yang menggunakan model serupa). Pernis harus selamat dari itu.
Cian
4

mod_antiloris , sesederhana itu.

LiraNuna
sumber
3

Jika semua modul apache Anda aman dari thread, slowloris dapat dikalahkan hanya dengan beralih ke MPM acara atau pekerja. ref: di sini

Cian
sumber
0

Saat ini tampaknya tidak ada lagi yang dapat dilakukan untuk membatasi koneksi konkuren maksimum per ip pada server.

Maxwell
sumber
0

Ada tambalan pengguna yang bisa Anda coba. Ini memodifikasi batas waktu berdasarkan beban server, tetapi mengingat statusnya, Anda mungkin tidak ingin menggunakannya pada mesin produksi, tanpa pengujian serius. Coba lihat di sini.

Dentrasi
sumber
0

Firewall berbasis iptable harus melindungi Anda dari beberapa koneksi dari 1 ip.


sumber
0

Jika ini membantu orang lain, Anda terkadang dapat mengatasi masalah ini dengan Apache 2.2.15 atau lebih besar dengan konfigurasi berikut:

LoadModule reqtimeout_module modules/mod_reqtimeout.so
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500

Info lebih lanjut di sini: https://httpd.apache.org/docs/2.2/mod/mod_reqtimeout.html

MrCarrot
sumber