Linux: prevenire inondazioni TCP in uscita


9

Gestisco diverse centinaia di server web dietro loadbalancer, ospitando molti siti diversi con una pletora di applicazioni (di cui non ho alcun controllo). Circa una volta al mese, uno dei siti viene violato e viene caricato uno script di alluvione per attaccare una banca o un'istituzione politica. In passato, si trattava sempre di alluvioni UDP che venivano effettivamente risolte bloccando il traffico UDP in uscita sul singolo server web. Ieri hanno iniziato a inondare una grande banca americana dai nostri server utilizzando molte connessioni TCP alla porta 80. Dato che questo tipo di connessioni sono perfettamente valide per le nostre applicazioni, il loro blocco non è una soluzione accettabile.

Sto considerando le seguenti alternative. Quale consiglieresti? Li hai implementati e come?

  • Limite sui pacchetti TCP in uscita del server web (iptables) con porta di origine! = 80
  • Lo stesso ma con la coda (tc)
  • Limite di velocità del traffico in uscita per utente per server. Piuttosto un onere amministrativo, in quanto vi sono potenzialmente migliaia di utenti diversi per server delle applicazioni. Forse questo: come posso limitare la larghezza di banda per utente?
  • Qualunque altra cosa?

Naturalmente, sto anche cercando dei modi per ridurre al minimo la possibilità che gli hacker entrino in uno dei nostri siti ospitati, ma poiché quel meccanismo non sarà mai impermeabile al 100%, voglio limitare fortemente l'impatto di un'intrusione.

Aggiornamento: attualmente sto testando queste regole, che avrebbero impedito questo attacco specifico. Come proporresti di renderli più generici? Mi sto perdendo un noto attacco DoS TCP quando ho solo il limite di velocità sui pacchetti SYN?

iptables -A OUTPUT -p tcp --syn -m limit --limit 100/min -j ACCEPT
iptables -A OUTPUT -p tcp --syn -m limit --limit 1000/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A OUTPUT -p tcp --syn -j REJECT --reject-with tcp-reset

Saluti!

Risposte:


3

Le migliori soluzioni possibili per la mia opinione e quella che ha funzionato molto bene per me è limitare il numero di connessioni / pacchetti per l'ip di destinazione. L'impostazione di un limite a una velocità ragionevole impedirà all'attaccante di inviare una grande quantità di connessioni al bersaglio. L'impostazione della porta e del protocollo non è una buona idea perché se l'attaccante sta inviando http flood oggi, domani utilizzerà un diverso tipo di attacco. così limitando le connessioni per ip come generale sarebbe una soluzione al tuo problema.

Spero possa essere d'aiuto :)


-3

La posizione che ho sempre preso è che un server web non dovrebbe effettuare connessioni TCP in uscita, ma solo inviare traffico come server in risposta a richieste in entrata. (Consento anche TCP in entrata solo per il server web e SSH.) agli attacchi effettuati sui tuoi sistemi (gli hacker non possono ottenere una finestra xterm o inviare il loro toolkit al tuo host).


OK, quindi come va un sito Web e recupera un feed RSS da un altro sito Web, quindi?
Michael Hampton,
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.