Bloquear ataques al servidor SSH (ataques de fuerza bruta) mediante DenyHosts


DenyHosts es un programa de seguridad de prevención de intrusiones de código abierto y gratuito basado en registros para servidores SSH desarrollado en lenguaje Python por Phil Schwartz. Su objetivo es monitorear y analizar los registros del servidor SSH en busca de intentos de inicio de sesión no válidos, ataques basados u200bu200ben diccionarios y ataques de fuerza bruta al bloquear las direcciones IP de origen agregando una entrada al archivo /etc/hosts.deny en el servidor y evitar que la dirección IP se haga cualquier otro intento de inicio de sesión.

DenyHosts es una herramienta muy necesaria para todos los sistemas basados u200bu200ben Linux, especialmente cuando permitimos inicios de sesión ssh basados u200bu200ben contraseña. En este artículo, le mostraremos cómo instalar y configurar DenyHosts en RHEL 6.3/6.2/6.1/6/5.8, CentOS 6.3/6.2/6.1/6/5.8 y Fedora 17,16,15,14,13,12 sistemas que utilizan el repositorio epel.

Ver también :

  1. Fail2ban (Intrusion Prevention) System for SSH
  2. Disable or Enable SSH Root Login
  3. Linux Malware Detect (LMD)

Instalación de DenyHosts en RHEL, CentOS y Fedora

Por defecto, la herramienta DenyHosts no está incluida en los sistemas Linux, necesitamos instalarla usando un repositorio EPEL de terceros. Una vez agregado el repositorio, instale el paquete usando el siguiente comando YUM.

# yum --enablerepo=epel install denyhosts
OR
# yum install denyhosts

Configuración de DenyHosts para direcciones IP de lista blanca

Una vez instalados los Denyhosts, asegúrese de incluir en la lista blanca su propia dirección IP, para que nunca quede bloqueado. Para hacer esto, abra un archivo /etc/hosts.allow.

# vi /etc/hosts.allow

Debajo de la descripción, agregue cada dirección IP una por una en una línea separada, que nunca desee bloquear. El formato debe ser el siguiente.

#
# hosts.allow   This file contains access rules which are used to
#               allow or deny connections to network services that
#               either use the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#
sshd: 172.16.25.125
sshd: 172.16.25.126
sshd: 172.16.25.127

Configuración de DenyHosts para alertas por correo electrónico

El archivo de configuración principal se encuentra en /etc/denyhosts.conf. Este archivo se utiliza para enviar alertas por correo electrónico sobre inicios de sesión sospechosos y hosts restringidos. Abra este archivo usando el editor de VI.

# vi /etc/denyhosts.conf

Busque "ADMIN_EMAIL" y agregue su dirección de correo electrónico aquí para recibir alertas por correo electrónico sobre inicios de sesión sospechosos (para alertas de correo electrónico múltiples, use la separación por comas). Por favor, eche un vistazo al archivo de configuración de mi servidor CentOS 6.3. Cada variable está bien documentada, así que configúrala a tu gusto.

############ DENYHOSTS REQUIRED SETTINGS ############
SECURE_LOG = /var/log/secure
HOSTS_DENY = /etc/hosts.deny
BLOCK_SERVICE  = sshd
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 1
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /var/lib/denyhosts
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES
LOCK_FILE = /var/lock/subsys/denyhosts

############ DENYHOSTS OPTIONAL SETTINGS ############
ADMIN_EMAIL = [email protected]
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <[email protected]>
SMTP_SUBJECT = DenyHosts Daily Report

############ DENYHOSTS OPTIONAL SETTINGS ############
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h

Reinicio del servicio DenyHosts

Una vez que haya terminado con su configuración, reinicie el servicio denyhosts para nuevos cambios. También agregamos el servicio denyhosts al inicio del sistema.

# chkconfig denyhosts on
# service denyhosts start

Ver registros de DenyHosts

Para ver los registros ssh de denyhosts para saber cuántos atacantes y piratas informáticos intentan obtener acceso a su servidor. Utilice el siguiente comando para ver los registros en tiempo real.

# tail -f /var/log/secure
Nov 28 15:01:43 tecmint sshd[25474]: Accepted password for root from 172.16.25.125 port 4339 ssh2
Nov 28 15:01:43 tecmint sshd[25474]: pam_unix(sshd:session): session opened for user root by (uid=0)
Nov 28 16:44:09 tecmint sshd[25474]: pam_unix(sshd:session): session closed for user root
Nov 29 11:08:56 tecmint sshd[31669]: Accepted password for root from 172.16.25.125 port 2957 ssh2
Nov 29 11:08:56 tecmint sshd[31669]: pam_unix(sshd:session): session opened for user root by (uid=0)
Nov 29 11:12:00 tecmint atd[3417]: pam_unix(atd:session): session opened for user root by (uid=0)
Nov 29 11:12:00 tecmint atd[3417]: pam_unix(atd:session): session closed for user root
Nov 29 11:26:42 tecmint sshd[31669]: pam_unix(sshd:session): session closed for user root
Nov 29 12:54:17 tecmint sshd[7480]: Accepted password for root from 172.16.25.125 port 1787 ssh2

Eliminar la dirección IP prohibida de DenyHosts

Si alguna vez ha bloqueado accidentalmente y desea eliminar esa dirección IP prohibida de denyhosts. Debes detener el servicio.

# /etc/init.d/denyhosts stop

Para eliminar o eliminar la dirección IP prohibida por completo. Necesita editar los siguientes archivos y eliminar la dirección IP.

# vi /etc/hosts.deny
# vi /var/lib/denyhosts/hosts
# vi /var/lib/denyhosts/hosts-restricted
# vi /var/lib/denyhosts/hosts-root
# vi /var/lib/denyhosts/hosts-valid
# vi /var/lib/denyhosts/users-hosts

Después de eliminar la dirección IP prohibida, reinicie el servicio nuevamente.

# /etc/init.d/denyhosts start

La dirección IP ofensiva se agregó a todos los archivos en el directorio/var/lib/denyhosts, por lo que es muy difícil determinar qué archivos contienen la dirección IP ofensiva. Una de las mejores formas de averiguar la dirección IP utilizando el comando grep. Por ejemplo, para averiguar la dirección IP 172.16.25.125, hágalo.

cd /var/lib/denyhosts
grep 172.16.25.125 *

Incluir direcciones IP en la lista blanca de forma permanente en DenyHosts

Si tiene una lista de direcciones IP estáticas que desea incluir en la lista blanca de forma permanente. Abra el archivo/var/lib/denyhosts/allowed-hosts. Cualquier dirección IP incluida en este archivo no estará prohibida de forma predeterminada (considérelo como una lista while).

# vi /var/lib/denyhosts/allowed-hosts

Y agregue cada dirección IP en una línea separada. Guarde y cierre el archivo.

# We mustn't block localhost
127.0.0.1
172.16.25.125
172.16.25.126
172.16.25.127