Rechazar ataques por SSH usando DenyHosts

Si tenéis una máquina Linux corriendo SSH conectada de forma permanente o casi permanente a la red y examináis el contenido del fichero /var/log/auth.log (las líneas contienen el identificador "sshd") veréis que hay numerosos intentos de conexión a este servicio desde IPs desconocidas.

Aparte de las medidas habituales como usar claves seguras o, mejor aún, permitir el acceso ssh únicamente mediante certificados, también podéis usar un programa llamado DenyHosts que examina los registros del sistema e impide el acceso a aquellas IPs que se comporten de forma "sospechosa". En Debian y Ubuntu el programa se encuentra disponible dentro del paquete denyhosts.

Para prohibir el acceso a los atacantes DenyHosts añade sus IPs al fichero /etc/hosts.deny. Dicho fichero no bloquea el acceso a nivel de firewall (el puerto 22 sigue abierto a todo el mundo), pero sí que hace que el demonio ssh cierre la conexión nada más establecerla tras comprobar la IP.

Si accedéis de forma habitual mediante ssh posiblemente queráis añadir la dirección IP de vuestra máquina de trabajo al fichero allowed-hosts, situado por defecto en el directorio /var/lib/denyhosts para evitar que os bloquee tras la tercera o cuarta conexión seguida. Si vuestra IP es dinámica también podéis usar nombres DNS para identificar la máquina, pero hay que activar la opción ALLOWED_HOSTS_HOSTNAME_LOOKUP en el fichero /etc/denyhosts.conf.