apache MaxRanges... a quanto?

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

apache MaxRanges... a quanto?

Messaggio 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).
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

ilmich
Master
Master
Messaggi: 1646
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: apache MaxRanges... a quanto?

Messaggio 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.
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: apache MaxRanges... a quanto?

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

ilmich
Master
Master
Messaggi: 1646
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: apache MaxRanges... a quanto?

Messaggio 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
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: apache MaxRanges... a quanto?

Messaggio da ZeroUno »

Metterlo a 0 significa unlimited.

La mia domanda è appunto, mettendolo al valore di default (200) mi possono borbandare e fare un DoS?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

ilmich
Master
Master
Messaggi: 1646
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: apache MaxRanges... a quanto?

Messaggio 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.
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: apache MaxRanges... a quanto?

Messaggio 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.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

ilmich
Master
Master
Messaggi: 1646
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: apache MaxRanges... a quanto?

Messaggio 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.
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: apache MaxRanges... a quanto?

Messaggio 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.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: apache MaxRanges... a quanto?

Messaggio 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"
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

ilmich
Master
Master
Messaggi: 1646
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: apache MaxRanges... a quanto?

Messaggio 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.
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: apache MaxRanges... a quanto?

Messaggio 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.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Rispondi