reading

Informatica

Phrel – Per Host Rate Limiter

Phrel è l’acronimo di “Per Host Rate Limiter” ed è un programma che si occupa di monitorare il traffico in arrivo verso il proprio server (ovviamente per i protocolli/porte indicati nella sua configurazione) ed utilizzando le chain di iptables permette di Limitare oppure Bloccare un host.
Phrel inserisce in una chain di iptables l’host che non rispetta i suoi parametri configurati, ed essa viene rimossa automaticamente quando l’host che sta effettuando traffico anomalo ritorna nella soglia, altrimenti rimane bloccato/limitato per il tempo indicato.

Questa soluzione è solitamente usata per proteggere i server che fanno da DNS (domain name system) da richieste massive di risoluzioni (DNS Flooding etc.) ma è anche utilizzato per limitare la banda verso i webserver.
Phrel dispone anche della possibilità di Logging (si deve redirigere il traffico dal syslog al path apposito), ed è possibile inserire piu’ threshold.

Attenzione, è possibile nella configurazione indicare quali classi di IP escludere/includere, però una volta inserita una classe nell’ lo sarà per tutti i treshold, e quindi non è possibile configurare che per tutti gli indirizzi IP la soglia sarà 20, mentre per la classe X sarà 50, per fare ciò bisognerà creare due configurazioni e lanciare piu’ istanze di Phrel.

Per lanciare Phrel in versione di test (quindi che stampa solo a video e non inserisce in iptables) basta inserire test all’inizio della configurazione e riavviare il demone.

#
# Esempio di configurazione Phreld
#
#test  # rimuovendo il commento phrel sarà lanciato in test mode.
 interface  eth1 # Interfaccia dove ascolta
 port 53 #la porta in ascolto, ad es. UDP
<threshold> #PRIMA SOGLIA
 pps 10 # Pacchetti MAX al secondo
 rate  5 # Limita l'host a 5 max al secondo
 burst 5 # se non erro pacchetti di tolleranza in piu' del limite
 decay 600 # Tempo di blocco in secondi

</threshold>

#
# Classi che NON deve considerare
#
 <exclude> prefix  192.168.0.1/24
 prefix  10.0.0.1/32
 </exclude>

interval 10 # Intervallo in secondi di controllo PPS
 iptables  /sbin/iptables # Path di Iptables

stats /app/phreld/phreld.stat # File delle statistiche
 dump /app/phreld/phreld.dump # dump hash di phreld
 debug  6 # level di debug


E’ possibile inserire piu’ di un THRESHOLD!

Esempio di BLOCK con doppia threshold:
Con 34 query/sec viene inserito nel primo threshold:

#
server01 phreld[20857]: changing threshold for 192.168.1.1 from 0 to 20 (pps 34, rate 20, burst 5, decay 600) server01 phreld[20857]: inserting chain 192.168.1.1-20-20857

Con 102 query/sec, superando quindi le 50 q/sec viene inserito dal primo al secondo threshold:

#
server01 phreld[20857]: changing threshold for 192.168.1.1 from 20 to 50 (pps 102, rate 0, burst 5, decay 86400) server01 phreld[20857]: inserting chain 192.168.1.1-50-20857

La conf è stata messa che se supera 20 q/sec viene limitato a 20 q/sec per 600 secondi, se supera le 50 q/sec viene messo a 0 per 86400 secondi.

Per maggiori informazioni:

http://www.digitalgenesis.com/software/phrel/manual/phreld.html

Categorie

Archivi