InjectionDenied: detección y bloqueo de ataques PHP y SQL |
REDES - SEGURIDAD | |||
Escrito por Fernando Acero | |||
Después de revisar un poco lo que hace DenyHosts, vamos a ver la forma de configurar e instalar InjectionDenied, que es un sencillo programa de Jordi Blasco Pallarés, que hace algo muy similar a lo que hace DenyHosts con el demonio SSH, pero en este caso bloquea las IPs desde las que se intentan hacer inyecciones PHP o SQL a un servidor web. Este programa está basado en bash/gawk, por lo que es muy sencillo de entender y modificar aunque, como es lógico, tenemos que tener instalado gawk en nuestro sistema si queremos que InjectionDenied funcione adecuadamente...
INSTALACIÓN Y CONFIGURACIÓN DEL PROGRAMA
Para instalar el programa, basta con bajarse la última versión de Sourceforge, la 0.0.1: wget http://downloads.sourceforge.net/injectiondenied/injectiondenied-0.01.tar
Una vez que tengamos el programa, será necesario extraer los archivos: tar -xf injectiondenied-0.01.tar
El programa consta de tres archivos, que deben estar en las trayectorias que se indican: /etc/init.d/injectdenied (que debe ser ejecutable)
Yo soy usuario de Mandriva y este programa está pensado para Debian, por lo que usa ciertos recursos específicos para Debian, como start-stop-daemon. La solución es instalar el paquete dpkg que contiene este recurso; para ello, usaremos el comando siguiente: urpmi dpkg
El programa tal como está no funciona; es necesario configurar algunas cosas antes de arrancarlo por primera vez. Primero editaremos /usr/local/bin/hackreport.sh y cambiaremos las líneas siguientes, para que apunten a nuestro archivo de logs de acceso al Apache, en mi caso /var/log/httpd/access_log: gawk -v RULE="$i" '{if(match ($7,RULE)!=0){print $1}}' /var/log/httpd/access_log >> /tmp/banned_ip.dat
También modificaremos las líneas siguientes, para que los correos con las alertas lleguen a la cuenta de correo que deseemos: mail -s "[INJECT] Possibles intents de Hack" Esta dirección electrónica esta protegida contra spambots. Es necesario activar Javascript para visualizarla < /tmp/hack.log
Finalmente hay que modificar /etc/init.d/injectdenied para que permita la opción restart, elimine el proceso y para que muestre información sobre el PID que se ha arrancado. El código de pruebas que estoy usando es éste; es muy parecido al original, pero no me convence demasiado y es posible que lo cambie para que use el mandato "daemon" en lugar de start-stop-daemon, por ser más cercano al Linux Standard Base: start)
Como se puede ver, el mandato restart es simplemente la copia de los mandatos stop y start sin la finalización de stop ";;" para que siga con la ejecución del arranque tras parar de forma efectiva el proceso.
Como no estoy seguro de su estabilidad, lo he metido en cron.hourly para que se reinicie cada hora. Por el momento tengo este programa en pruebas, por lo que poco puedo decir de su funcionamiento en este momento, aunque también es cierto que en algunas cosas me parece algo incompleto, por ejemplo, no tenía el código para restart. De todos modos, también estoy usando Snort con psad y los módulos apache_ModSecurity y suhosin, entre otros en mi servidor, todos ellos más que recomendables, por lo que no creo que su funcionamiento sea demasiado crítico para mejorar la seguridad de mi servidor, pero por probar no se pierde nada.
|
|||
Ultima actualización ( 20 de Septiembre de 2008 ) |