Introducción
Cualquier servicio expuesto a la red puede ser un objetivo potencial. Podemos notar fácilmente numerosos intentos de conexión no programados al leer los archivos de registro de nuestro servidor.
Fail2ban es una herramienta que puede ayudarnos a monitorear y bloquear todas las conexiones no autorizadas a nuestro servidor.
Fail2ban modifica automáticamente la configuración del firewall de IPtables si es necesario, para bloquear direcciones IP no autorizadas.
En esta guía, le mostraremos cómo instalar y usar Fail2ban en un servidor Ubuntu 20.04 LTS Focal Fossa.
Si desea instalar Fail2ban en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conectando al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no usa el usuario raíz, puede iniciar sesión con otro nombre de usuario usando el mismo comando, luego cambie la raíz a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Instalar Fail2ban
Fail2ban está disponible en los repositorios predeterminados de Ubuntu, por lo que se puede instalar fácilmente a través de apt:
sudo apt update
sudo apt install fail2ban
Podemos encontrar los archivos de configuración de Fail2ban en el directorio /etc /fail2ban. El archivo principal para modificar es jail.conf.
jail.conf pueden ser sobrescritos por las actualizaciones de paquetes, por lo que recomiendo hacer una copia de este archivo que llamaremos jail.local, esto va a sobrescribir el original. De esta forma no tendremos problemas incluso después de las actualizaciones del paquete Fail2ban.
La sección principal de jail.conf (jail.local, nuestra copia) se llama [DEFAULT]. A continuación, encontramos las distintas secciones de los servicios individuales, como [sshd].
Creemos nuestro archivo jail.local desde la terminal:
sudo nano /etc/fail2ban/jail.local
Peguemos el siguiente texto:
[DEFAULT]
# Ban hosts for one hour:
bantime = 3600
# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport
[sshd]
enabled = true
Hemos configurado un nuevo tiempo bantime predeterminado de una hora para todos los servicios. bantime
es el tiempo durante el cual se bloquea la IP. Cuando no se especifica ningún sufijo, el valor predeterminado es segundos. De forma predeterminada, el bantime
se establece en 10 minutos. Generalmente, la mayoría de los usuarios querrán establecer un período de prohibición más largo. Cambie el valor a su gusto:
bantime = 1d
Si desea establecer una prohibición permanente, cambie el valor del parámetro bantime a -1:
bantime = -1
Guarde y cierre el archivo.
Ahora podemos reiniciar el servicio Fail2ban usando systemctl:
sudo systemctl restart fail2ban
Para verificar el estado de Fail2ban:
sudo fail2ban-client status
Para obtener información más detallada, como la lista de direcciones IP prohibidas, emita este comando:
sudo fail2ban-client status sshd
Para monitorear las acciones recientes de Fail2ban:
sudo tail -F /var/log/fail2ban.log
Configurar Fail2Ban
A continuación se ofrecen algunos consejos para configurar Fail2ban.
Abramos el archivo jail.local nuevamente:
sudo nano /etc/fail2ban/jail.local
En la sección [PREDETERMINADO], si queremos recibir correos electrónicos de notificación de Fail2ban, agregue los siguientes elementos:
destemail = [email protected]
action = %(action_mwl)s
Puede agregar direcciones IP, rangos de IP o hosts que desee excluir de la prohibición ignoreip
Aquí debe agregar la dirección IP de su PC local y cualquier otra máquina que desee incluir en la lista blanca.
Descomente la línea que comienza con ignoreip
y agregue sus direcciones IP separadas por un espacio:
ignoreip = 127.0.0.1/8::1 123.123.123.123 192.168.1.0/24
De forma predeterminada, el puerto utilizado para las conexiones ssh es el 22. Si usa un puerto diferente, necesita cambiar la configuración:
En la sección [sshd], en enabled = true agregamos el puerto:
port = LA_TUA_PORTA
Agreguemos la ruta del archivo de registro que vamos a usar:
logpath = /var/log/auth.log
Podemos cambiar la cantidad de intentos de inicio de sesión antes de ser baneados:
maxretry = 3
Resumen:
[DEFAULT]
# Ban hosts for one hour:
bantime = 3600
destemail = [email protected]
action = %(action_mwl)s
ignoreip = TUO_IP
# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport
[sshd]
enabled = true
port = LA_TUA_PORTA
logpath = /var/log/auth.log
maxretry = 3
Guarde y cierre el archivo.
Reinicie Fail2ban:
sudo service fail2ban restart
Para verificar el estado de Fail2ban:
sudo fail2ban-client status
Desbloquear una dirección IP
Para desbloquear una dirección IP manualmente, escriba el siguiente comando desde la terminal:
fail2ban-client set sshd unbanip INDIRIZZO_IP
Cárceles Fail2ban
Fail2ban utiliza un concepto de cárcel. Una prisión describe un servicio e incluye filtros y acciones. Las entradas de registro que coinciden con el patrón de búsqueda se cuentan y las acciones correspondientes se realizan cuando se cumple una condición predefinida.
Fail2ban viene con varias cárceles para diferentes servicios. También puede crear sus propias configuraciones de cárcel.
De forma predeterminada, solo está habilitada la cárcel ssh. Para habilitar una cárcel, debe agregar enabled = true
después del título de la cárcel. El siguiente ejemplo muestra cómo habilitar la cárcel proftpd:
[proftpd]
port = ftp,ftp-data,ftps,ftps-data
logpath = %(proftpd_log)s
backend = %(proftpd_backend)s
La configuración que discutimos en la sección anterior se puede establecer por cárcel. Aquí hay un ejemplo:
[sshd]
enabled = true
maxretry = 3
findtime = 1d
bantime = 4w
ignoreip = 127.0.0.1/8 23.34.44.55
Los filtros se encuentran en el /etc/fail2ban/filter.d
, almacenados en un archivo con el mismo nombre que la cárcel. Si tiene una configuración personalizada y experiencia con expresiones regulares, puede ajustar los filtros.
Siempre que se cambia un archivo de configuración, el servicio Fail2ban debe reiniciarse para que los cambios surtan efecto:
sudo systemctl restart fail2ban
Conclusión
La instalación y configuración de Fail2ban en Ubuntu 20.04 LTS Focal Fossa ha finalizado.