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
.
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.
Comentarios recientes