LinuxParty
SSHGuard es un demonio de código abierto que protege a los hosts de los ataques de fuerza bruta. Lo logra a través del monitoreo y la agregación de registros del sistema, la detección de ataques y el bloqueo de atacantes utilizando uno de los backends de firewall de Linux : iptables , FirewallD , pf e ipfw .
Diseñado inicialmente 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 formato.
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.
Paso 1: Instale SSHGuard en Linux
Comenzamos con la instalación de SSHGuard en Linux.
Instalar SSHGuard en Debian/Ubuntu
Primero, actualice las listas de paquetes y luego instale SSHGuard desde los repositorios predeterminados usando el administrador de paquetes apt .
$ sudo apt update $ 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
Compruebe SSHGuard en Ubuntu
Instalar SSHGuard en sistemas RHEL
Para distribuciones basadas en RHEL como CentOS , Rocky y AlmaLinux , comience instalando el repositorio EPEL como se indica en el siguiente comando.
$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm O $ sudo dnf install epel-releaseCon EPEL en su lugar, continúe e instale SSHGuard usando el administrador de paquetes dnf .
$ sudo dnf install sshguard
Una vez instalado, inicie y configure SSHGuard para que se inicie al iniciar o reiniciar el sistema.
$ sudo systemctl start sshguard $ sudo systemctl enable sshguard
Asegúrese de verificar que SSHGuard se esté ejecutando como se esperaba.
$ sudo systemctl status sshguard
Comprobar SSHGuard en RHEL
Paso 2: Configuración de SSHGuard en Linux
SSHGuard supervisa activamente los archivos de registro /var/log/auth.log , /var/log/secure systemd journal y syslog-ng para detectar intentos fallidos de inicio de sesión.
Por cada intento fallido de inicio de sesión, el host remoto se bloquea por 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 que los hosts infractores están prohibidos, además de otros parámetros, se especifica en el archivo sshguard.conf . Puede acceder al archivo de configuración usando el editor vim como se muestra.
$ sudo vim /etc/sshguard/sshguard.conf
En las distribuciones basadas en RHEL, el archivo de configuración se encuentra en la siguiente ruta.
$ sudo vim /etc/sshguard.conf
Aquí hay una muestra del archivo de configuración visto desde Ubuntu / Debian .
Archivo de configuración SSHGUARD
Centrémonos en la opción principal.
- La directiva BACKEND apunta a la ruta completa del ejecutable del backend. En este ejemplo, vemos que IPtables está configurado como el servidor de seguridad predeterminado.
- 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 hace referencia 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 no deberían estar en la lista negra./li>
Paso 3: 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 .
Bloquee los 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.
# permitir todo en loopback-A ufw-before-input -i lo -j ACCEPT -A ufw-before-output -o lo -j ACCEPT# pasar 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 restart 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 revisando el archivo de registro auth.log .
$ sudo tail -f /var/log/auth.log
Compruebe los ataques de fuerza bruta SSH
Después del siguiente intento fallido de registro, el tiempo de bloqueo aumenta a 240 segundos, luego a 480 segundos, luego a 960 segundos y así sucesivamente.
Bloquee los ataques SSH usando Firewalld
Si está ejecutando firewalld , asegúrese de que esté configurado y habilitado. Luego ejecute el siguiente comando para habilitar sshguard en su zona preferida.
$ sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule source ipset=sshguard4 drop"
Para aplicar los cambios, vuelva a cargar Firewalld y sshguard .
$ sudo firewall-cmd --reload $ sudo systemctl restart sshguard
Luego verifique la regla de la siguiente manera:
$ sudo firewall-cmd —-info-ipset=sshguard4
Compruebe SSHGuard en Firewalld
Bloquee los ataques SSH usando Iptables
Si todavía usa Iptables , primero, cree una nueva regla de cadena para sshguard en Iptables para comenzar a bloquear a los malos.
# iptables -N sshguard
A continuación, actualice la cadena INPUT para dirigir el tráfico a sshguard y bloquee todo el tráfico de personas malintencionadas.
# iptables -A INPUT -j sshguard
Para bloquear puertos específicos como SSH , POP e IMAP de los abusadores, ejecute el comando:
# iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard
Y por último, guarda la regla para que los cambios surtan efecto.
# iptables-save > /etc/iptables/iptables.rules
Paso 4: Cómo incluir en la lista blanca los hosts bloqueados por SSH
Para incluir en la lista blanca un host bloqueado, simplemente especifique su nombre de host o dirección IP en el archivo de la lista blanca que se encuentra en:
/etc/sshguard/whitelist - Ubuntu/Debian /etc/sshguard.whitelist - distribuciones basadas en RHEL
A partir de entonces, asegúrese de reiniciar el demonio sshguard y el servidor de seguridad para que se apliquen los cambios.
En esta guía, hemos demostrado cómo puede bloquear los ataques SSH Bruteforce usando el demonio SSHGuard en servidores Linux. Tus comentarios son bienvenidos.
-
Seguridad
- Los televisores inteligentes son como un «caballo de Troya digital» en los hogares
- Snort para Windows, detección de Intrusos y seguridad.
- Detección de Intrusiones con las herramientas: BASE y Snort.
- El Sistema de Detección de Intrusos: Snort. ( Windows y Linux )
- Configuración con Ejemplos de Snort para Windows, detección de intrusiones
- ¿El gobierno de EE. UU. ignoró la oportunidad de hacer que TikTok fuera más seguro?
- ¿Qué es SSH y cómo se utiliza? Los conceptos básicos de Secure Shell que necesitas saber
- Asegurar memcached del servidor, para evitar amplificar ataques DDoS
- Consejos de Seguridad para Pagos Móviles en España: Protege tus Transacciones con Estos Consejos Prácticos
- 22 herramientas de seguridad de servidores Linux de código abierto en 2023
- 8 hábitos que deben tomar los teletrabajadores altamente seguros
- 7 cosas que incluso los nuevos usuarios de Linux pueden hacer para proteger mejor el sistema operativo
- Recuperar contraseñas de archivos comprimidos en 3 pasos
- Administración: Glances - herramienta de monitoreo y supervisión para Linux
- Cómo monitorear sistemas Linux remotos con Glances