Pagina 1 di 1

apache MaxRanges... a quanto?

Inviato: mer 23 nov 2011, 19:28
da ZeroUno
L'ultima versione di apache introduce un nuovo parametro 'MaxRanges' per risolvere una vulnerabilità che causa un DoS.

Il default per questo parametro è '200'

Ma a quanto è opportuno settarlo?
200 è il giusto per ovviare al DoS?
Cosa può comportare un abbassamento di tale valore (a livello funzionale e prestazionale).

Re: apache MaxRanges... a quanto?

Inviato: gio 24 nov 2011, 14:06
da ilmich
quello che ti posso dire io è che l'http 1.1 introduce una nuova funzionalita che consente di fare richieste tramite i ranges.. ovvero anzichè richiedere un file per intero, puoi per esempio dirgli di farti dare dal tot byte in poi, oppure dal byte x al byte y e via dicendo.

quindi immagino che questa direttiva limiti il numero di richieste di questo tipo, superato il quale il server le ignora e ti restituisce tutta la risorsa richiesta.
non mi è mai capitato di trovarmi di fronte ad una applicazione che fa questo tipo di richieste.. quindi per come la vedo io potresti persino metterlo a zero se non intendi supportare una qualsiasi forma di resume dei download e non vedere alcuna differenza.

Re: apache MaxRanges... a quanto?

Inviato: gio 24 nov 2011, 14:15
da targzeta
miklos ha scritto:quello che ti posso dire io è che l'http 1.1 introduce una nuova funzionalita che consente di fare richieste tramite i ranges.. ovvero anzichè richiedere un file per intero, puoi per esempio dirgli di farti dare dal tot byte in poi, oppure dal byte x al byte y e via dicendo.
...
non mi è mai capitato di trovarmi di fronte ad una applicazione che fa questo tipo di richieste..
Penso che tutti i software sfruttino questa possibilità. Ad esempio, se vuoi provare, 'wget -c' fa esattamente questo. Ma credo che anche i vari browser se per un motivo o per un altro non riescono a scaricare completamente un file, possono riprendere da dove si è interrotta la comunicazione. Ovviamente il tutto funziona se, appunto, dall'altra parte il server è abilitato a supportare questo tipo di richieste.

Emanuele

Re: apache MaxRanges... a quanto?

Inviato: gio 24 nov 2011, 14:23
da ilmich
spina ha scritto:Penso che tutti i software sfruttino questa possibilità. Ad esempio, se vuoi provare, 'wget -c' fa esattamente questo. Ma credo che anche i vari browser se per un motivo o per un altro non riescono a scaricare completamente un file, possono riprendere da dove si è interrotta la comunicazione
si hai ragione, mi sono espresso male :D
quello che ho provato a spiegare è che, per me, ai fini del funzionamento del server (inteso come performance generali e non come banda consumata) questo valore non ha una fondamentale utilità se il tuo sito web non ha file da scaricare..
immagino che il limite imposto sia dovuto al fatto che se sparo 2000 richieste di questo tipo saturo di piu' di un equivalente attacco fatto con richieste normali

Re: apache MaxRanges... a quanto?

Inviato: gio 24 nov 2011, 14:52
da ZeroUno
Metterlo a 0 significa unlimited.

La mia domanda è appunto, mettendolo al valore di default (200) mi possono borbandare e fare un DoS?

Re: apache MaxRanges... a quanto?

Inviato: gio 24 nov 2011, 14:58
da ilmich
secondo me si.. perchè a logica, il fatto che limiti il numero di richieste di questo tipo, non vuole dire che le blocchi, perchè la richiesta viene fatta in modo 'tradizionale' e non annullata.
quindi in ogni caso, un attacco ddos andrebbe a buon fine, solo che un attacco ddos fatto con richieste con ranges ha un effetto piu' rapido.

EDIT:
riporto il pezzo preso dalla documentazione

Codice: Seleziona tutto

The MaxRanges directive limits the number of HTTP ranges the server is willing to return to the client. If more ranges then permitted are requested, the complete resource is returned instead.

Re: apache MaxRanges... a quanto?

Inviato: gio 24 nov 2011, 17:12
da ZeroUno
miklos ha scritto:secondo me si.. perchè a logica, il fatto che limiti il numero di richieste di questo tipo, non vuole dire che le blocchi, perchè la richiesta viene fatta in modo 'tradizionale' e non annullata.
quindi in ogni caso, un attacco ddos andrebbe a buon fine, solo che un attacco ddos fatto con richieste con ranges ha un effetto piu' rapido.
Un DDoS è possibile ovviamente in altre vie. Il punto ora è usare MaxRanges per impedire questa di via. Le altre andranno chiuse in altri modi. E' chiaro che se un milione di pc mi si connettono contemporaneamente con anche una singola connessione tcp mi sdraiano il sistema, ma per questa ce ne sono altre di soluzioni. Ora stiamo parlando di MaxRanges.

Re: apache MaxRanges... a quanto?

Inviato: gio 24 nov 2011, 18:30
da ilmich
allora forse non ho capito bene io :D comunque l'argomento mi interessa perchè sono in procinto di lanciare un servizio web (nn basato su apache ma la tematica è importante).
ZeroUno ha scritto:Il punto ora è usare MaxRanges per impedire questa di via
mi descrivi questa via per favore?!?!?

dai miei studi fatti in materia, un ddos web non si puo' evitare, a meno di compromessi troppo restrittivi (bannare ip, rifiutare connessioni e simili), si possono solo limitare i danni ( rallentare richieste dallo stesso ip troppo frequenti, dirottare il traffico su una pagina di cortesia.. etc etc etc)
e comunque, sempre secondo le mie conoscenze, un attacco ddos fatto al server web si fa in un unico modo... lo bombardi di richieste web sulla porta in ascolto.

in questo caso, mi sembra che parliamo di limitare i danni, non di prevenire un qualcosa che comunque andrebbe a buon fine visto che il parametro non regola l'esito della risposta(per farla breve non chiude le connessioni), ma solo se accettarla per quello che è, oppure trattarla come una richiesta normale.

Re: apache MaxRanges... a quanto?

Inviato: gio 24 nov 2011, 19:11
da ZeroUno
Con un recente exploit è possibile generare un DoS, con un semplice script è possibile generare un DoS da un solo pc casalingo.

http://cve.mitre.org/cgi-bin/cvename.cg ... -2011-3192
The byterange filter in the Apache HTTP Server 1.3.x, 2.0.x through 2.0.64, and 2.2.x through 2.2.19 allows remote attackers to cause a denial of service (memory and CPU consumption) via a Range header that expresses multiple overlapping ranges, as exploited in the wild in August 2011, a different vulnerability than CVE-2007-0086.
Questo script da solo può sdraiare un server.
Io non sono riuscito a simulare la situazione perchè il mio server va in https mentre questo script va in solamente in http, ma non ci ho perso tempo.

Re: apache MaxRanges... a quanto?

Inviato: gio 24 nov 2011, 19:49
da ZeroUno
Ecco l'attacco (ho aperto la porta 80)

Codice: Seleziona tutto

$ free
             total       used       free     shared    buffers     cached
Mem:       4043740    3820544     223196          0        568     404004
-/+ buffers/cache:    3415972     627768
Swap:      4606132    2947992    1658140
la swap va in diminuzione (ora ho stoppato lo script però)

Codice: Seleziona tutto

07:38:14 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
07:38:15 PM     all     95.98      0.00      4.02      0.00      0.00      0.00
07:38:16 PM     all     89.05      0.00     10.95      0.00      0.00      0.00
07:38:17 PM     all     88.00      0.00     12.00      0.00      0.00      0.00
07:38:18 PM     all     94.50      0.00      5.50      0.00      0.00      0.00
07:38:19 PM     all     95.50      0.00      4.50      0.00      0.00      0.00
07:38:20 PM     all     85.93      0.00     14.07      0.00      0.00      0.00
07:38:21 PM     all     94.00      0.00      6.00      0.00      0.00      0.00
07:38:22 PM     all     95.02      0.00      4.98      0.00      0.00      0.00
07:38:23 PM     all     93.50      0.00      6.50      0.00      0.00      0.00
07:38:24 PM     all     86.50      0.00     13.50      0.00      0.00      0.00
Average:        all     91.80      0.00      8.20      0.00      0.00      0.00

apache 2.2.16

------

apache di slackware-current

lo script dice
"Host does not seem vulnerable"

Re: apache MaxRanges... a quanto?

Inviato: gio 24 nov 2011, 20:35
da ilmich
ora ho capito :)
guardando l'exploit non è un ddos basato sul numero di connessioni, ma di un buco vero e proprio!!!
in pratica si basa sul numero di range che si richiedono e il fatto che essendo sovrapposti incriccano il sistema.

a sto punto quindi il parametro indica il numero di ranges che si possono richiedere(in totale, quindi sia da 1 che da 50 richieste) e non come avevo supposto io, il numero di richieste con ranges.

detto questo secondo me il valore di default va piu' che bene (e aggiungo che, personalmente, se so di non avere la necessita di far scaricare file di grosse dimensioni, lo disabiliterei proprio)

comunque sarebbe carino vedere come si comporta l'exploit anche in presenza di una versione recente, perchè al momento l'exploit non lancia la caterva di connessioni in ogni caso, ma solo se si rende conto che l'apache gli risponde in un certo modo.

Re: apache MaxRanges... a quanto?

Inviato: ven 25 nov 2011, 12:39
da ZeroUno
La cosa strana è che con apache 2.2.21 mi dice "Host does not seem vulnerable" anche se metto MaxRanges unlimited.


Sinceramente credo che nel mio caso sarebbe anche disabilitabile perchè il mio apache è fondamentalmente un reverse proxy verso un server tomcat e non so quanto se ne possa trarre vantaggio dal fare richieste spezzettate.