Come difendersi al meglio da un attacco DOS "slowloris" contro un web server Apache?


32

Recentemente una sceneggiatura chiamata "slowloris" ha attirato l'attenzione. Il concetto di base di ciò che fa slowloris non è un nuovo attacco, ma data la recente attenzione ho visto un piccolo aumento degli attacchi contro alcuni dei nostri siti Web Apache.

Al momento non sembra esserci alcuna difesa al 100% contro questo.

La migliore soluzione che abbiamo deciso (finora) è quella di aumentare MaxClients.

Questo ovviamente non fa altro che aumentare i requisiti per il computer dell'aggressore e in realtà non protegge il server al 100%.

Un altro rapporto indica che l'utilizzo di un proxy inverso (come Perlbal) davanti al server Apache può aiutare a prevenire l'attacco.

L'uso di mod_evasive per limitare il numero di connessioni da un host e l'uso di mod_security per negare richieste che sembrano essere state emesse da slowloris sembrano essere la migliore difesa finora.

Qualcuno su ServerFault ha subito attacchi come questo? In tal caso, quali misure hai adottato per difenderlo / prevenirlo?

NOTA: questa domanda riguarda i server Apache in quanto è mia comprensione che i server Windows IIS non sono interessati.

Risposte:


22

Ho sperimentato un simile attacco ... nel mezzo dell'estate (23 giugno), dove dovresti essere in campagna e bere birra:>

Ho messo il mio Apache dietro Varnish , che non solo proteggeva da Slowloris, ma ha anche accelerato un po 'le richieste Web.

Inoltre, iptablesmi ha aiutato:

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

Questa regola limita un host a 20 connessioni alla porta 80, che non dovrebbe interessare l'utente non malintenzionato, ma renderebbe slowloris inutilizzabile da un host.


4
+1 per la regola iptables.
Tim,

1
Solo un avviso. "Fuori dagli schemi", la vernice non memorizza nella cache le pagine se ha ricevuto i cookie. È necessario eseguire una configurazione personalizzata per aggirare questo. Gli esempi sono disponibili sul loro sito e sono facili da implementare.
David,

Varnish è abbastanza programmabile, quindi potresti essere in grado di configurarlo per vedere cosa sta succedendo e gestirlo. Tuttavia, penso che mettendo un proxy davanti ad Apache, si sta semplicemente spostando il problema dal server Web al proxy. Il problema è ancora lì, solo in un posto diverso. Le connessioni / porte saranno ancora esaurite. Comincerei con la regola iptables elencata (o l'equivalente per il tuo firewall) quindi guarderei un proxy.
David,

1
il problema con l'attacco sloworis è limitato al modello multi threading di apache (e a molti altri server web che usano un modello simile). La vernice dovrebbe sopravvivere a questo.
Cian,


3

Se tutti i tuoi moduli apache sono thread-safe, slowloris può essere sconfitto semplicemente passando a MPM evento o lavoratore. ref: qui


0

In questo momento sembra che non ci sia altro da fare che limitare le connessioni simultanee massime per IP sul server.


0

C'è una patch utente che puoi provare. Modifica il timeout in base al carico su cui si trova il server, ma considerando il suo stato, potresti non voler usarlo su una macchina di produzione, senza alcuni test seri. Dai un'occhiata qui.


0

firewall basato su iptable dovrebbe proteggerti da più connessioni da 1 ip.


0

Se questo aiuta qualcun altro, a volte puoi superare questo problema con Apache 2.2.15 o versioni successive con la seguente configurazione:

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

Maggiori informazioni qui: https://httpd.apache.org/docs/2.2/mod/mod_reqtimeout.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.