sshguard
Warning: Display title "sshguard" overrides earlier display title "Sshguard".
sshguard es un sistema de prevención de intrusiones que analiza los registros del servidor, determina la actividad maliciosa y utiliza el cortafuegos del sistema para bloquear las direcciones IP de las conexiones maliciosas. sshguard está escrito en C, así que no supone una carga para el sistema.
Cómo funciona
sshguard es un demonio sencillo que hace un seguimiento continuo de uno o más ficheros de registro. Analiza los eventos del registro que los demonios envían en caso de intentos de conexión fallidos y entonces bloquea cualquier intento de esas conexiones mediante la actualización del cortafuegos del sistema.
A diferencia de lo que su nombre indica, sshguard no solamente analiza los registros de SSH. También es compatible con muchos sistemas de correo, así como unos pocos FTP. Una lista completa de los servicios soportados se puede encontrar en el sitio web sshguard.net.
Instalación
Emerge
Instale app-admin/sshguard:
root #
emerge --ask app-admin/sshguard
Additional software
Depending on the init system and the desired firewall backend to be used by sshguard, additional software may be required to be emerged in order for sshguard to block malicious actors.
More information on various supported backends can be found by reading the setup manpage:
root #
man 7 sshguard-setup
iptables
Asegúrese también de que está instalado el paquete net-firewall/iptables y que el mismo se utiliza como el cortafuegos del sistema. Al momento de escribir (este artículo), sshguard todavía no soporta net-firewall/nftables.
root #
emerge --ask net-firewall/iptables
También se puede encontrar más información sobre el uso y configuración de IPtables en el artículo IPtables.
nftables
When nftables are being used as the system firewall:
root #
emerge --ask net-firewall/nftables
Configuración
iptables backend
Preparar el cortafuegos
Cuando sshguard bloquea a cualquier usuario malintencionado (mediante el bloqueo de sus direcciones IP), utilizará la cadena sshguard.
Por tanto, prepare la cadena, y asegúrese también de que dicha cadena actúa cuando se detectan nuevas conexiones entrantes:
root #
iptables -N sshguard
root #
iptables -A INPUT -j sshguard
Then verify that the appropriate path to the iptables backend library is set in /etc/sshguard.conf:
# Full path to backend executable (required, no default)
BACKEND="/usr/libexec/sshg-fw-iptables"
Supervisar los ficheros de registro
La idea básica detrás de sshguard es que el administrador analice el fichero(s) de registro (que elija) —dado que no hay ningún fichero de configuración nativo de sshguard— para verlo(s) como opciones de la aplicación.
En Gentoo, las opciones de sshguard se pueden afinar mejor en el fichero /etc/sshguard.conf:
{{FileBox|filename=/etc/sshguard.conf|title=Configurar sshguard para que lea /var/log/messages y /var/log/auth.log|lang=bash|1=
- Ruta completa la ejecutable del backend (requerido, no tiene valor por defecto)
BACKEND="/usr/libexec/sshg-fw-iptables"
Asegúrese de que los ficheros de registro que utiliza el usuario sshguard le son accesibles en tiempo de ejecución.
Servicios
OpenRC
Para que sshguard se inicie de forma predeterminada, hay que añadirlo al nivel de ejecución default y, luego, iniciarlo:
root #
rc-update add sshguard default
root #
rc-service sshguard start
systemd
Use systemd's conventional way to enable it, and then start it:
root #
systemctl enable sshguard
root #
systemctl restart sshguard
Bloquear equipos
Con la opción de bloquear equipos, después de una serie de abusos, se bloquea la dirección IP del atacante o una subred IP. Esta prohibición se cargará en cada inicio y se extenderá con nuevas entradas durante la operación. sshguard inserta una nueva dirección una vez se haya superado el límite de abusos.
No se planifica nunca la liberación (permitir) de Las direcciones bloqueadas.
Para habilitar el bloqueo, crear el directorio y fichero apropiados:
root #
mkdir -p /var/lib/sshguard
root #
touch /var/lib/sshguard/blacklist.db
Mientras que definir una lista negra es importante para excluir redes IP y anfitriones de confianza en una lista blanca.
Para habilitar la lista blanca, crear el directorio y ficheros adecuado:
root #
mkdir -p /etc/sshguard
root #
touch /etc/sshguard/whitelist
La lista blanca debe incluir la interfaz de bucle y debe tener al menos una red IP de confianza, por ejemplo 192.0.2.0/24.
127.0.0.0/8
::1/128
192.0.2.0/24
Se debe ajustar la entrada 192.0.2.0/24 a sus necesidades.
Añadir el fichero BLACKLIST_FILE y WHITELIST_FILE a la configuración:
{{FileBox|filename=/etc/conf.d/sshguard|title=Configurar sshguard para marcar en la lista negra a los abusones|lang=bash|1= BACKEND="/usr/libexec/sshg-fw-iptables" FILES="/var/log/auth.log"
Reiniciar el demonio sshguard para que los cambios tengan efecto:
root #
/etc/init.d/sshguard restart
Resolución de problemas
¡El fichero '/var/log/auth.log' desapareció mientras se estaba añadiendo!
Cuando arranca, sshguard informa del siguiente error:
Sep 23 03:39:11 foo.bar.com sshguard[64933]: File '/var/log/auth.log' vanished while adding!
Este error (la ruta al fichero puede variar) ocurre cuando el fichero destino no está disponible en el sistema. Asegúrese de que se ha creado o actualice la configuración de sshguard para que no lo incluya en la monitorización.
En un sistema syslog-ng con OpenRC, suele ser suficiente añadir lo siguiente a syslog-ng.conf:
log { source(src); destination(messages); };
log { source(src); destination(console_all); };
destination authlog {file("/var/log/auth.log"); };
filter f_auth { facility(auth); };
filter f_authpriv { facility(auth, authpriv); };
log { source(src); filter(f_authpriv); destination(authlog); };
Recargar la configuración para que los cambios tengan efecto:
root #
rc-service syslog-ng reload
Véase también
Recursos externos
La documentación de sshguard proporciona toda la información necesaria para afinar aún más la aplicación.