SSHGuard es un demonio de código abierto que protege a los hosts de los ataques de fuerza bruta.
Lo logra mediante la supervisión y agregación de registros del sistema, la detección de ataques y el bloqueo de atacantes mediante uno de los servidores de seguridad de Linux : iptables , FirewallD , pf e ipfw .
Inicialmente diseñado para proporcionar una capa adicional de protección para el servicio OpenSSH , SSHGuard también protege una amplia gama de servicios como Vsftpd y Postfix .
Reconoce varios formatos de registro, incluidos Syslog, Syslog-ng y archivos de registro sin procesar.
SSHGuard es bastante similar a Fail2ban solo que está escrito en C ( Fail2ban está escrito en Python ), es más ligero y proporciona menos funciones.
En esta guía, demostraremos cómo puede instalar y configurar SSHGuard para bloquear ataques de fuerza bruta SSH en su servidor Linux.
Instalar SSHGuard en Linux Debian/Ubuntu
Primero, actualice las listas de paquetes y luego instale SSHGuard desde los repositorios predeterminados usando el administrador de paquetes apt .
$ sudo apt actualización $ sudo apt install sshguard
Una vez instalado, el servicio SSHGuard se inicia automáticamente y puede verificar esto usando el comando:
$ sudo systemctl status sshguard
Configuración de SSHGuard
SSHGuard supervisa activamente los archivos de registro /var/log/auth.log , /var/log/secure systemd y syslog-ng en busca de intentos fallidos de inicio de sesión.
Por cada intento de inicio de sesión fallido, el host remoto está prohibido durante un período de tiempo limitado que, de forma predeterminada, se establece en 120 segundos. A partir de entonces, el tiempo de prohibición aumenta en un factor de 1,5 con cada intento de inicio de sesión fallido sucesivo.
El tiempo por el que se bloquean los hosts infractores, además de otros parámetros, se especifica en el archivo sshguard.conf . Puede acceder al archivo de configuración utilizando el editor vim como se muestra.
$ sudo vim /etc/sshguard/sshguard.conf
Aquí hay una muestra del archivo de configuración cuando se ve desde Ubuntu / Debian .
Centrémonos en la opción principal.
- La directiva BACKEND apunta a la ruta completa del ejecutable de backend. En este ejemplo, vemos que IPtables está configurado como el servidor de seguridad por defecto.
- La directiva THRESHOLD bloquea a los atacantes cuando su puntuación de ataque supera el valor especificado.
- La opción BLOCK_TIME es la cantidad de segundos que un atacante está bloqueado después de cada intento de inicio de sesión fallido sucesivo. De forma predeterminada, se establece en 120 después del primer intento. Esto aumenta con cada intento de inicio de sesión fallido sucesivo.
- La opción DETECTION_TIME se refiere al tiempo en segundos durante el cual el sistema registra o recuerda al atacante antes de que se restablezca su puntuación.
- La opción WHITELIST_file apunta a la ruta completa del archivo de la lista blanca que contiene hosts que se supone que no deben estar en la lista negra.
Configurar SSHGuard para bloquear ataques de fuerza bruta SSH
Para protegerse de los ataques de fuerza bruta, debe configurar los siguientes firewalls para que funcionen con sshguard .
Bloquear ataques SSH usando UFW
Si tiene UFW instalado y habilitado en su sistema Ubuntu / Debian , modifique el archivo /etc/ufw/before.rules .
$ sudo vim /etc/ufw/before.rules
Agregue las siguientes líneas justo después de la allow all on loopback
sección.
# allow todo en el loopback -A ufw-before-input -i lo -j ACCEPT -A ufw-before-output -o lo -j ACCEPT # Dejar el control de sshd a sshguard :sshguard - [0:0] -A ufw-before-input -p tcp --dport 22 -j sshguard
Guarde el archivo y reinicie UFW.
$ sudo systemctl reiniciar ufw
Ahora intente iniciar sesión en el servidor desde un sistema diferente con las credenciales incorrectas y observe que quedará bloqueado durante 120 segundos después del primer intento fallido de inicio de sesión.
Puede verificar esto comprobando el archivo de registro auth.log .
$ sudo tail -f /var/log/auth.log
Bloquear ataques SSH usando Iptables
Si usted todavía está utilizando iptables , en primer lugar, crear una nueva regla de la cadena para sshguard en Iptables para iniciar el bloqueo de los malos.
# iptables -N sshguard
A continuación, actualice la cadena INPUT para dirigir el tráfico a sshguard y bloquear todo el tráfico no deseado.
# iptables -A ENTRADA -j sshguard
Para bloquear puertos específicos como SSH , POP e IMAP de los abusadores, ejecute el comando:
# iptables -A INPUT -m multipuerto -p tcp --destination-ports 22,110,143 -j sshguard
Y finalmente, guarde la regla para que los cambios entren en vigencia.
# iptables-save> /etc/iptables/iptables.rules
Paso 4: Cómo incluir en la lista blanca hosts bloqueados SSH
Para incluir en la lista blanca un host bloqueado, simplemente especifique su nombre de host o dirección IP en el archivo de lista blanca que se encuentra en:
/etc/sshguard/whitelist
A partir de entonces, asegúrese de reiniciar el demonio sshguard y el servidor de seguridad para que se apliquen los cambios.