Proteja su servidor Linux con Fail2Ban [Beginner’s Guide]

Hola me llamo Fran. Os traigo un nuevo post sobre el sistema operativo mas molón. Encantado linuxeros.

¿Qué es Fail2Ban?

Si ha habilitado SSH, verifique el historial de inicio de sesión de su servidor Linux. Se sorprenderá al ver una gran cantidad de direcciones IP que intentan acceder a su servidor a través de SSH.

Si no tiene un mecanismo para evitar estos intentos de inicio de sesión, su sistema es susceptible de ataque de fuerza bruta. En general, un script / bot continuará probando una conexión SSH a su sistema, probando diferentes combinaciones de nombres de usuario y contraseñas.

Aquí hay una herramienta como Fail2Ban viene en la imagen. Fail2Ban es un software gratuito y de código abierto que ayuda a proteger su servidor Linux contra intrusiones maliciosas. Fail2Ban desactivará la IP (por un tiempo) si hay varios intentos fallidos de inicio de sesión.

Fail2Ban funciona de forma no estándar con la configuración básica, pero también es extremadamente configurable. Puedes cambiarlo a tu gusto y crear filtros y reglas según tus necesidades.

¿Suena interesante? ¿Por qué no probar Fail2Ban? Lea y siga el resto del artículo y pruebe Fail2Ban usted mismo.

Instalación de Fail2Ban en Linux

Puede darse cuenta de la popularidad de Fail2Ban por el hecho de que está disponible en los repositorios oficiales de las principales distribuciones de Linux. Esto hace que la instalación de Fail2Ban sea una tarea sencilla.

Instale Fail2Ban en CentOS y Red Hat

Debe ser un usuario root o sudo para instalar nuevo software en su sistema.

Debe asegurarse de que su sistema esté actualizado y que tenga Repositorio EPEL instalado.

sudo yum update && sudo yum install epel-release

Ahora puede instalar Fail2Ban con el siguiente comando:

sudo yum install fail2ban

Instale Fail2Ban en Ubuntu y Debian

Primero, asegúrese de que su sistema esté actualizado:

sudo apt update && sudo apt upgrade -y

Ahora instale Fail2Ban con este comando:

sudo apt install fail2ban

Comprensión del archivo de configuración Fail2Ban

Hay dos archivos de configuración principales en Fail2Ban: /etc/fail2ban/fail2ban.conf y /etc/fail2ban/jail.conf. Déjame explicarte lo que hacen.

/etc/fail2ban/fail2ban.conf: Este es el archivo de configuración para las configuraciones operativas del demonio Fail2Ban. Aquí se definen configuraciones como nivel de registro, archivo de registro, socket y archivo pid.

/etc/fail2ban/jail.conf: Aquí es donde ocurre toda la magia. Este es el archivo donde puede configurar cosas como el tiempo de espera predeterminado, la cantidad de descuentos antes de la prohibición de IP, listas blancas, información de correo y más. Básicamente, controlas el comportamiento de Fail2Ban desde este archivo.

Ahora, antes de ir y modificar estos archivos, Fail2Ban le aconseja que haga una copia con un archivo .local para estos archivos conf. Esto se debe a que los archivos de configuración predeterminados se pueden reemplazar durante las actualizaciones y perderá todas sus configuraciones.

sudo cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Ahora entendamos el archivo jail.conf. Si usa el comando less para leer este archivo grande, puede parecer bastante confuso. El archivo conf intenta explicar todo con demasiados comentarios. Entonces, déjame simplificarte esto.

El archivo jail.conf se divide en servicios. Hay [Default] sección y se aplica a todos los servicios. Y luego puede ver diferentes servicios con sus respectivas configuraciones (si corresponde). Todos estos servicios están entre paréntesis. Verás secciones como [sshd],, [apache-auth],, [squid] etc.

Si elimino los comentarios, la pestaña predeterminada se ve así:

[DEFAULT]
ignorecommand =
bantime = 10m
findtime = 10m
maxretry = 5
backend = auto
usedns = warn
logencoding = auto
enabled = false
mode = normal
filter = %(name)s[mode=%(mode)s]
destemail = root@localhost
sender = root@
mta = sendmail
protocol = tcp
chain =
port = 0:65535
fail2ban_agent = Fail2Ban/%(fail2ban_version)s
banaction = iptables-multiport
banaction_allports = iptables-allports
action_abuseipdb = abuseipdb
action = %(action_)s

Déjame decirte el significado de algunos de estos parámetros.

bantime: establece la duración de la prohibición. El valor predeterminado es 10 minutos. findtime: La ventana en la que actuar sobre la IP. El valor predeterminado es 10 minutos. Supongamos que se intenta un inicio de sesión incorrecto desde una determinada IP a las 10:30. Si la misma IP alcanza el número máximo de intentos antes de las 10:40, se desactivará. De lo contrario, el próximo intento fallido después de las 10:40 se considerará el primer intento fallido. maxretry: el número de intentos fallidos antes de que se tomara una acción: la configuración de «advertencia» intenta usar DNS inverso para buscar el nombre de host y deshabilitarlo usando el nombre de host. Si lo establece en no, se denegarán las direcciones IP, no el nombre de host. destemail: la dirección de correo electrónico a la que se enviarán las alertas (debe configurarse) remitente: nombre del remitente en el correo electrónico de notificación mta: agente de transferencia de correo utilizado para notificar los correos electrónicos bancarios: este parámetro usa Archivo / iptables-multipuerto .conf para establecer la acción después el protocolo de reintento fallido máximo: el tipo de tráfico que se eliminará después de la prohibición

Si desea realizar cambios en cualquier prisión (o en toda la prisión), como reintentos máximos, tiempo de prohibición, tiempo de búsqueda, etc., debe editar el archivo jal.local.

Cómo utilizar Fail2Ban para proporcionar un servidor Linux

Permítame mostrarle algunas de las formas en que puede usar Fail2Ban para fortalecer la seguridad de Linux.

Tenga en cuenta que debe ser un usuario root o tener acceso sudo para ejecutar los comandos fail2ban.

Active Fail2Ban en su servidor y verifique todas las prisiones en funcionamiento

Puede usar los comandos systemd para iniciar y activar Fail2Ban en su servidor Linux:

systemctl start fail2ban
systemctl enable fail2ban

Una vez que Fail2Ban está activado, puede ver el estado y los cierres activos con el comando fail2ban-client:

fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

En caso de que se lo pregunte, la cárcel sshd está habilitada de forma predeterminada.

Ver el archivo de registro de Fail2Ban

El archivo de registro de Fail2Ban se encuentra en /var/log/fail2ban.log. Los archivos de registro tienen el siguiente formato:

2019-03-25 07:09:08,004 fail2ban.filter [25630]: INFO [sshd] Found 139.59.69.76 – 2019-03-25 07:09:07
2019-03-25 07:09:36,756 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,757 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,774 fail2ban.actions [25630]: NOTICE [sshd] Ban 159.89.205.213
2019-03-25 07:09:36,956 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,957 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,981 fail2ban.actions [25630]: NOTICE [sshd] Ban 182.70.253.202
2019-03-25 07:09:37,247 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,248 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,589 fail2ban.actions [25630]: NOTICE [sshd] Ban 112.64.214.90

Puede ver que identifica direcciones IP y las deshabilita cuando cruzan el umbral máximo de experiencia.

Ver direcciones IP prohibidas de Fail2Ban

Una forma es verificar el estado de una prisión en particular. Puede utilizar el cliente Fail2Ban para este propósito.

fail2ban-client status <jail_name>

Por ejemplo, si necesita ver todos los inicios de sesión ssh incorrectos prohibidos por Fail2Ban, puede usarlo de la siguiente manera. El resultado mostrará el número total de intentos fallidos y el número total de direcciones IP bloqueadas.

root@test-server:~# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 14
| |- Total failed: 715
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 7
|- Total banned: 17
`- Banned IP list: 177.47.115.67 118.130.133.110 68.183.62.73 202.65.154.110 106.12.102.114 61.184.247.3 218.92.1.150

El sistema que está intentando iniciar sesión a través de SSH desde el inicio de sesión fallido debe recibir un error como este

ssh: connect to host 93.233.73.133 port 22: Connection refused

Cómo deshabilitar permanentemente la IP con Fail2Ban

Ya sabes que la prohibición impuesta a la propiedad intelectual por Fail2Ban es temporal. El valor predeterminado es 10 minutos y el atacante puede intentar iniciar sesión nuevamente después de 10 minutos.

Esto representa un riesgo de seguridad porque los atacantes pueden usar un script que intenta iniciar sesión después de 10 minutos.

Entonces, ¿cómo se establece una prohibición permanente con Fail2Ban? No hay una respuesta clara a esto.

Inicie Fail2Ban versión 0.11, el tiempo de prohibición se calculará automáticamente y el tiempo para deshabilitar las direcciones IP permanentes aumentará exponencialmente.

Pero si verifica su versión de Fail2Ban, probablemente esté usando la versión 0.10.

fail2ban-server --version 
Fail2Ban v0.10.2
Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors
Copyright of modifications held by their respective authors.
Licensed under the GNU General Public License v2 (GPL).

En versiones anteriores, podría usar un tiempo de ejecución negativo (bantime = -1) y esto sería equivalente a una prohibición permanente, pero si prueba este método, probablemente verá un error como «Start fail2ban: ERROR NOK:» la imagen del el disco de la base de datos está formateado incorrectamente ‘,)’.

Una solución menos limpia sería aumentar la duración de la estadía a algo como 1 día, 1 semana, 1 mes o 1 año. Esto puede solucionar el problema hasta que la nueva versión esté disponible en su sistema.

Cómo desinstalar IP bloqueada por Fail2Ban

Primero verifique si la dirección IP está bloqueada o no. Debido a que Fail2Ban se ejecuta en iptables, puede navegar por iptable para ver las direcciones IP prohibidas por su servidor:

iptables -n -L

Es posible que deba usar el comando grep si hay demasiadas direcciones IP prohibidas.

Si encuentra la dirección IP especificada en la salida, está deshabilitada:

Entonces, el siguiente paso es averiguar qué «prisión» prohíbe la IP especificada. Deberá utilizar el comando Grep con los registros de fail2ban aquí.

Como puede ver en el resultado a continuación, la IP está deshabilitada por la cárcel sshd.

root@test-server:~# grep -E ‘Ban.*61.184.247.3’ /var/log/fail2ban.log
2019-03-14 13:09:25,029 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3
2019-03-14 13:52:56,745 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3

Una vez que sepa el nombre de la puerta de bloqueo de IP, puede deshabilitar la IP usando client2 fail2ban:

fail2ban-client set <jail_name> unbanip <ip_address>

Cómo incluir una dirección IP en la lista blanca en Fail2Ban

No sería bueno que lo prohibieran, ¿verdad? Para ignorar la prohibición de la dirección IP de la sesión actual de Fail2Ban, puede incluir la dirección IP en la lista blanca con un comando como este:

fail2ban-client set <JAIL_NAME> addignoreip <IP_Address>

Puede encontrar fácilmente su dirección IP en Linux. En mi caso fue

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
`- 203.93.83.113

Si desea agregar permanentemente la dirección IP a la lista blanca, debe editar el archivo de configuración del obturador. Vaya a la prisión mencionada y agregue la línea de ignorar de la siguiente manera:

ignoreip = 127.0.0.1/8 <IP_TO_BE_WHITELISTED>

Si desea incluir en la lista blanca la IP de todas las prisiones de su sistema, sería una mejor idea editar el archivo /etc/fail2ban/jail.local y agregar una fila en la pestaña Predeterminado, como vimos anteriormente.

Deberá reiniciar Fail2Ban para que este cambio surta efecto.

Cómo ver la lista blanca de IP de la prisión

Puede ver todas las direcciones IP en la lista blanca de la prisión usando este comando:

fail2ban-client get <JAIL_NAME> ignoreip

Debería mostrar todas las direcciones IP que Fail2Ban ignora para esta prisión:

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
|- 127.0.0.0/8
|- ::1
`- 203.93.83.113

Cómo eliminar la IP de la lista blanca de Fail2Ban

Si está eliminando una IP de una lista blanca, puede usar este comando:

fail2ban-client set <JAIL_NAME> delignoreip <IP_Address>

Si desea eliminar permanentemente la IP, debe editar el archivo /etc/fail2ban/jail.local.

¿Qué otra cosa?

Puede hacer muchas más cosas con Fail2Ban. Esta guía le brinda los conceptos básicos para comenzar con Fail2Ban. No he tocado temas como acciones, notificaciones por correo, filtros, etc.

Una vez que esté familiarizado con los conceptos básicos de Fail2Ban, puede comenzar a investigar más al respecto. Por ahora, juegue con él y agregue una capa adicional de seguridad a su servidor Linux.

El Blog lo escribimos para ayudar y servir de ayuda a la gente Linux. Esperamos que os guste.

Leave a Reply