LINUX

Cómo instalar y configurar Denyhost en Centos 7 Linux

DenyHosts es un software de código abierto desarrollado en lenguaje Python por Phil Schwartz. Está diseñado principalmente para monitorear y analizar los registros del servidor SSH en busca de intentos de inicio de sesión no válidos, ataques basados ​​en diccionarios y ataques de fuerza bruta al bloquear las direcciones IP de origen agregándolas al archivo /etc/hosts.deny en el servidor y evitando así la Dirección IP para que no realice más intentos de inicio de sesión.

Debido a su simplicidad y la capacidad de configurar manualmente las reglas, se usa ampliamente como una alternativa a Fail2ban, que es un poco más complicado de usar y configurar.

En este tutorial, le mostraré cómo instalar y configurar DenyHosts en su servidor CentOS 7.

Lea también: Cómo usar Fail2ban / Client en CentOS 7

Prerrequisitos

Antes de continuar con la instalación, debemos asegurarnos de que nuestro sistema cumpla con todos los requisitos de software para compilar e instalar la aplicación. Y también debe configurarse con una dirección IP estática. El software DenyHosts depende del "ipaddr" Módulo de Python. En el primer paso, actualice los repositorios de su sistema y los paquetes de software, incluido el módulo Python, emitiendo los siguientes comandos.

#yum update
#yum install python-ipaddr -y

1. Instalación de DenyHosts desde el repositorio de Epel

Necesitamos instalar este paquete usando el repositorio de Epel, use el siguiente comando para instalarlo.

#yum install epel-release
#yum install denyhosts -y

Configuración de Denyhosts

Una vez instalados los Denyhosts, debe agregar su IP a la lista de IP permitidas para asegurarse de que su propia dirección IP esté en la lista blanca, de modo que nunca se bloquee.

# cat /etc/hosts.allow
#
# 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: 37.217.142.41
sshd: 37.217.142.42
sshd: 37.217.142.43
sshd: 37.217.142.44

A continuación, debe incluir en la lista negra todas las direcciones IP necesarias que desea bloquear. Podemos confirmar que nuestra dirección IP tampoco está en la lista negra.

# cat /etc/hosts.deny
#
# hosts.deny This file contains access rules which are used to
# deny connections to network services that either use
# the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# The rules in this file can also be set up in
# /etc/hosts.allow with a 'deny' option instead.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
#
sshd: 78.189.206.37
sshd: 121.14.27.58
sshd: 1.246.228.161
sshd: 103.89.89.47
sshd: 116.29.148.2
# DenyHosts: Tue Jan 9 10:16:15 2018 | sshd: 222.186.174.81
sshd: 222.186.174.81
# DenyHosts: Tue Jan 9 10:40:46 2018 | sshd: 217.61.20.181
sshd: 217.61.20.181
# DenyHosts: Tue Jan 9 13:15:53 2018 | sshd: 112.86.117.182
sshd: 112.86.117.182

Habilitación del servicio DenyHosts

Una vez configurado como sea necesario, podemos habilitar e iniciar nuestro servicio DenyHosts con los siguientes comandos:

# systemctl enable denyhosts
# systemctl start denyhosts

# systemctl status denyhosts
● denyhosts.service - SYSV: Activates/Deactivates the
Loaded: loaded (/etc/rc.d/init.d/denyhosts; bad; vendor preset: disabled)
Active: active (running) since Wed 2018-01-10 06:47:54 UTC; 3h 57min ago
Docs: man:systemd-sysv-generator(8)
Process: 30660 ExecStart=/etc/rc.d/init.d/denyhosts start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/denyhosts.service
└─30665 python /usr/bin/denyhosts.py --daemon --config=/etc/denyhosts.conf

Jan 10 06:47:54 li226-12.members.linode.com systemd[1]: Starting SYSV: Activates/Deactivates the...
Jan 10 06:47:54 li226-12.members.linode.com denyhosts[30660]: starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/etc/denyhosts.conf
Jan 10 06:47:54 li226-12.members.linode.com systemd[1]: Started SYSV: Activates/Deactivates the.

Configuración de alertas de correo electrónico en DenyHosts

Podemos configurar alertas por correo electrónico sobre inicios de sesión sospechosos y hosts restringidos realizando cambios en un archivo de configuración de DenyHosts. Puede agregar su dirección de correo electrónico a la variable ADMIN_EMAIL en el archivo de configuración /etc/denyhosts.conf para recibir alertas por correo electrónico sobre inicios de sesión sospechosos. Puede agregar cualquier número de direcciones de correo electrónico a la variable, solo asegúrese de separarla con comas. Aquí agregué mi dirección de correo electrónico support@linoxide.com para alertarme de cualquier ataque.

correo electrónico de administrador

Debe reiniciar el servicio DenyHosts después de realizar cambios en los archivos de configuración.

Eliminar direcciones IP prohibidas

Puede monitorear los registros ssh de denyhosts para ver cuántos atacantes y piratas informáticos están intentando obtener acceso a su servidor. Puede utilizar el siguiente comando para ver los registros en tiempo real.

# tail -f /var/log/secure
Jan 10 10:56:43 li226-12 sshd[2096]: refused connect from 222.186.43.6 (222.186.43.6)
Jan 10 10:57:08 li226-12 sshd[2102]: refused connect from 222.186.43.6 (222.186.43.6)
Jan 10 10:57:43 li226-12 sshd[2113]: refused connect from 222.186.43.6 (222.186.43.6)
Jan 10 10:59:17 li226-12 sshd[2133]: refused connect from 222.186.43.6 (222.186.43.6)

Es evidente que nuestro servidor está intentando rechazar la conexión desde la IP 222.186.43.6 de estos registros. Veamos los pasos para eliminar esta IP de la lista negra.

Necesitamos verificar esta entrada de IP en el archivo /etc/hosts.deny y todos esos archivos de denegación personalizados creados con denyhosts. Podemos eliminar la entrada de IP de todos ellos de la siguiente manera:

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

Pude notar esta entrada en mi archivo hosts.deny.

# DenyHosts: Wed Jan 10 03:40:07 2018 | sshd: 222.186.43.6
sshd: 222.186.43.6

¡Eliminé esta entrada y reinicié el servicio denyhosts para confirmar que funciona!

2. Instalación desde Github Repo y Source Distribution

Podemos descargar el Repositorio de Github o descarga la última DenyHosts distribución de código fuente y compílelo a partir de estos paquetes fuente. Veamos cómo instalo denyhosts desde Github Repo.

#yum install git
# git clone https://github.com/denyhosts/denyhosts
Cloning into 'denyhosts'...
remote: Counting objects: 1353, done.
remote: Total 1353 (delta 0), reused 0 (delta 0), pack-reused 1353
Receiving objects: 100% (1353/1353), 263.93 KiB | 0 bytes/s, done.
Resolving deltas: 100% (899/899), done.

Después de descargar los archivos de Github, necesitamos instalarlo. Puede instalarlo emitiendo este comando desde la carpeta denyhosts como se muestra a continuación:

#cd denyhosts
#python setup.py install

Esto instalará los módulos DenyHosts en el directorio de paquetes del sitio de Python.

Del mismo modo, desde una distribución de origen puede descargar los últimos Denyhosts e instalarlos como se explicó anteriormente. El resto de los pasos de configuración son los mismos en ambos casos.

Configuración de Denyhosts

Después de la instalación, puede copiar el archivo de configuración de muestra denyhosts.conf creado en la carpeta de instalación que contiene la mayoría de las configuraciones posibles para el /etc folder. El archivo de configuración contiene varias configuraciones junto con su descripción que deberían ayudarlo a configurar rápidamente DenyHosts. Una vez que haya editado su archivo de configuración, guárdelo.

# cp -rp denyhosts.conf /etc/

A continuación, necesitamos copiar la muestra. daemon-control.dist guión como tal para daemon-control y modifique la sección recomendada según la ubicación de su archivo de configuración.

#cp daemon-control-dist daemon-control
#chmod 700 daemon-control

Ahora podemos editar el archivo de control de demonios. Solo debería necesitar editar esta sección cerca de la parte superior como se muestra a continuación. Edité esta sección como mis rutas de configuración.

#############################################

#############################################
#### Edítelos para adaptarlos a su configuración ####
#############################################

DENYHOSTS_BIN = «/usr/bin/denyhosts.py»
DENYHOSTS_LOCK = «/var/run/denyhosts.pid»
DENYHOSTS_CFG = «/etc/denyhosts.conf»

PYTHON_BIN = «/ usr / bin / env python»

#######################################

Estos valores predeterminados deberían ser razonables para muchos sistemas. Pero le recomiendo que personalice esta configuración para que coincida con su sistema en particular. Una vez que haya editado la configuración y los archivos de control del demonio, asegúrese de restringir la ejecución del script de control del demonio a root.

Iniciar DenyHosts manualmente

Después de configurar Denyhosts para que se ejecute como demonio con nuestro script de control de demonio, puede iniciarlo manualmente desde allí simplemente ejecutando este comando desde la carpeta de instalación.

# ./daemon-control start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/etc/denyhosts.conf

Puede consultar el registro del demonio (/var/log/denyhosts) para asegurarse de que DenyHosts se esté ejecutando correctamente. Puedes referirte a esto Preguntas más frecuentes enlace para cualquier problema o pregunta relacionada con este software.

Además, puede iniciar DenyHosts manualmente para ejecutarlo desde la línea de comandos usando Python, así como este mencionando los parámetros comunes como la ubicación del archivo binario y el archivo de configuración.

# python /usr/bin/denyhosts.py --config /etc/denyhosts.conf --daemon
# ps aux | grep denyhosts
root 25650 0.0 1.0 216116 10740 ? S 09:44 0:00 python /usr/bin/denyhosts.py --config /etc/denyhosts.conf --daemon
root 25656 0.0 0.2 112668 2200 pts/0 S+ 09:44 0:00 grep --color=auto denyhosts

El comando anterior inicia DenyHosts y lo ejecuta en segundo plano.

Iniciar Denyhosts automáticamente

Podemos configurar cronjobs para que inicie Denyhosts automáticamente al inicio. O podemos crear un enlace simbólico desde /etc/init.d como a continuación:

# cd /etc/init.d
# ln -s /root/denyhosts/daemon-control denyhosts
# ll | grep denyhosts
lrwxrwxrwx 1 root root 30 Jan 10 04:48 denyhosts -> /root/denyhosts/daemon-control

Ahora podemos gestionar este servicio desde lo normal. systemctl mando.

# systemctl enable denyhosts
denyhosts.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig denyhosts on

# systemctl start denyhosts
# systemctl status denyhosts
● denyhosts.service - SYSV: Activates/Deactivates the
Loaded: loaded (/etc/rc.d/init.d/denyhosts; bad; vendor preset: disabled)
Active: active (exited) since Thu 2018-01-11 09:57:53 UTC; 2s ago
Docs: man:systemd-sysv-generator(8)
Process: 25876 ExecStart=/etc/rc.d/init.d/denyhosts start (code=exited, status=0/SUCCESS)

Terminando

En este artículo, he discutido cómo instalar y configurar DenyHosts en nuestro servidor CentOS 7. Esta herramienta se puede configurar fácilmente y también admite notificaciones por correo electrónico, SMTP y syslog. Esta aplicación es una excelente solución para defender los ataques al servidor SSH como los ataques basados ​​en diccionarios y los ataques de fuerza bruta. Espero que este artículo te sea de utilidad. Publique sus valiosos comentarios y sugerencias al respecto.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar