DenyHosts, previniendo ataques de diccionario contra SSH

lunes, 16 de junio de 2008
Escrito por Neodian a las 6:45
3 comentarios

Desde que tengo el servidor me he estado fijando que misteriosamente empiezan a aparecer una serie intentos de conexion contra el ssh, intentando supongo hacerse con el control de la maquina. Suerte que tengo desactivado el acceso para la cuenta de root asi que de momento no han conseguido nada, de todos modos me fastidia ver que en un par de dias aparecen del orden de 22000 intentos de conexion, que quieras que no estan jodiendo al server.

Asi que para intentar remediarlo cambie el ssh de puerto, pero este cambio no me convencia, ademas de que me daba un error de conexion a traves de ciertos proxies. Asi que despues de un tiempo lo volvi a poner en el 22 y pense que quiza despues de el tiempo que habia pasado me dejarian en paz, pero pobre iluso los intentos de conexion seguian e iban en aumento. Estuve buscando por la red y me encontre con un pequeño programita que cumplia con mis expectativas, denyhosts.

Se trata de un script en python, pero podemos ejecutarlo como demonio para que quede trabajando, que monitoriza el archivo /var/log/auth.log y busca intentos de conexion fallidos al ssh, dependiendo de como lo ajustes, a los 5 intentos fallidos envia la ip de la maquina a /etc/hosts.deny impidiendo que esa maquina se vuelva a conectar al sevidor para siempre, fantastico.

Instalacion

Bueno pues despues de esta introduccion vamos a pasar a ver como instalarlo en nuestro sistema. Para empezar tenemos que instalar python en caso de no tenerlo ya, para ello:

apt-get install python python2.3-dev python2.3

Es posible que la version de python sea superior, podeis hacer primero un apt-cache search y mirar la que corresponde. Ahora procedemos a instalar denyhosts asi:

cd /tmp
wget http://mesh.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6.tar.gz
tar xvfz DenyHosts-2.0.tar.gz
cd DenyHosts-2.0
python setup.py install

Esto lo instala en /usr/share/denyhosts.

Configuracion

Ahora tenemos que crear el fichero de configuracion para denyhosts, para eso vamos a copiar el archivo de ejemplo que trae el propio programa:

cd /usr/share/denyhosts
cp denyhosts.cfg-dist denyhosts.cfg

Ahora procederemos a editar el fichero cambiando los siguientes valores:

SECURE_LOG = /var/log/auth.log
LOCK_FILE = /var/run/denyhosts.pid

Como lo interesante de este programita es ejecutarlo como demonio y “olvidarnos”· de el pues necesitamos un fichero a mayores, una vez mas podemos copiar el fichero de configuracion de ejemplo que trae el programa(recordar que estamos en el directorio /usr/share/denyhosts):

cp daemon-control-dist daemon-control

Ahora lo editamos y nos aseguramos de que los siguientes valores esten correctos:

DENYHOSTS_BIN = “/usr/bin/denyhosts.py”
DENYHOSTS_LOCK = “/var/run/denyhosts.pid”
DENYHOSTS_CFG = “/usr/share/denyhosts/denyhosts.cfg”

En este momento debemos dar permisos de ejecucion al demonio:

chown root daemon-control
chmod 700 daemon-control

Uso

Y ya para terminar y dejeralo feten lo vamos a copiar a /etc/init.d/ para que se ejecute el solo al inicio del servidor como un servicio mas del sistema:

cd /etc/init.d
ln -s /usr/share/denyhosts/daemon-control denyhosts
update-rc.d denyhosts defaults

De esta forma podemo arrancar/parar/reiniciar nosotros el proceso facilmente:

/etc/init.d/denyhosts start #–>arrancar
/etc/init.d/denyhosts stop #–>parar
/etc/init.d/denyhosts restart #–>reiniciar

Los ficheros de log importantes, y que deberemos prestar atencion son el /var/log/auth.log donde van los sucesos del ssh y el /var/log/denyhosts donde el denyhosts deja constancia de toda su actividad. Ademas en el fichero /etc/hosts.deny se iran incluyendo automaticamente las ip banneadas. Recordar que todas las ips que figuran en ese fichero tiene el acceso totalmente prohibido a la maquina;Si por algun casual acaba apareciendo alguna ip que no deberia, de un amigo, o la vuestra propia podeis eliminarla manualmente editando el fichero.

Pues hasta aqui nuesto articulo firki-linuxero de la semana, sed felices.

Sacado de: http://www.howtoforge.com/preventing_ssh_dictionary_attacks_with_denyhosts

Pertenece a la seccion Manuales





3 comentarios »

  1. Neodian dice:

    Si en la 6.06 lo instalaste usando apt a lo mejor estas usando una version antigua(o muy antigua) te recomiendo que sigas el manual y te bajes la ultima version disponible, eso deberia funcionar sin problemas.

  2. public_int dice:

    una pregunta

    instale denyhosts en ubuntu 8.04
    apt-get install denyhost
    y ningun problema, a los minutos empezo a bloquear ip’s en /etc/hosts.deny

    trate de instalarlo en ubuntu 6.06 LTS siguiendo tus pasos, al parecer todo bien ningun mensaje de error, pero no agrega ip’s al /etc/hosts.deny, apesar q en el auth.log hay varios registros de conexiones fallidas por ssh

    alguna idea?

    gracias

  3. Jose562 dice:

    Genial companero, mas que util =D