Registrar ataques fail2ban con geolocalización en mysql

por | 1 febrero, 2018

Actualizado el 01/02/2018

Se ha mejorado el script utilizando una base de datos local para la geolocalización. También se incluye más información sobre la ubicación, aparte de mejoras para simplificar el script que realizar el insert en la base de datos.

Después de algunas entradas que había publicado sobre el tema, he querido ir más allá. La idea es registrar todos intentos fallidos que recibimos con los avisos de Fail2ban en una base de datos y, aparte de eso, obtener la geolocalización de cada IP e incluirla en la tabla. Esto os puede servir para sacar estadísticas de ataques que reciben en sus servidores y establecer medidas de seguridad en el caso de que se incremente los ataques en algún servicio en especial. También podemos obtener, por ejemplo, un listado de las IPs que más se repiten o de las ubicaciones desde las cuales recibimos más ataques. Esta sería la versión beta y, por supuesto, está abierta a mejoras.

Fail2ban con geolocalización en mysql

Instalar herramienta geoiplookup, que nos ayudará a realizar la consulta de las IPs baneadas por Fail2ban y extraer información sobre la ubicación.

Creamos carpeta que va a contener toda la información relacionada con el script.

Cambiamos al directorio recién creado.

Descargar base de datos de ciudades, lo que nos servirá para ampliar la información obtenida con la herramienta geoiplookup.

Ahora vamos a descomprimir el archivo descargado en la carpeta que hemos creado anteriormente. Debemos de tener en cuenta que esta base de datos debería de ir actualizándose con cierta frecuencia. Una buena práctica sería crear una entrada en cron para realizar dicha actualización, así nos aseguramos de tener la base de datos siempre actualizada.

Crear base de datos fail2ban

En primer lugar debemos conectarnos a mysql, ya sea desde la consola, con phpmyadmin o cualquier otro cliente. En este caso lo estamos haciendo desde la consola, esto es necesario para ejecutar los comandos que nos ayudarán a crear la base de datos donde volcaremos toda la información obtenida.

Iniciamos sesión en mysql con un usuario que tenga privilegios para crear bases de datos.

Ahora creamos la base de datos fail2ban con el siguiente comando.

Crear usuario mysql

Para seguridad nuestra, vamos a crear un nuevo usuario desde el cual realizaremos las acciones de insert en la base de datos fail2ban y otogaremos todos los permisos sobre dicha dba.

Crear tabla baneados

Ahora vamos a crear la tabla en la que se van a registrar todos los atacantes, nuestra tabla se llamará “baneados”. Seleccionamos la base de datos con el siguiente comando.

Ahora, con el siguiente comando, creamos la base de datos.

Creamos fichero con script que se ejecutará cada vez que Fail2ban ejecute una acción de baneo.

Script regfail2ban

Cambiamos permisos del script recién creado para que sea ejecutable.

Editamos fichero de acción en Fail2ban que estemos utilizando, dependiendo de cada caso, tendrías que modificar uno o varios archivos. En mi caso he tenido que modificar los siguientes: iptables.conf, iptables-allports.conf y iptables-multiport.conf

Agregamos la siguiente línea justo debajo de la entrada “actionban”

Ejemplo archivo iptables-multiport.conf

Por último reiniciamos fail2ban para que los cambios surtan efecto.

Para confirmar que no hay ningún error podemos hacer la siguiente prueba, la cual insertará una línea en la base de datos que hemos creado con la información de ubicación de la IP pública que hayamos indicado.

Empieza contenido obsoleto

En primer lugar debemos conectarnos a mysql, ya sea desde la consola o con phpmyadmin para ejecutar los comandos que nos ayudarán a crear la base de datos donde volcaremos toda la información.

Crear base de datos fail2ban

Iniciamos sesión en mysql con un usuario que tenga privilegios para crear bases de datos.

Ahora creamos la base de datos fail2ban con el siguiente comando.

Crear tabla baneados

Ahora vamos a crear la tabla en la que se van a registrar todos los atacantes, nuestra tabla se llamará “baneados”. Seleccionamos la base de datos con el siguiente comando.

Con el siguiente comando creamos la base de datos.

Con los comandos anteriores creamos una base de datos y una tabla similar a la que se muestra a continuación.

fail2ban con geolocalización en mysql

Pues bien, ahora vamos a proceder con la creación del script que hará la parte más importante de este proyecto. Crearemos un script en la ubicación que queramos con con el nombre “baneados”.

En las líneas comentadas podrás ver que hace cada parte del script.

Script geolocalización y registro mysql

Damos permisos al script que hemos creado.

Configuración Fail2ban

Ahora necesitamos incluir en las acciones de Fail2ban la ejecución del script que hemos preparado, para ello tenemos que editar la acción o acciones que utilizamos habitualmente, en mi caso sería “iptables-multiport.conf “, en caso de utilizar otro tipo de acciones, realizar la misma operación con el resto.

Editar vi /etc/fail2ban/action.d/iptables-multiport.conf y agregar ruta del script debajo de la línea “actionban”, tal y como se muestra a continuación

Ojo, es importante incluir las variables de <name> y <ip> después de la ruta del script, ya que las necesita para completar la información que se insertará en la base de datos.

Por último solo tenemos que reiniciar fail2ban para que los cambios surtan efecto.

Podéis hacer una prueba ejecutando el script e indicando los parámetros con una IP y Nombre inventados.

Si revisáis en vuestra base de datos, podréis ver el resultado como se muestra a continuación.

fail2ban con geolocalización en mysql

Entradas relacionadas

Envío de avisos Fail2ban con Gmail Si utilizas Fail2ban para bloquear los ataques por fuerza bruta en tu servidor, probablemente estarás interesado en recibir un correo con cada acción ...
Banear y desbanear IPs con IPtables En esta entrada iré incluyendo algunos comandos y scripts que he usado con iptables. Empezamos con lo básico, por ejemplo banear y desbanear una IP o ...
Desbanear IP en Fail2ban Si te has preguntando alguna vez como desbanear IP en Fail2ban de una manera sencilla y limpia, a continuación te paso las claves para realizarlo. En ...