====== 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