No puede depender solo de Java … también tendrá que observar de cerca su arquitectura de implementación. Básicamente debes asegurarte de que:
1. Todos los servidores en su DC tienen el mismo código implementado cada vez (Esto se puede lograr usando una SAN para almacenamiento común y montando máquinas virtuales en él, o configurando alguna replicación como Rsync)
2. El jar IPS (Sistema de prevención de intrusiones) que cree, tendría un filtro, y este filtro debería incluirse en el web.xml de todos sus archivos de guerra desplegados.
- Cómo hackear un sitio web usando SQL u otro método
- Cuando tenemos firmas digitales, ¿por qué necesitamos el concepto de código de autenticación de mensaje?
- ¿Qué es el antivirus?
- Cómo descifrar un archivo zip que tiene una contraseña de 50 caracteres
- ¿Hay algún hacker real arrestado por la CIA?
La lógica a escribir en Java
La clase de filtro (de todas las aplicaciones, cuando se invoca, insertará la IP de origen de la solicitud, el tipo de solicitud, el recurso al que se accede en una tabla de base de datos común) y ejecutaría reglas sobre estos datos antes de encadenar la solicitud. Si alguna de las reglas falla, simplemente la bloquearías (no la encadenarías).
¡Qué reglas!
Básicamente, desea verificar si alguien no está abusando del servicio que brinda. Puedes:
1- Bloquear solicitudes de países particulares
2: bloquee las solicitudes si la tasa de acceso de una aplicación en particular es demasiado alta (por ejemplo, obtiene 1000 solicitudes en un minuto para un recurso de una IP, es por eso que estamos manteniendo la base de datos)
3 – Puede verificar si hay CRC
4 – Puede bloquear las solicitudes de publicación / colocación de algunos recursos importantes, como algunas configuraciones
Ahora también es posible que desee mantener un servidor dedicado para desplegar solo la guerra de IPS, y asegurarse de que cualquier solicitud a su dominio pase por ese servidor. Esto implicaría configurar mod_jk o mod_proxy en su frente apache (si lo usa como un servidor web) de manera adecuada y luego cambiar el código escrito en el filtro para reenviar la solicitud a un jboss (servidor de aplicaciones) basado en el contexto de la solicitud original, si todas las reglas están bien.
PD: tenemos cosas como F5 para esto en el mercado y no debes reinventar la rueda 🙂