/var/log/auth.log
. Los ataques son constantes y, con facilidad, os encontraréis decenas de líneas como esta que provienen, como podeis imaginar, de ataques por fuerza bruta:
Failed password for invalid user anna from 118.219.232.208 Failed password for invalid user anne from 118.219.232.208 Failed password for invalid user anneliese from 118.219.232.208 Failed password for invalid user annemarie from 118.219.232.208 Failed password for invalid user annette from 118.219.232.208 Failed password for invalid user annike from 118.219.232.208 Failed password for invalid user antje from 118.219.232.208 Failed password for invalid user arianne from 118.219.232.208 Failed password for invalid user astrid from 118.219.232.208 Failed password for invalid user barbara from 118.219.232.208
La mejor forma de proteger tu servidor de estos ataques es deshabilitar los accesos a ssh a través de passwords y sólo permitir los autenticados mediante claves RSA y/o habilitar las IP’s válidas para realizar una conexión a través del fichero /etc/hosts.allow
denegando todas las demás, pero esto no siempre es posible. A veces necesitamos permitir el acceso desde cualquier sitio a personal autorizado y no podemos usar ni una cosa ni la otra. Denyhosts es, en estos casos, una gran ayuda.
Se trata, básicamente, de un script escrito en python que analiza tus ficheros de log del servidor ssh, detecta los ataques al mismo e incluye las direcciones IP de las que provienen los mismos en el fichero /etc/hosts.deny
para bloquearlas. Además, si habilitamos esta característica, permite sincronizar los datos recogidos por nuestra máquina con los de todos los usuarios que están usando este producto de forma que las IP’s desde las que se lanzan ataques a otros servidores son bloqueadas de forma automática cuando tratan de acceder a nuestro servidor, y viceversa.
Instalarlo en Debian es tan fácil como ejecutar un apt-get install denyhosts
con privilegios de root. El paquete debian instala Denyhosts como un daemon (existen otras opciones como ejecutarlo manualmente o de forma periódica a través de cron). Después del primer arranque, que se ejecuta de forma automática, Denyhosts rastreará nuestro fichero de log más reciente y ya incluirá las primeras direcciones atacantes en el fichero hosts.deny:
sshd: 201.6.117.169 sshd: 216.77.98.235 sshd: 59.188.7.108 sshd: 200.161.135.135 sshd: 88.208.203.130 sshd: 58.241.40.66
El fichero de log de Denyhosts está en el fichero /var/log/denyhosts
y en él podemos ver como va recogiendo las direcciones peligrosas, tanto provenientes de este primer análisis como de su posterior funcionamiento en tiempo real:
2008-11-01 23:04 - denyhosts : INFO new denied hosts: ['201.6.117.169', '216.77.98.235', '59.188.7.108', '200.161.135.135', '88.208.203.130', '58.241.40.66'] ... 2008-11-02 01:57 - denyhosts : INFO new denied hosts: ['200.111.154.196'] 2008-11-02 05:15 - denyhosts : INFO new denied hosts: ['122.200.102.6'] 2008-11-02 05:51 - denyhosts : INFO new denied hosts: ['66.80.59.131']
La sincronización con otros usuarios no está habilitada inicialmente en el paquete que nos distribuye Debian. Para activarla basta con editar el fichero de configuración (/etc/denyhosts.conf
) y descomentar las siguientes líneas que habilitan la configuración por defecto:
SYNC_SERVER = http://xmlrpc.denyhosts.net:9911 SYNC_INTERVAL = 1h SYNC_UPLOAD = yes SYNC_DOWNLOAD = yes SYNC_DOWNLOAD_THRESHOLD = 3 SYNC_DOWNLOAD_RESILIENCY = 5h
Ahora reiniciamos el daemon (/etc/init.d/denyhosts restart) para que lea la nueva configuración y, al cabo de una hora como le hemos indicado, podremos ver la primera sincronización de datos:
2008-11-02 12:53 - denyhosts : INFO received new hosts: ['65.254.53.75', '83.19.41.182', '69.25.47.134', '86.219.230.217', '211.73.25.85', '201.6.252.150', '222.68.193.131', '62.213.23.138', '220.225.237.150', '75.125.196.226', '150.46.222.121', '61.150.114.76', '86.1.114.15', '75.127.83.114', '218.211.38.66', '60.164.220.15', '200.6.102.30', '66.104.77.34', '66.231.237.116', '61.184.142.98', '219.128.143.133', '88.198.158.42', '148.243.212.136', '85.17.169.129', '125.21.50.228', '210.205.217.77', '122.116.38.188', '200.253.218.210', '212.43.80.163', '83.98.220.52', '200.27.109.99', '201.6.126.232', '202.62.0.150', '122.224.108.216', '195.133.227.107', '219.142.114.254', '216.35.7.109', '196.217.243.13', '60.217.32.83', '211.22.147.18', '60.18.147.36', '210.75.200.9', 202.179.252.102', '125.88.102.23', '80.13.215.199', '61.100.180.19', '66.175.118.55', '208.43.145.242', '75.101.243.23', '193.137.226.2']
Las estadísticas de atacados y atacantes recogidas por el programa y sincronizadas mediante este servicio son públicas y pueden verse en esta página.
Si quieres alternativas, en El rincón de Tolito nos hablan de otros dos scripts similares: Blocksshd y Fail2ban.