HOW TO dinamically blacklist IP addresses with Phrel

phrel rate limiterLo scenario e’ il seguente: avete un server che gestisce servizi come DNS, web server o mail, vi trovate a un certo punto con un problema di risorse limitate o eccessivamente usate e vorreste uno strumento che riesca a blacklistare (completamente o parzialmente) gli ip che fanno piu’ traffico verso i vostri servizi.
L’applicazione e’ nata inizialmente per blacklistare gli ip che eseguivano attacchi DDOS o brute force, ma e’ utilizzabile per molte altre attivita’ di tuning del server.
Phrel, e’ un software scritto in C, che permette di aggiungere regole iptables dinamicamente a seconda delle soglie prestabilite e dei servizi controllati.
Mettiamo per es. che abbiamo un web server con un virtual host che fa parecchio traffico e che diverse volte viene intasato di richieste mettendo tutto il servizio in uno stato irraggiungibile o comunque rallentandolo parecchio.
Con Phrel settato a dovere riusciremo a blacklistare gli ip che fanno troppe richieste operando su diversi fattori:

Con delle semplici regole potremo limitare l’accesso al nostro servizio:

Se l’ip X richiede piu’ di 30 PPS (packet per second) phrel crea un chain iptables che blocca tale ip a non richiedre piu’ di 10 PPS oppure blocca completamente l’ip X se i PPS superano i 50, l’ip viene sbloccato dopo 300 secondi se le richieste si sono normalizzate.

che si riassume nel comando:

/usr/local/bin/phreld -p 80 -T 30:10 -T 50:0 -D 300

o con il file di configurazione:

port 80
protocol tcp

<threshold>
pps 30
rate 10
decay 300
</threshold>

<threshold>
pps 50
rate 0
decay 300
</threshold>

Ovviamente Phrel puo’ essere usato in diversi ambiti per esempio:

Io al momento lo sto usando sul mio web server personale (dove risiede anche questo blog) per ridurre il traffico del mio Proxy Web che essendo abbastanza richiesto riceve migliaia di richieste al giorno saturando saltuariamente la banda.

Phrel accetta sia parametri via riga di comando sia un file di configurazione. Le opzioni sono diverse ed e’ molto semplice da settare al meglio con risultati alquanto soddisfacenti.

L’unica pecca e’ che sembra crashare casualmente dopo tot giorni senza un apparente motivo, purtroppo non riusciamo a capire quale sia il problema, e lo sviluppatore sembra scomparso nel nulla, peccato perche’ e’ un gran bel pezzo di software e speriamo vivamente che venga ripreso il suo sviluppo al piu’ presto.

Post simili:

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

One Response to “HOW TO dinamically blacklist IP addresses with Phrel”
  1. HOW TO limit memory usage in Mysql & Apache
    12:02 on June 14th, 2007

    […] a queste soluzioni vi consiglio anche di utilizzare Phrel, opportunatamente configurato, per limitare l’utilizzo delle risorse da parte di IP unici che effettuano piu’ connessioni […]

Leave a comment

(required)

(required)


*

Categories