miércoles, 14 de marzo de 2007

Bloquear ataques por fuerza bruta en nuestro servidor SSH

Si hemos configurado nuestro sevidor SSH y echamos un ojo a los mensajes de seguridad en SUSE:
tail -n100 /var/log/messages
o bien
grep sshd /var/log/messages
Veremos que hay muchos ataque por fuerza bruta a nuestro servidor. Podemos tomar varias medidas para solucionar el problema:

1) Cambiar nuestra configuración del servidor SSHD a través del fichero /etc/ssh/sshd_config . Algunos parámetros podrían ser:

a)
PermitRootLogin no <-- evitamos el acceso usando el usuario root, esto es casi obligatorio en cualquier sistema

b) PasswordAuthentication no <- no se permite el acceso a través de password, tendríamos que utilizar ssh keys, lo cual puede resultar un poco engorroso si tenemos muchos usuarios

c)Port 2221 <- cambiamos el puerto de escucha del SSHD, es una medida bastante sencilla y evitará muchos ataques, el único inconveniente es que todos los usuarios deben saber cual es el nuevo puerto. Esta medida previene de ataques fortuitos a nuestro sistema, es decir, si escanean nuestra red buscando equipos con el puerto 22 abierto no apareceremos. Un análisis a fondo de nuestro equipo revelará al atacante que estamos ejecutando un servidor ssh, y podría realizar a continuación un ataque por fuerza bruta.

d)Otra medida para proteger en parte nuestro sistema es utilizar el script denyhost (http://denyhosts.sourceforge.net/). Dicho script realiza dos tareas sencillas: 1) monitorizar nuestro fichero de mensajes (/var/log/messages) 2) cuando encuentra intento de accesos por fuerza bruta dsde una determinada ip, la añade al fichero /etc/hosts.deny

De esta manera tras uno pocos intentos por fuerza bruta la ip atacante será bloqueada. Vamos a configurarlo para nuestro Suse 10.2:

1) Descargar los paquetes python-dev a través de YAST2

2) Descargar el script denyhost a través de http://denyhosts.sourceforge.net/ , en la sección download. Yo he descargado la versión DenyHosts-2.6.tar.gz

3) Descomprimir el archivo --> tar zxvf DenyHosts-#.#.#-tar.gz

4) Dentro del directorio y como root --> python setup.py install

5) Los archivos se instalan en /usr/share/denyhosts. Vamos al directorio --> cd /usr/share/denyhosts

6) Creamos el archivo de configuración mediante --> cp denyhosts.cfg-dist denyhosts.cfg .

7) En el archivo denyhosts.cfg hay que buscar la variable SECURE_LOG comentamos la de Redhat y descomentamos la de Suse --> SECURE_LOG = /var/log/messages.

8) Si vamos a usarlo como daemon debemos crear también el archivo del demonio --> cp daemon-control-dist daemon-control

9) Editamos el fichero daemon-control

10) buscamos la variable DENYHOSTS_BIN y cambiamos el valor a --> DENYHOSTS_BIN = "/usr/local/bin/denyhosts.py"
11) Cambiamos los permisos y el propietario del fichero daemon-control->
chown root daemon-control
chmod 700 daemon-control

12) Para arrancar el demonio manualmente --> ./daemon-control start

13) Para arrancarlo al inicio del sistema:

ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts <--crea un enlace en init.d chkconfig --add denyhosts <--crea entradas en rc2.d, rc3.d y rc5.d

14)si deseamos permitir algún host siempre, debemos añadirlo a hosts.allow, por ejemplo el localhost:
sshd:localhost

No hay comentarios: