Ecco una soluzione. Questo non influenzerà le persone che utilizzano un proxy. Il team Apache Tomcat non considera questa vulnerabilità in Tomcat o prevede di rilasciare una patch. Questo codice bloccherà anche altri metodi di attacco ddos. ps non l'ho scritto.
BLACKLIST = cat /usr/local/AS/etc/blacklist.txt
per i in $ BLACKLIST; fare
iptables -A INPUT -p tcp -m tcp --dport http -s $ i -j DROP
fatto
- # IP che non verranno mai rifiutati - host partner
WHITELIST = * *** INSERISCI IL TUO WHITELIST IPS QUI ** * ***
per i in $ WHITELIST; fare
iptables -A INPUT -p tcp -m tcp --dport http -s $ i -j ACCEPT
fatto
- # non abbassare troppo - i browser aprono più connessioni
OVERLIM_NEW = 500
- # limite generale per le nuove connessioni al secondo
INDILIM_NEW = 30
- # limite per singolo IP, nuove connessioni al secondo - impedisce alluvioni
INDILIM_CURRENT = 200
- # limite per IP individuale, connessioni totali - previene il sovradosaggio
CURRENT_EVAL_INTERVAL = 300
- # intervallo di lunghezza per la valutazione dell'uso IP
iptables -N LIMIT_INDIVIDUAL_NEW
iptables -N LIMIT_INDIVIDUAL_CURRENT
iptables -N LIMIT_OVERALL_NEW
iptables -A INPUT -p tcp --dport 80 -m state --state ESTABLISHED -j LIMIT_INDIVIDUAL_CURRENT
iptables -A INPUT -p tcp -dip 80 --syn -m state --state NEW -j LIMIT_INDIVIDUAL_NEW
iptables -A LIMIT_INDIVIDUAL_CURRENT -m recente --set
iptables -A LIMIT_INDIVIDUAL_CURRENT -p tcp --tcp-flags FIN FIN -m recente --remove
iptables -A LIMIT_INDIVIDUAL_CURRENT -m recente --update --seconds $ CURRENT_EVAL_INTERVAL --hitcount $ INDILIM_CURRENT -j DROP
iptables -A LIMIT_INDIVIDUAL_CURRENT -j ACCEPT
iptables -A LIMIT_INDIVIDUAL_NEW -m recent --set
iptables -A LIMIT_INDIVIDUAL_NEW -m recent --update --seconds 1 --hitcount $ INDILIM_NEW -j DROP
iptables -A LIMIT_INDIVIDUAL_NEW -j LIMIT_OVERALL_NEW
iptables -A LIMIT_OVERALL_NEW -m limit --limit $ OVERLIM_NEW / second -j ACCEPT
iptables -A LIMIT_OVERALL_NEW -j DROP