====== DenyHosts: bloqueando intentos fallidos de acceso por SSH ======
//Nota//: Debian Sarge no trae el paquete DenyHosts, por lo que se debe instalar en forma manual. Debian Etch y posteriores sí lo traen, por lo cual se debe instalar simplemente utilizando aptitude siguiendo el procedimiento estándar.
- Instalar Python 2.3:
aptitude install python python2.3-dev python2.3
- Bajar DenyHosts del [[http://denyhosts.sourceforge.net/|sitio oficial]]:
wget -c http://ufpr.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6.tar.gz
- Descomprimir el archivo, ingresar al directorio con el programa, e instalarlo:
python setup.py install
Este script instalará DenyHosts en /usr/share/denyhosts.
- A continuación, se debe configurarlo, para lo cual se puede copiar y modificar el archivo de configuración de ejemplo que trae la distribución:
cd /usr/share/denyhosts
cp denyhosts.cfg-dist denyhosts.cfg
- Se debe editar el archivo denyhosts.cfg, asegurándose que los siguientes valores (para Debian Sarge) estén correctos:
SECURE_LOG = /var/log/auth.log
LOCK_FILE = /var/run/denyhosts.pid
- Adicionalmente, se deben ajustar otros valores, por ejemplo:
PURGE_DENY = 1w
BLOCK_SERVICE = ALL
DENY_THRESHOLD_INVALID = 3
DENY_THRESHOLD_VALID = 5
ADMIN_EMAIL = admin@dominio
Por defecto, estos valores suelen ser bastante fascistas, por lo que quizá convenga ajustarlos para adaptarlos a las necesidades del administrador.
- Para utilizar DenyHosts como demonio, se debe utilizar un script que viene en la distribución:
cp daemon-control-dist daemon-control
chown root daemon-control
chmod 700 daemon-control
- Editándolo, asegurarse que los siguientes valores estén correctos (para Debian Sarge):
DENYHOSTS_BIN = "/usr/bin/denyhosts.py"
DENYHOSTS_LOCK = "/var/run/denyhosts.pid"
DENYHOSTS_CFG = "/usr/share/denyhosts/denyhosts.cfg"
- Se debe agregar el demonio en el inicio del sistema:
cd /etc/init.d
ln -s /usr/share/denyhosts/daemon-control denyhosts
update-rc.d denyhosts defaults
- Finalmente, iniciar el servicio:
/etc/init.d/denyhosts start
El log del demonio quedará en /var/log/denyhosts
===== Cómo purgar cada tanto las IPs bloqueadas =====
Simplemente, se debe iniciar el demonio con la opción --purge, lo cual hará la tarea, siempre que la variable PURGE_DENY tenga un valor correcto
/etc/init.d/denyhosts start --purge
===== Cómo desbloquear IPs =====
//Nota//: WORK_DIR es generalmente /var/lib/denyhosts/ o /usr/share/denyhosts/data/
- Detener DenyHosts
- Eliminar la IP de /etc/hosts.deny
- Editar WORK_DIR/hosts y eliminar las líneas que contengan la IP en cuestión
- Editar WORK_DIR/hosts-restricted y eliminar las líneas que contengan la IP en cuestión
- Editar WORK_DIR/hosts-root y eliminar las líneas que contengan la IP en cuestión
- Editar WORK_DIR/hosts-valid y eliminar las líneas que contengan la IP en cuestión
- Editar WORK_DIR/users-hosts y eliminar las líneas que contengan la IP en cuestión
- Opcionalmente, considerar agregar la IP en el archivo WORK_DIR/allowed-hosts
- Iniciar nuevamente DenyHosts
===== Bibliografía =====
* Sitio oficial de DenyHosts: http://denyhosts.sourceforge.net/
* Preventing SSH Dictionary Attacks With DenyHosts: http://www.howtoforge.com/preventing_ssh_dictionary_attacks_with_denyhosts