This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
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
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.
Configuración
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
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/conf.d/sshguard:
/etc/conf.d/sshguard
Configurar sshguard para leer /var/log/messagesPARDONTIME="3600" # Supervisar los últimos bloques de hace, al menos, 1 hora (3600 segundos) WATCHTIME="360" # Hacer seguimiento de las direcciones IP durante 5 minutos (360 segundos) THRESHOLD="10" # Cuántos intentos debe desencadenar un bloque para considerarlo problemático LOGFILES="-l /var/log/messages" # Ver este fichero... LOGFILES="${LOGFILES} -l /var/log/auth.log" # Y este otro SSHGUARD_OPTS="-p ${PARDONTIME} -s ${WATCHTIME} -a ${THRESHOLD} ${LOGFILES}"
- Space-separated list of log files to monitor. (optional, no default)
FILES="/var/log/messages /var/log/auth.log"
- How many problematic attempts trigger a block
THRESHOLD=10
- Blocks last at least 24 hours (60480 seconds)
BLOCKTIME=60480
- Track IP addresses for 24 hours (60480 seconds)
DETECTION_TIME=60480
- IPv6 subnet size to block. Defaults to a single address, CIDR notation. (optional, default to 128)
IPV6_SUBNET=64
- IPv4 subnet size to block. Defaults to a single address, CIDR notation. (optional, default to 32)
IPV4_SUBNET=24
- Full path to PID file (optional, no default)
PID_FILE=/run/sshguard.pid }}
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
Bloquear equipos
Con la opción de bloquear equipos, después de una serie de abusos, se bloquea la dirección IP del atacante. 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/db/sshguard
root #
touch /var/db/sshguard/blacklist.db
While defining a blacklist it is important to exclude trusted IP networks and hosts in a whitelist.
To enable whitelisting, create an appropriate directory and file:
root #
mkdir -p /etc/sshguard
root #
touch /etc/sshguard/whitelist
The whitelist has to include the loopback interface, and should have at least 1 IP trusted network f.e. 192.0.2.0/24.
/etc/sshguard/whitelist
Whitelisting trusted networks127.0.0.0/8 ::1/128 192.0.2.0/24
The 192.0.2.0/24 entry has to be adjusted to fit the own needs.
Añadir el fichero de bloqueo a la configuración después de la variable SSHGUARD_OPTS:
/etc/conf.d/sshguard
Configurar sshguard para bloquear a equipos que intentan abusarPARDONTIME="3600" # Bloquear al menos 1 hora (3600 segundos) WATCHTIME="360" # Seguimiento de las direcciones IP durante 5 minutos (360 segundos) THRESHOLD="10" # Cuántos intentos problemáticos causan un bloqueo BLACKLIST="/var/db/sshguard/blacklist.db" # Las direcciones bloqueadas se almacenan en este fichero LOGFILES="-l /var/log/messages" # Echar un vistado a este fichero... LOGFILES="${LOGFILES} -l /var/log/auth.log" # Y a este otro SSHGUARD_OPTS="-b 50:${BLACKLIST} -p ${PARDONTIME} -s ${WATCHTIME} -a ${THRESHOLD} ${LOGFILES}"
THRESHOLD=10 BLOCK_TIME=43200 DETECTION_TIME=604800
IPV4_SUBNET=24 IPV6_SUBNET=64
PID_FILE=/run/sshguard.pid
- Add following lines
BLACKLIST_FILE=10:/var/lib/sshguard/blacklist.db WHITELIST_FILE=/etc/sshguard/whitelist }}
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:
/etc/syslog-ng/syslog-ng.conf
Crear auth.log filelog { 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
- Iptables, para instalar y configurar iptables en Gentoo.
Recursos externos
La documentación de sshguard proporciona toda la información necesaria para afinar aún más la aplicación.