Bombing dns = DoS

Postate qui per tutte le discussioni legate alla sicurezza di Linux/Slackware

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) Specificare se discussione/suggerimento o richiesta d'aiuto.
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:

Bombing dns = DoS

Messaggio da ZeroUno »

Sto ricevendo un attacco di bombing sul dns. Centinaia di query al secondo, forse anche migliaia che mi hanno causato un DoS.
Inizialmente ho droppato quei 3 ip, poi hanno cominciato a farmi bombing da altri ip.
Ora ho bloccato tutto, quindi sono senza dns esposto (fortunatamente il mio dns è mirrorato da telecom, quindi per un po' posso andare avanti senza, ma non troppo).

Quale è il modo migliore di proteggermi?
Stavo pensando a sfruttare la tabella mangle di iptables, che però non ho mai usato e me la devo studiare, per limitare il numero di richieste al secondo. O è meglio qualcos'altro?

Resta di fatto che pur bloccando tutto mi ritrovo sempre con migliaia di SYN a che:
1) rubano banda (quanta?); ho una banda di 512k/s in upload
2) rubano risorse al kernel per comunque processarle (e la macchina - slackware 12.2 - non è poi una bomba in quanto a processore)
3) ho dovuto disabilitare i log perchè mi saturava il filesystem
4) tcpdump è illegibile
A questo mi sa che non c'è rimedio. O si?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

notsafe
Linux 2.x
Linux 2.x
Messaggi: 451
Iscritto il: mar 21 mar 2006, 11:00

Re: Bombing dns = DoS

Messaggio da notsafe »

in dipendenza delle query (lecite o in DENY?) puoi provare ad usare fail2ban ben ristretto.
Comunque, se è un DDoS minimamente strutturato (con una botnet abbastanza ampia), con quelle caratteristiche difficilmente potrai fare qualcosa al tuo livello.Più facilmente lo può gestire il fornitore di connettività.

PS: la risoluzione DNS lavora su UDP.Quindi non esiste "SYN".Ma immagino che tu intendevi dire la richiesta di query.

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Re: Bombing dns = DoS

Messaggio da masalapianta »

usa i moduli "recent" e "connlimit" di netfilter (prima che tu lo chieda: no, il modulo connlimit non matcha solo le connessioni a valle del 3 way handshake; matcha anche le connessioni in half-open, quindi va bene per fermare anche un syn-flood; quel che non matcha sono le connessioni in time_wait e in close)

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Re: Bombing dns = DoS

Messaggio da masalapianta »

notsafe ha scritto: PS: la risoluzione DNS lavora su UDP.Quindi non esiste "SYN".Ma immagino che tu intendevi dire la richiesta di query.
no, dns lavora sia in udp che in tcp; inoltre, per query la cui risposta supera i 512byte, obbliga il client al fallback su tcp.

notsafe
Linux 2.x
Linux 2.x
Messaggi: 451
Iscritto il: mar 21 mar 2006, 11:00

Re: Bombing dns = DoS

Messaggio da notsafe »

Lavora anche su TCP.
Il default (e il normale uso della risoluzione)è UDP.E verosimilmente il suo caso è quello (come praticamente la totalità dei flood DNS)
Se fosse su TCP,visto il relativo uso,può bloccare tranquillamente la 53/TCP e stare più o meno tranquillo che quasi nessuno avrà poi problemi (a meno che non ci sia qualche server autorizzato al transfer zone,non fattibile tramite UDP)

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Re: Bombing dns = DoS

Messaggio da masalapianta »

notsafe ha scritto:Lavora anche su TCP.
e io che ho detto?
Il default (e il normale uso della risoluzione)è UDP.E verosimilmente il suo caso è quello (come praticamente la totalità dei flood DNS)
Se fosse su TCP,visto il relativo uso,può bloccare tranquillamente la 53/TCP e stare più o meno tranquillo che quasi nessuno avrà poi problemi (a meno che non ci sia qualche server autorizzato al transfer zone,non fattibile tramite UDP)
non necessariamente, a parte i trasferimenti di zona, può capitare (soprattutto se parliamo di piccoli server su cui girano una moltitudine di servizi tra web, mail, ecc.., zone con campi TXT corposi) che una risposta ad una query possa superare i 512byte; inoltre se è un dos/ddos non ha molto senso chiudere il servizio su tcp, in quanto, se l'attaccante riesce a saturare la banda del bersaglio, l'unica cosa da fare (come hai detto tu in un precedente post) è filtrare il traffico a monte sui router del tuo isp (ma in tal caso non credo che ZeroUno avrebbe chiesto aiuto qui, perchè ogni discussione diventerebbe inutile); viceversa se l'attaccante non arriva a saturarti la banda ma punta ad esaurire le risorse del sistema (ad esempio lasciando una moltitudine di connessioni in half-open), si risolve piuttosto bene filtrando il traffico come ho consigliato in un post precedente.

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: Bombing dns = DoS

Messaggio da ZeroUno »

Mi sa che le connessioni non erano in halfopen ma la query dns completa , ma non ne sono sicuro; l'ho bloccati prima di indagare
tcpdump riporta
13:24:01.963069 IP (tos 0x0, ttl 117, id 11935, offset 0, flags [DF], proto UDP (17), length 66)
72.8.167.141.53 > server.53: [no cksum] 952+ [1au] ANY? ripe.net. ar: . OPT UDPsize=4096 OK (38)


Per sicurezza ho bloccato anche le query tcp, ma mi sa che le riapro, almeno mi assicuro il transfer zone (magari ci metto un log oppure filtro per ip del dns slave).

Il firewall mi dice che ci sono pochi tentativi su tcp:

456K 30M DROP udp -- eth1 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
59 2740 DROP tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
(circa in un paio di ore)

Si, ho detto SYN per intendere nuova connessione. Non conosco bene l'udp e non uso più i flag syn/ack dai tempi di ipchains visto che iptables ha il metodo degli stati che è decisamente migliore.

Bloccandolo con il firewall sembra che si naviga decentemente, visto che il firewall dall'output che ho dato blocca 30M in due ore e la cpu ha un idle del 100% :D (fondamentalmente la macchina è un firewall; fa qualche servizio ma molto minoritario.

Come si usano "recent" e "connlimit" ? (ovvio, intanto me li studio con google, ma se hai qualche consiglio nel frattempo ... ;-) )
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: Bombing dns = DoS

Messaggio da ZeroUno »

Vediamo se ho capito bene recent e connlimit.

Con il primo gli dico tipo "x secondi tra una connessione e l'altra"
Con il secondo gli dico tipo "y connessioni simultanee al massimo"

A quanto setto x e y?

Dai log ho visto che in fondo ho pochi accessi, vuoi perchè il sito è piccolo (praticamente lo usano solo una 50ina di persone, per lo più smtp, pop e webmail), vuoi per la cache dns dei provider, mi ritrovo con poche richieste nei log.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Re: Bombing dns = DoS

Messaggio da masalapianta »

ZeroUno ha scritto:Vediamo se ho capito bene recent e connlimit.

Con il primo gli dico tipo "x secondi tra una connessione e l'altra"
Con il secondo gli dico tipo "y connessioni simultanee al massimo"
prima ti crei una catena pippo, poi con recent schiaffi in pippo i pacchetti con srcip che stanno gia nella recent list e(ne aggiorni il timestamp con --update) e che non sono scaduti (con --seconds), poi con una seconda regola usi connlimit per infilare in pippo i pacchetti che eccedono il limite impostato con connlimit e recent per infilare il srcip nella recent list; poi ovviamente dei pacchetti che finiscono in pippo fai quel che vuoi (reject, drop, mark e traffic shaping, ecc..)
A quanto setto x e y?
impossibile dirlo a priori, dipende da mille cose (la tua banda, il massimo troughput del flood e la sua stabilità o meno, quanta banda usi per i tuoi servizi e come la usi, quante connessioni aperte può reggere il tuo sistma, ecc..); fai delle prove e aggiusta il tiro.

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: Bombing dns = DoS

Messaggio da ZeroUno »

Ok, grazie.
masalapianta ha scritto:
A quanto setto x e y?
impossibile dirlo a priori, dipende da mille cose
Al momento voglio limitare solo il dns.
Prima voglio essere sicuro che il sistema di filtraggio funzioni bene, visto che non l'ho mai fatto e dai test che ho fatto finora mi sfuggono alcune cose ancora; per esempio mi funziona se metto solo connlimit o solo recent, ma quando li metto insieme si incastrano sembra.


Ma quello che intendevo è, per un dns, considerando che principalmente si lavora con la cache dei dns di provider o locali, in _teoria_ basterebbe anche 1 connessione simultanea, e 1 al minuto sarebbe quasi pure troppo.
E conviene (per recent) fare limitazioni del tipo, per esempio, massimo 1 ogni 5 secondi o qualcosa tipo 10 ogni 50 secondi? Il risultato è lo stesso.. in 50 secondi non mi fai più di 10 richieste, ma nel primo caso significa che mi posso fare appunto una ogni 5 secondi, quindi se l'utente che naviga mi chiede www.miodomino.it e poi www2.miodominio.it deve aspettare 5 sec. se invece chiede due volte www la seconda se lo prende dalla cache sua o del provider; nel secondo caso invece l'utente si può fare le sue belle 10 richieste tutte insieme (nel rispetto di connlimit comunque) e poi aspettare 49 secondi se gli serve www11.miodominio.it oppure prendersi comunque un sito ogni 5 secondi.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Rispondi