Sshguard

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Sshguard and the translation is 78% complete.

Other languages:
English • ‎español • ‎italiano • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Resources

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:

ARCHIVO /etc/conf.d/sshguardConfigurar sshguard para leer /var/log/messages
PARDONTIME="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}"
  1. Space-separated list of log files to monitor. (optional, no default)

FILES="/var/log/messages /var/log/auth.log"

  1. How many problematic attempts trigger a block

THRESHOLD=10

  1. Blocks last at least 24 hours (60480 seconds)

BLOCKTIME=60480

  1. Track IP addresses for 24 hours (60480 seconds)

DETECTION_TIME=60480

  1. IPv6 subnet size to block. Defaults to a single address, CIDR notation. (optional, default to 128)

IPV6_SUBNET=64

  1. IPv4 subnet size to block. Defaults to a single address, CIDR notation. (optional, default to 32)

IPV4_SUBNET=24

  1. 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.

ARCHIVO /etc/sshguard/whitelistWhitelisting trusted networks
127.0.0.0/8
::1/128
192.0.2.0/24
Nota
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:

ARCHIVO /etc/conf.d/sshguardConfigurar sshguard para bloquear a equipos que intentan abusar
PARDONTIME="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

  1. 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:

CÓDIGO Menaje de error cuando se intenta añadir un monitor para /var/log/auth.log
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:

ARCHIVO /etc/syslog-ng/syslog-ng.confCrear auth.log file
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

  • 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.