https://paquita.masto.host/polkillas

Nextcloud en la Raspberry Pi (14). Más seguridad con fail2ban

Si tenemos datos personales o delicados almacenados en nuestra nube o si somos de natural desconfiado, veremos con buenos ojos la posibilidad de aumentar la seguridad de nuestro Nextcloud. Una posibilidad para ello es instalar fail2ban.

La idea de fail2ban es controlar los intentos fallidos de registrarse en nuestra nube. Si fail2ban detecta que desde una dirección IP está habiendo demasiados intentos fallidos, lo que suele indicar que alguien está intentando entrar sin tener contraseña, lo que se conoce como un ataque de fuerza bruta, produce un tiempo de espera que, a cada intento fallido,  va aumentando, de tal manera que fallar una o dos veces al meter nuestra contraseña no sea un incordio pero si alguien se pone a meter contraseñas una tras otra el tiempo aumente tanto que no merezca la pena.

Para esta guía sigo a pies juntillas el tutorial de Carsten Rieger en su página web.

Actualizamos la información e instalamos fail2ban con sudo apt update && sudo apt install fail2ban.

A continuación tenemos que crear un filtro, para que fail2ban pueda saber que ha habido un intento fallido. Lo creamos con sudo nano /etc/fail2ban/filter.d/nextcloud.conf y copiamos el siguiente texto:

[Definition]
failregex=^{"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}$
^{"reqId":".*","level":2,"time":".*","remoteAddr":".*","app":"core".*","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)".*}$
ignoreregex =

Aunque en realidad las expresiones regulares me superan, lo que entiendo que hace esto es buscar el mensaje «Login failed» (registro fallido) para saber que ha habido un intento. Guardamos el filtro con ctrl+W.

A continuación, creamos una nueva jaula (jail). No me preguntéis para qué sirve esto, porque no lo sé, supongo que será el archivo que dice a fail2ban qué tiene que hacer cuando detecta estos fallos. Lo hacemos con sudo /etc/fail2ban/jail.d/nextcloud.local y copiamos el siguiente texto:

[nextcloud]
backend = auto
enabled = true
port = 80,443
protocol = tcp
filter = nextcloud
maxretry = 3
bantime = 36000
findtime = 36000
logpath = /var/nc_data/nextcloud.log

Podemos variar la última línea si queremos cambiar el lugar donde se guarda el registro, el que viene es la configuración por defecto en la instalación de Carsten Rieger. Tenemos que tener cuidado porque, si en esta línea ponemos un archivo que no existe, fail2ban dará un error.

Si no pasa nada malo, con esto ya tenemos instalado y configurado fail2ban, lo podemos comprobar con sudo service fail2ban status.

Estado de fails2ban

Para salir de esta información, pulsamos ctrl+C.

Si nos salta un error, es posible que sea por lo que comentaba antes. Para crear el archivo, se usa el comando touch. Siguiendo el ejemplo anterior, deberíamos hacerlo con sudo touch /var/nc_data/nextcloud.log. Volvemos a reiniciar el servicio con sudo service fail2ban status y ya debería estar.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.