Búsqueda de sitios web

Cómo configurar un IPS (Fail2ban) para protegerse de diferentes ataques


IPS o Intrusion Prevention System es una tecnología utilizada en la seguridad de la red para examinar el tráfico de la red y prevenir diferentes ataques mediante la detección de entradas maliciosas. Además de detectar entradas maliciosas como lo hace el sistema de detección de intrusos, también evita que la red sufra ataques maliciosos. Puede evitar que la red sufra ataques de fuerza bruta, DoS (denegación de servicio), DDoS (denegación de servicio distribuida), exploits, gusanos, virus y otros ataques comunes. Los IPS se colocan justo detrás del firewall y pueden enviar alarmas, descartar paquetes maliciosos y bloquear direcciones IP infractoras. En este tutorial, usaremos Fail2ban, que es un paquete de software de prevención de intrusiones, para agregar una capa de seguridad contra diferentes ataques de fuerza bruta.

Cómo funciona Fail2ban

Fail2ban lee los archivos de registro (p. ej., /var/log/apache/error_log) y obtiene las direcciones IP infractoras que intentan demasiadas contraseñas fallidas o buscan exploits. Básicamente, Fail2ban actualiza las reglas del firewall para bloquear diferentes direcciones IP en el servidor. Fail2ban también proporciona filtros que podemos usar para un servicio específico (por ejemplo, apache, ssh, etc.).

Instalación de Fail2ban

Fail2ban no viene preinstalado en Ubuntu, por lo que antes de usarlo debemos instalarlo.

ubuntu@ubuntu:~$ sudo apt-get update -y

ubuntu@ubuntu:~$ sudo apt-get install fail2ban

Después de instalar Fail2ban, inicie y habilite el servicio Fail2ban usando la línea de comando.

ubuntu@ubuntu:~$ sudo systemctl start fail2ban

ubuntu@ubuntu:~$ sudo systemctl enable fail2ban

Ahora verifique el estado del servicio fail2ban para confirmar si se inició o no.

ubuntu@ubuntu:~$ sudo systemctl status fail2ban

Configuración de Fail2ban para SSH

Podemos configurar Fail2ban modificando el archivo /etc/fail2ban/jail.conf. Antes de modificarlo, haga una copia de seguridad de este archivo.

ubuntu@ubuntu:~$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Ahora configuraremos Fail2ban para evitar que el servicio sshd reciba entradas maliciosas. Abra el archivo /etc/fail2ban/jail.local en su editor favorito.

ubuntu@ubuntu:~$ sudo nano /etc/fail2ban/jail.local

Vaya a la sección [predeterminada] e ingrese los parámetros de configuración en la sección [predeterminada].

[DEFAULT]

ignoreip = 127.0.0.1/8 192.168.18.10/32

bantime = 300

maxretry = 2

findtime = 600

ignoreip es la lista de máscaras cidr, direcciones IP o servidores DNS separados por un carácter de espacio. Agregue sus IP de confianza a esta lista, y estas IP se incluirán en la lista blanca y no serán bloqueadas por fail2ban incluso si realizan un ataque de fuerza bruta en el servidor.

bantime es el tiempo que se bloqueará una IP después de realizar una cantidad específica de intentos fallidos en el servidor.

maxretry es el número máximo de intentos fallidos después de los cuales fail2ban bloquea una IP durante un período de tiempo específico.

findtime es la cantidad de tiempo durante el cual si un host hace maxretry intentos fallidos, será bloqueado.

Después de configurar los parámetros anteriores, ahora configuraremos el servicio en el que se aplicarán las reglas anteriores. De forma predeterminada, Fail2ban tiene filtros predefinidos para diferentes servicios, por lo que no necesitamos ingresar ninguna entrada específica para los servicios. Solo habilitamos o deshabilitamos diferentes servicios en el archivo de configuración. Abra el archivo /etc/fail2ban/jail.local en su editor favorito.

ubuntu@ubuntu:~$ sudo nano /etc/fail2ban/jail.local

Busque la sección [sshd] en el archivo e ingrese los siguientes parámetros en la sección.

[sshd]

enable = true

port = ssh

filter = sshd

logpath = /var/log/auth.log

maxretry = 3

habilitado define si este servicio está protegido por fail2ban o no. Si habilitado es verdadero, entonces el servicio está protegido; de lo contrario, no está siendo protegido.

puerto define el puerto de servicio.

filtro se refiere al archivo de configuración que usará fail2ban. De forma predeterminada, utilizará el archivo /etc/fail2ban/filter.d/sshd.conf para el servicio ssh.

logpath define la ruta a los registros, fail2ban monitoreará para proteger el servicio de diferentes ataques. Para el servicio ssh, los registros de autenticación se pueden encontrar en /var/log/auth.log, por lo que fail2ban monitoreará este archivo de registro y actualizará el firewall al detectar intentos fallidos de inicio de sesión.

maxretry define el número de intentos fallidos de inicio de sesión antes de ser bloqueado por fail2ban.

Después de aplicar la configuración anterior para fail2ban, reinicie el servicio para guardar los cambios.

ubuntu@ubuntu:~$ sudo systemctl restart fail2ban.service

ubuntu@ubuntu:~$ sudo systemctl status fail2ban.service

Probando Fail2ban

Hemos configurado fail2ban para proteger nuestro sistema contra ataques de fuerza bruta en el servicio ssh. Ahora haremos intentos fallidos de inicio de sesión en nuestro sistema desde otro sistema para verificar si fail2ban está funcionando o no. Después de hacer algunos intentos de inicio de sesión fallidos ahora, revisaremos los registros de fail2ban.

ubuntu@ubuntu:~$ cat /var/log/fail2ban.log

Podemos ver que después de intentos fallidos de inicio de sesión, la IP ha sido bloqueada por fail2ban.

Podemos obtener una lista de todos los servicios para los que está habilitado fail2ban usando el siguiente comando.

ubuntu@ubuntu:~$ sudo fail2ban-client status

La figura anterior muestra que hemos habilitado fail2ban solo para el servicio sshd. Podemos obtener más información sobre el servicio sshd especificando el nombre del servicio en el comando anterior.

ubuntu@ubuntu:~$ sudo fail2ban-client status sshd

Fail2ban desbanea automáticamente la dirección IP prohibida después del tiempo de baneo, pero podemos desbanear cualquier IP en cualquier momento usando la línea de comando. Esto le dará más control sobre fail2ban. Use el siguiente comando para desbanear la dirección IP.

ubuntu@ubuntu:~$ sudo fail2ban-client set sshd unbanip 192.168.43.35

Si intenta desbanear una dirección IP que no está bloqueada por fail2ban, solo le dirá que la IP no está bloqueada.

ubuntu@ubuntu:~$ sudo fail2ban-client set sshd unbanip 192.168.43.35

Conclusión

Para un administrador de sistemas o un ingeniero de seguridad, es un gran desafío mantener la seguridad de los servidores. Si su servidor está protegido por la contraseña, no por un par de claves públicas y privadas, entonces su servidor es más vulnerable a los atacantes de fuerza bruta. Pueden ingresar a su sistema aplicando diferentes combinaciones de contraseñas. Fail2ban es una herramienta que puede impedir que los atacantes lancen diferentes tipos de ataques, incluidos ataques de fuerza bruta y ataques DDoS en su servidor. En este tutorial, discutimos cómo podríamos usar Fail2ban para proteger nuestro servidor de diferentes ataques. También podemos usar Fail2ban para proteger otros servicios como apache, nginx, etc.