Mejorar la Seguridad de SSH

De un articulo visto en un blog de Seguridad encuentro para fortalecer las conexiones que se establecen con el servicio . Lo que voy a intentar hacer es expresar con mis palabras el articulo escrito ahí y hacer amigable algunos casos que presenta, sin embargo la fuente original tiene más calidad y mejores articulos. La por defecto de SSH es de por sí segura, pero si sentimos la necesidad de mejorarla podemos seguir esta guía.

Vamos a trabajar en el fichero de configuración de SSH que esta ubicado en /etc/ssh/sshd_conf lo modificamos como .

sudo gedit /etc/ssh/sshd_conf

Veamos las opciones y como se configurarán:

  • Port

Por defecto el puerto de servicio es el 22, así que cualquier persona o robot que intente realizar una conexión por SSH buscará el puerto por defecto, si lo cambiamos por otro que recordemos fácilmente podemos crear confusión si es un usuario novato o evitar el ataque de un bot que busca colarse en nuestro sistema.

  • Protocol

Por defecto SSH es compatible con las versiones antigua y nuevo de SSH (1,2). Dejar que solo use el protocolo 2 aumentará la seguridad, debemos hacerlo solo si estamos seguros de que no lo vamos a usar con una versión antigua.

  • PermitRootLogin

Sin modificar nada podemos loguearnos como ROOT por SSH, este es un error de seguridad básico ya que un posible atacante puede solo necesita encontrar la y con esto tiene el 50% del trabajo realizado, si configuramos como no ahora tendrá que buscar el usuario y la contraseña.

  • ListenAddress

Si nos conectamos siempre desde una computadora con IP estatica es recomendable restringir la autenticación solo a esas ip’s. Por defecto no esta configurado.

  • AllowUsers

Como en las opción anterior, todos los usuarios pueden conectarse por SSH si queremos restringir el servicio a solo algunos usuarios los escribimos de la forma ‘usuario@host’.

  • AllowGroups

Al igual que con AllowUsers, AllowGroups permite especificar el grupo o los grupos de usuarios a los que se les permite hacer acceder mediante SSH al sistema.

  • MaxAuthTries

Con esta opción podemos especificar el número maximo de intentos antes de cerrar la conexión, siempre se sugiere un número bajo por ejemplo 3.

  • LoginGraceTime

Similar al anterior pero sobre tiempo, es decir sin que se haya autenticado el usuario el tiempo en el que la conexión permanece abierta. Como sugerencia pueden ser 60 segundos.

  • Banner

Si seleccionamos el protocolo 2 podemos activar esta opción. En caso de que el sistema detecte intentos de intrución puede mostrar un archivo con un mensaje de advertencia.

  • MaxStartups

Aqui declaramos el número maximo de conexiones abiertas, es decir que solicitan una conexión. Un intento de intrucción se da un multiples conexiones, si el número de usuarios SSH es bajo lo mejor es darle un margen pequeño alrededor de 3.

Quiza en baja escala estos consejos pueden asegurarnos que nuestros amigos o colegas más cercanos no nos jueguen bromas de mal gusto y con una configuración similar en nuestros servidores SSH evitamos posibles desastres.

Comparte con otros

2 pensamientos en “Mejorar la Seguridad de SSH”

  1. Si es por mejorar la seguridad, se te han olvidado dos asuntos:
    * Usar una herramienta tipo fail2ban. En particular, ésta: http://www.fail2ban.org/wiki/index.php/Main_Page, viene ya preparada para los logs del SSHD. Así que cuando alguien falle por más un número de veces consecutivas, crea automáticamente una regla en el cortafuegos para impedir que se conecte más veces. Lo normal es que sea temporal, y le haga esperar unos 30 minutos para otros tantos intentos. Esto impide los ataques por fuerza bruta y por diccionarios.
    * Usar port knocking, http://www.portknocking.org/. Es una técnica que en base a mandar algunos paquetes TCP y/o UDP con unos flags determinados, permiten la apertura remota de un puerto. La gracia de esto, es que es prácticamente imposible para un atacante discernir si el puerto ssh está abierto, o es que hay “que llamar a la puerta”. La llamada a la puerta, puede ser bastante compleja. Cuando te quieras conectar, necesitas el cliente de port knocking, que abra la puerta, y luego ya se puede lanzar el cliente ssh. Esto, además, se puede complicar hasta que sea necesario un port knocking con dispositivos físicos (por ejemplo, hacer una llamada con un móvil, lo que sería un port knocking fuera de banda).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *