DenyHosts es una herramienta de seguridad de prevención de intrusiones basada en registros para servidores SSH escrita en Python. Está diseñado para evitar ataques de fuerza bruta en servidores SSH al monitorear los intentos de inicio de sesión no válidos en el registro de autenticación y bloquear las direcciones IP de origen usando /etc/hosts.deny y sbin/iptables en el servidor Linux. En este tutorial, aprenderá a instalar DenyHosts, un programa de Python que bloquea automáticamente los ataques ssh agregando entradas al archivo /etc/hosts.deny.
El tutorial se prueba en la instalación del servidor Ubuntu 17.04.
1. Primero instalemos el software:
$ sudo apt-get install denyhosts
Code language: JavaScript (javascript)
2. Agregue sus direcciones a hosts.allow para asegurarse de que no estén bloqueadas.
sudo pico /etc/hosts.allow
Ejemplo de cómo agregar más de una dirección:
sshd: 212.22.112.113 , 10.20.133.3 , 192.168.0.1 , 127.0.0.1
Code language: CSS (css)
3. Ahora configuremos el archivo de configuración denyhosts:
$ sudo pico /etc/denyhosts.conf
Make sure SECURE_LOG set as follows:
SECURE_LOG = /var/log/auth.log
HOSTS_DENY set as follows:
HOSTS_DENY = /etc/hosts.deny
Block only sshd:
BLOCK_SERVICE = sshd
Deny threshold limit for login attempts:
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 1
DENY_THRESHOLD_RESTRICTED = 1
Block incoming connections using the Linux firewall IPTABLES:
IPTABLES = /sbin/iptables
Code language: PHP (php)
4. HABILITAR el servicio DenyHosts:
$ sudo systemctl enable denyhosts.service
Verás algo como esto:
Sincronizando el estado de denyhosts.service con SysV init con /lib/systemd/systemd-sysv-install…Ejecutando /lib/systemd/systemd-sysv-install enable denyhosts
5. Reinicie el servicio DenyHosts:
sudo /etc/init.d/denyhosts restart
6. Algunos comandos para verificar si todo funciona y para enumerar las direcciones agregadas a la lista de bloqueo:
$ sudo grep 'something' /var/log/denyhosts
$ sudo tail -f /var/log/denyhosts
$ sudo cat /etc/hosts.deny
sudo iptables -L INPUT -n -v | grep DROP
Code language: JavaScript (javascript)
Atención:
Tenga en cuenta que DenyHosts está restringido a conexiones que usan IPv4. No funciona con direcciones IP basadas en IPv6. Otra opción es usar el comando iptables para ver la dirección IP bloqueada:
¿Habilitar soporte de sincronización centralizada?
La versión 2.0 y superiores de DenyHosts admiten la sincronización centralizada, de modo que los infractores reincidentes quedan bloqueados en muchas computadoras. El sitio xmlrpc.denyhosts.net recopila estadísticas de las computadoras que ejecutan el software. Sincronización deshabilitada por defecto. Para habilitar la sincronización, ingrese:
$ sudo pico /etc/denyhosts.conf
Luego agrega:
SYNC_SERVER = http://xmlrpc.denyhosts.net:9911
Code language: JavaScript (javascript)
Y reiniciar:
$ sudo /etc/init.d/denyhosts restart