Tabla de Contenidos

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.

  1. Instalar Python 2.3:
    aptitude install python python2.3-dev python2.3
  2. Bajar DenyHosts del sitio oficial:
    wget -c http://ufpr.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6.tar.gz
  3. Descomprimir el archivo, ingresar al directorio con el programa, e instalarlo:
    python setup.py install

    Este script instalará DenyHosts en /usr/share/denyhosts.

  4. 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
  5. 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
  6. 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.

  7. 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
  8. 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"
  9. 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
  10. 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/

  1. Detener DenyHosts
  2. Eliminar la IP de /etc/hosts.deny
  3. Editar WORK_DIR/hosts y eliminar las líneas que contengan la IP en cuestión
  4. Editar WORK_DIR/hosts-restricted y eliminar las líneas que contengan la IP en cuestión
  5. Editar WORK_DIR/hosts-root y eliminar las líneas que contengan la IP en cuestión
  6. Editar WORK_DIR/hosts-valid y eliminar las líneas que contengan la IP en cuestión
  7. Editar WORK_DIR/users-hosts y eliminar las líneas que contengan la IP en cuestión
  8. Opcionalmente, considerar agregar la IP en el archivo WORK_DIR/allowed-hosts
  9. Iniciar nuevamente DenyHosts

Bibliografía