Tutorial de fail2ban

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

¿Qué es fail2ban?

fail2ban es producto opensource que sirve para protegerse de los hackers por ataques de fuerza bruta o DDOS, por ejemplo, para evitar accesos indeseados a nuestro servidor o evitar un problema de denegación del servicio.

Instalar fail2ban en Linux Centos 7

Instalar fail2ban en Centos es muy sencillo.

yum install epel-release
yum install fail2ban

Habilitamos el servicio:

[[email protected] ~]# systemctl enable fail2ban
Created symlink from /etc/systemd/system/multi-user.target.wants/fail2ban.service to /usr/lib/systemd/system/fail2ban.service.
[[email protected] ~]# systemctl start fail2ban
[[email protected] ~]# systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
   Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-02-12 12:12:48 UTC; 4s ago
     Docs: man:fail2ban(1)
  Process: 4490 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
 Main PID: 4491 (f2b/server)
   CGroup: /system.slice/fail2ban.service
           └─4491 /usr/bin/python -s /usr/bin/fail2ban-server -xf start

Feb 12 12:12:48 ip-10-0-1-203.eu-west-1.compute.internal systemd[1]: Starting Fail2Ban Service...
Feb 12 12:12:48 ip-10-0-1-203.eu-west-1.compute.internal systemd[1]: Started Fail2Ban Service.
Feb 12 12:12:48 ip-10-0-1-203.eu-west-1.compute.internal fail2ban-server[4491]: Server ready
[[email protected] ~]#

Configuración de fail2ban

Todos los ficheros de configuración se guardan en /etc/fail2ban:

[[email protected] ~]# cd /etc/fail2ban
[[email protected] fail2ban]# ll
total 52
drwxr-xr-x. 2 root root  4096 Feb 12 12:11 action.d
-rw-r--r--. 1 root root  2817 Jan 10 12:34 fail2ban.conf
drwxr-xr-x. 2 root root     6 Jan 21 04:12 fail2ban.d
drwxr-xr-x. 3 root root  4096 Feb 12 12:11 filter.d
-rw-r--r--. 1 root root 23682 Jan 21 04:12 jail.conf
drwxr-xr-x. 2 root root    31 Feb 12 12:11 jail.d
-rw-r--r--. 1 root root  2827 Jan 10 12:34 paths-common.conf
-rw-r--r--. 1 root root   930 Jan 10 12:34 paths-fedora.conf
[[email protected] fail2ban]#

El fichero jail.conf contiene la configuración por defecto de fail2ban, así que lo copiaremos a jail.local para prevenir que una actualización del producto sobrescriba nuestra configuración.

En este fichero modificaremos dos directivas:

bantime = 3600

[sshd]
enabled = true

Reiniciamos el servicio de fail2ban y comprobamos su estado:

[[email protected] fail2ban]# systemctl restart fail2ban
[[email protected] fail2ban]# fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd
[[email protected] fail2ban]#

Con esto, conseguimos que la IP atacante quede bloqueada durante 1h (3600 segundos) y habilitamos la protección al servicio de SSH, ya que es uno de los ataques más comunes para que los hackers se hagan con el control de un servidor.

Otras directivas interesantes del fichero jail.conf:

  • findtime = 600: Bloquea el login del usuario durante 600 segundos si ha fallado hasta llegar al número máximo de intentos indicado en la directiva maxretry (maxretry = 3).
  • Podemos enviar avisos de las alertas detectadas por fail2ban mediante correo electrónico:
destemail = [email protected]
sendername = Fail2Ban
mta = sendmail

Protección de servicios concretos

En el directorio /etc/fail2ban/filter.d tenemos multitud de ficheros de configuración para proteger aquellos servicios más populares y propensos a ser atacados por hackers, como puede ser un proxy, un apache, una base de datos mongo… hay cerca de 90 ficheros de configuración disponibles.

[[email protected] filter.d]# ll |head -20
total 352
-rw-r--r--. 1 root root  467 Jan 10 12:34 3proxy.conf
-rw-r--r--. 1 root root 3228 Jan 10 12:34 apache-auth.conf
-rw-r--r--. 1 root root 2831 Jan 10 12:34 apache-badbots.conf
-rw-r--r--. 1 root root 1265 Jan 10 12:34 apache-botsearch.conf
-rw-r--r--. 1 root root 1619 Jan 10 12:34 apache-common.conf
-rw-r--r--. 1 root root  324 Jan 10 12:34 apache-fakegooglebot.conf
-rw-r--r--. 1 root root  511 Jan 10 12:34 apache-modsecurity.conf
-rw-r--r--. 1 root root  596 Jan 10 12:34 apache-nohome.conf
-rw-r--r--. 1 root root 1230 Jan 10 12:34 apache-noscript.conf
-rw-r--r--. 1 root root 2184 Jan 10 12:34 apache-overflows.conf
-rw-r--r--. 1 root root  362 Jan 10 12:34 apache-pass.conf
-rw-r--r--. 1 root root 1020 Jan 10 12:34 apache-shellshock.conf
-rw-r--r--. 1 root root 3492 Jan 10 12:34 assp.conf
-rw-r--r--. 1 root root 2369 Jan 10 12:34 asterisk.conf
-rw-r--r--. 1 root root  205 Jan 10 12:34 bitwarden.conf
-rw-r--r--. 1 root root  522 Jan 10 12:34 botsearch-common.conf
-rw-r--r--. 1 root root  307 Jan 10 12:34 centreon.conf
-rw-r--r--. 1 root root 2807 Jan 10 12:34 common.conf
-rw-r--r--. 1 root root  244 Jan 10 12:34 counter-strike.conf
[[email protected] filter.d]#

Por ejemplo, si queremos añadir la protección para el servicio de nginx, en el fichero jail.conf o jail.local si ya lo hemos renombrado, añadiremos la siguiente directiva:

[nginx-http-auth]
enabled = true

Luego, reiniciaremos el servicio fail2ban, tal y como lo hemos hecho anteriormente.

Logs de fail2ban

Si queremos consultar el registro de fail2ban, lo podremos consultar en el fichero /var/log/fail2ban.log.

¿Qué ocurre si fail2ban ha baneado una IP que no nos interesa?

Si queremos volver a permitir el tráfico desde una IP que ha baneado fail2ban, por ejemplo, la 172.50.20.35, podemos habilitarla de nuevo por línea de comandos:

fail2ban-client set ssh unbanip 172.50.20.35

Te puede interesar

¿Te ha gustado? ¡Compártelo!

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

SUSCRÍBETE A PUERTO53

Recibe un email periódico con los artículos más interesantes de Puerto53.com

Antes de suscribirte lee los términos y condiciones. Gracias.

Contenido Relacionado

Artículos Recientes

Deja un comentario

About Author