Protege tu servidor SSH de ataques de fuerza bruta

publicado a la‎(s)‎ 13 oct. 2015 10:05 por Juan Jose Ramirez Lama

Si tienes un servidor SSH corriendo y alguna vez os habrás parado a mirar los logs, habrás visto una gran cantidad de intentos de acceso no autorizados. 


Si estudian más detenidamente los logs veras que la mayoría de veces son ataques basados en diccionarios o similares, por tanto a no ser que nuestros passwords sean muy débiles es difícil que consigan acceder a nuestra máquina. Pero para que arriesgarnos...vamos a ver como protegernos de estos seres malignos e indeseables que intentan entrar en nuestro sistema.

Hay varios programas/scripts que sirven para proteger nuestro servidor SSH de ataques de fuerza bruta, como por ejemplo:

Después de probarlos , me quedo con Denyhosts, ya que es sencillo de instalar/configurar, apenas consume recursos y cumple su cometido de sobra. Vamos a ver como instalarnos Denyhosts en nuestra Ubuntu.


En Feisty Fawn (en Edgy creo que también) Denyhosts viene incluido en los repositorios, así que su instalación es tan sencillo como:

# apt-get install denyhosts

Una vez instalado debemos crear un par de archivos (si es que no existen ya), para ello nuestro colega touch nos será útil:

# touch /etc/hosts.allow
# touch /etc/hosts.deny

Con esto ya tenemos instalado denyhosts y con la configuración por defecto, para arrancarlo y pararlo manualmente haremos lo siguiente:

# /etc/init.d/denyhosts start
# /etc/init.d/denyhosts stop

La configuración de denyhosts se guarda en /etc/denyhosts.conf, vamos a ver algunas de las directivas que podemos modificar desde este archivo: 

  • DENY_THRESHOLD_INVALID: Número de intentos fallidos (con un usuario que no exista) necesarios para banear esa IP.
  • DENY_THRESHOLD_VALID: Número de intentos fallidos (con un usuario existente) necesarios para banear esa IP.
  • DENY_THRESHOLD_ROOT: Número de intentos fallidos (intentando entrar como root) necesarios para banear esa IP.
  • BLOCK_SERVICE = sshd/ALL/etc... : Esta directiva indica los servicios que bloqueará a los usuarios baneados.
  • DAEMON_LOG = /var/log/denyhosts : Indica el archivo en el que se guardará el log de denyhosts.

Estas son las directivas más utilizadas, aunque tiene muchas más, dentro del propio archivo /etc/denyhosts.conf viene comentado para que sirve cada una, por tanto no me alargaré más en explicarlas todas. Otro de los consejos que os daría para evitar el 90% de los intentos de acceso es cambiar el puerto en el que tenemos corriendo el servidor de ssh por uno más alto (por encima del 1024 a ser posible), eso lo hacemos modificando la directiva port en el archivo /etc/ssh/sshd_config. Para terminar os aconsejaría que no permitas logearse por ssh como root, esto se desactiva en el mismo archivo etc/ssh/archivo sshd_config mediante la directiva "PermitRootLogin no"


Con todo esto tendremos algo más seguro (en informática pocas veces se esta seguro de algo un 100%) nuestro servidor SSH.

Comments