En cierto momento me he visto obligado a bloquear una IP que nos estaba tirando un website porque habían programado un robot que lanzaba consultas bestiales cada poco, y por circunstancias no tenía acceso rápido al firewall.

¿Y porque tanto Apache como Tomcat? Porque el ‘procesado’ del mod_jk con el que las aplicaciones redirigen el contenido de servlet a Tomcat se realiza fuera de las directivas de los permisos deny-allow sobre un directorio web…

Así que si queremos bloquear pongamos la IP 10.10.10.252, en en extra/httpd.conf del Apache pondríamos algo tipo:

<Directory “/data/apache/htdocs/website/”>
Order allow,deny
Allow from all
Deny from 10.10.10.252
LanguagePriority en cs de es fr it nl sv pt-br ro
ForceLanguagePriority Prefer Fallback
</Directory>

Y en el server.xml de Tomcat basta configurar una Valve en el Engine tal que:

(…)
<Engine name=”Catalina” jvmRoute=”tomcat” defaultHost=”localhost” debug=”0″>
<Valve className=”org.apache.catalina.valves.RemoteAddrValve” deny=”10.10.10.252″ />
(…)