Lo 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:
- rate limits
- tempo di blacklist
- blacklist totale o parziale
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:
- Per bloccare Ip che fanno troppe richieste ai DNS (basta specificare la porta 53 del protocollo udp)
- Per rendere piu’ sicuro l’accesso SSH e impedire i brute force attack (porta 22 protocollo tcp)
- Per prevenire attacchi DDOS ai web server o semplicemente per limitarne l’utilizzo massiccio da parte di singoli ip (porta 80 protocollo tcp)
- Prevenire attacchi con richieste multiple verso gli SMTP server (porta 25 protocollo tcp)
- ecc…
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.