Tener un servidor conectado en la red significa correr un riesgo de posibles ataques. Cualquier máquina, incluido nuestro VPS, conectado a Internet es un objetivo potencia para ataques maliciosos. Si bien es cierto, tener un cortafuegos bien configurado evitará muchos tipos de acceso ilegítimos. Aún así, necesitaremos abrir ciertos servicios para la posibilidad de poder acceder y ésto permite que otros puedan hacer sus ataques.

Por ejemplo, SSH es el servicio más comúnmente utilizado para iniciar sesión en sistemas remotos, por lo que también es uno de los más utilizados. Afortunadamente, hay una herramienta disponible que puede mitigar ciertos ataques llamado Fail2ban.

Fail2ban es un software de prevención de intrusos, que funciona junto con un sistema de control de paquetes o cortafuegos instalado en tu servidor, y se usa comúnmente para bloquear intentos de conexión después de una serie de intentos fallidos. Funciona al monitorizar archivos de registro para cierto tipo de entradas y ejecuta acciones predeterminadas basadas en sus hallazgos.

Usamos apt para instalar la versión estable de Fail2ban que es actualmente la 0.9.x:

apt install fail2ban

Tras la instalación habilitamos el servicio para que inicie automáticamente tras un reinicio o un apagado:

systemctl enable fail2ban

En Debian, la configuración predeterminada de Fail2ban se almacenará tanto en el archivo /etc/fail2ban/jail.conf como en el archivo /etc/fail2ban/jail.d/defaults-debian.conf. Debemos de tener en cuenta que las configuraciones en este último archivo anularán las configuraciones correspondientes en el anterior.

Editamos el fichero /etc/fail2ban/jail.conf y modificamos estos parámetros:

bantime = 36000 
maxretry = 3 
ignoreip = 127.0.0.1/8, xx.xx.xx.xx

En bantime pondremos 36000 que son aproximadamente unas 10 horas, de intentos de acceso, maxretry, tan solo pondremos que sean tres intentos y que luego se bloquee la IP. En ignoreip pondremos nuestra IP pública o si nos conectamos en una VPN, la IP de dicha VPN para que no nos bloquee a nosotros por error (que más de una vez pasa esto XD).

Finalmente, reiniciamos el servicio

systemctl restart fail2ban

Y ya tenemos nuestro inspector de intrusos funcionando en nuestro servidor y bloqueará a toda botnet que intente acercarse a nuestro VPS. Si queréis revisar el registro de IPs que bloquea siempre podéis mirar el log en /var/log/fail2ban.log.

En el caso de que os intentéis conectar por SSH desde otro ordenador que no está configurado en el parámetro ignoreip y seáis bloqueados por fallar tres intentos (que esto puede pasar, pero no es a menudo) os podéis quitar el bloqueo con este comando o bien esperar 10 horas 😀

fail2ban-client set <jail> banip/unbanip <ip address> 
fail2ban-client set sshd unbanip XX.XXX.XX.XXX

!wq

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación