Cualquier servidor de Internet está expuesto a ataques imaginables, que tienen efectos en una de las instalaciones que se presentan a sus usuarios. Uno de los ataques más simples es verificar los pares de nombre de usuario y contraseña de algunos de los usuarios legales del sistema.
Obviamente, los atacantes no conocen nuestras contraseñas, pero si no hemos configurado una fórmula que lo impida, pueden realizar un número ilimitado de intentos de inicio de sesión, buscando con nombres de usuario y contraseñas hasta que logran localizar un par de usuario/contraseña legal.
Por supuesto, este procedimiento de prueba y error se realiza a través de máquinas o bots, configurados a través de los atacantes, que realizan intentos repetitivos para acceder al servidor, simplemente buscando claves aleatorias. Este tipo de ataque se denomina «ataque de fuerza bruta».
La mayoría de las veces, el ataque intenta tomar el servidor, buscando nombres de usuario y contraseñas que les permitan conectarse al servidor a través de SSH. Pero en la práctica, todas las instalaciones de software instaladas en el servidor pueden ser vulnerables a los ataques de fuerza bruta. Esto incluye SSH en sí mismo, servidores de correo electrónico, servidores FTP o servidores de Internet, o incluso autenticación en programas de Internet como WordPress.
Fail2Ban es un programa suelto que se puede tener en Linux y otros sistemas operativos como MacOS. Este software monitorea el acceso a los sistemas del servidor y pone en la lista negra las direcciones IP que fallan varias veces en los intentos de autenticación.
Puede usarlo para bloquear direcciones IP que fallan en sus intentos de autenticarse en SSH, pero también en otras que requieren acceso con nombre de usuario y contraseña, como FTP, POP, etc.
Gracias a Fail2Ban, podemos mitigar los ataques de fuerza bruta de forma eficaz. También es muy sencillo utilizar Fail2Ban, para prohibir las direcciones IP que han realizado varios intentos fallidos repetidos de acceder al servicio.
En este artículo, detallaremos cómo funciona Fail2Ban y veremos un ejemplo concreto de cómo puede usarlo para proteger el acceso SSH al servidor.
Se instala sin problemas el programa, los repositorios oficiales de nuestro sistema. En el caso de Ubuntu, o cualquier otro sistema basado en Debian, hacemos lo siguiente:
Si no es Ubuntu o Debian, querrá instalarlo a través del software de instalación de su distribución.
En Fail2Ban, existe el concepto de «prisión». Las «cárcel» son los sistemas que veremos con Fail2Ban.
Los archivos de configuración de la prisión están en el registro /etc/fail2ban.
En esta carpeta, tendremos un registro llamado jail. conf que establece la configuración de «inicio» para Fail2Ban.
Puede abrir este registro con el comando:
Dentro de jail. conf encontrarás mucho código y muchos comentarios, los cuales te darán cuenta de las definiciones. En este registro habrá otras partes, las cuales están precedidas por texto entre paréntesis.
En el segmento [DEFAULT] ubicamos la configuración predeterminada que tendrán todos los delincuentes. Todos los parámetros que establezca en [DEFAULT] son heredados por el delincuente que se explica a continuación. A continuación, haremos una búsqueda de las configuraciones vitales máximas.
A continuación, localizarás todas las cárceles que Fail2Ban es capaz de procesar, que son numerosas, ya que es capaz de blindar multitud de servicios. En cada cárcel en concreto, puedes restablecer la configuración [DEFAULT].
Algunas de las muchas prisiones que se tendrán en Fail2Ban son:
Esta es la prisión de servicio SSH. Il especifica la configuración de Fail2Ban para SSH.
Únicamente a efectos informativos (ya que aún no hemos comenzado a realizar las configuraciones), este delincuente comprende un código como este:
Entre las configuraciones del criminal [ssh], podemos ubicar el rastro del registro de registro que deberá interpretarse para percibir la cantidad de accesos fallidos de los usuarios.
A veces, [ssh] criminal se explica como [sshd]. No sé a partir de qué edición sucede esto, pero en cualquier caso todas y cada una de las veces que configuré Fail2ban esos dos criminales son equivalentes.
Este es el delincuente para la autenticación implementado en el servidor Apache. A veces, este delincuente solo parece [apache].
El código que encontraremos posiblemente se vería así:
Se lo estoy mostrando para que pueda ver que las rutas a los archivos de registro están en variables. Estas variables se pueden configurar en archivos externos a jail. conf, como paths-debian. conf o paths-common. conf.
Hay muchas cárceles predefinidas, algunas incluso de programas de Internet como [drupal-auth], [internetmin-auth] o similares.
Todas las prisiones especificadas en jail. conf están allí como definiciones y configuraciones fundamentales predeterminadas. Podemos percibirlo como un directorio innegable de todo lo que Fail2Ban es capaz de hacer. Sin embargo, todas esas prisiones deberán activarse explícitamente para que funcionen. esto nos informará cómo configurar Fail2Ban.
El registro que acabamos de abrir, jail. conf, no se debe tocar, porque en las actualizaciones de Fail2Ban puede reemplazar y sobrescribir nuestras propias configuraciones. En su lugar, usaremos el registro llamado jail. local, también se colocará en /etc/fail2ban carpeta.
El registro jail. local se cargará después de jail. conf y se puede anular a través de sus parámetros, por lo que se tiene en cuenta todo lo que escribimos en jail. local.
Si este registro está en la carpeta, podemos crearlo nosotros mismos.
Puede usar otros editores como nano: sudo nano jail. local.
En prison. local podemos incorporar todas y cada una de las cárceles que necesitemos, habrá una por defecto con una configuración no habitual para todas las cárceles y alguna otra cárcel rápida para cada uno de los servicios que necesitemos tramitar.
El criminal por defecto que ya conoces. Se llama [DEFAULT] y luego habrá un criminal consistente con el servicio, siendo el máximo no raro [ssh], para conexiones al servidor SSH.
En el siguiente código, puedes ver una configuración de ejemplo para el archivo jail. local. Veremos el código completo y pronto hablaremos de cómo funciona.
Las secciones [DEFAULT] y [ssh] son pautas para la configuración general y la configuración de SSH.
En [DEFAULT], tenemos varios valores:
En [ssh], todos los parámetros de [DEFAULT] se heredan, podemos anularlos si es necesario. También dijimos:
Después de convertir los valores de jail. local, queremos reiniciar el servicio para que los ajustes surtan efecto.
Para realizar las operaciones de gestión de Fail2Ban utilizamos el consumidor llamado fail2ban-consumer.
El consumidor que nos quiere comprobar el prestigio de Fail2Ban, hay un comando genérico para saber el prestigio del servicio:
Este comando nos mostrará el general de Fail2Ban y los nombres de las prisiones que tenemos configuradas y activas.
Además, tenemos una orden para verificar el prestigio de un criminal específico, indicando la llamada del criminal que debemos examinar.
Al ver el prestigio de la prisión ssh, o cualquier otra, nos mostrarán conocimientos atractivos como los accesos fallidos, el registro de registro procesado o los usuarios baneados últimamente o el contador de usuarios baneados a lo largo del tiempo. Es atractivo ver cómo, con el paso de los días o semanas, esos valores se acumularán significativamente. Esto puede darnos una idea de la importancia de tener este software activo en nuestros sistemas.
Otra operación administrativa no inusual, de la que no hablaremos en este artículo porque ya se ha hablado, es deshabilitar una IP. Si está interesado, lea estas preguntas frecuentes para informarse sobre cómo desbloquear en el pasado direcciones IP prohibidas con Fail2Ban.
Fail2Ban es uno de esos sistemas imprescindibles que tendremos que instalar si tenemos un servidor a nuestro cargo. Al poco tiempo de instalar el programa y dejarlo correr en el servidor, veremos que son muchos los intentos de acceso fallidos que Fail2Ban bloqueará.
Esto es muy útil y creará una barrera significativa, no solo para SSH (que es suficiente), sino también para cualquier otro servicio que necesitemos proteger. propósitos que no son tan vitales pero pueden cargar cualquier cosa de valor.