Cómo configurar SSH para que sea más seguro

Cómo configurar SSH para que sea más seguro

openssh log

En este artículo, te voy a explicar cómo se debe fortalecer la seguridad de un servidor SSH mediante configuraciones específicas en el archivo “sshd_config”. Saber cómo implementar estas configuraciones y dejar el servidor SSH mucho más seguro es muy importante para proteger tu servidor de posibles amenazas externas.

Si acabas de empezar a utilizar SSH puedes ir primero a la Guía para instalar SSH desde cero.

Aquí están los cambios clave que puedes realizar en el fichero /etc/ssh/sshd_config para mejorar la seguridad de tu servidor SSH.

Seguridad Linux
Seguridad en Linux

Además, si estás empezando a usar una distribución de GNU/Linux y no tienes claro cuales son los conceptos más importantes, puede apuntarte ya a mi curso básico gratuito sobre Linux.

Cambio de Puerto SSH

El puerto SSH predeterminado es el 22, y eso lo saben todos los hackers del mundo. Por tanto una de las primeras medidas de seguridad que se deben tomar es cambiarlo a uno menos predecible.

Esto dificulta que los atacantes encuentren el servicio SSH en mi servidor. Para hacerlo, abro el archivo sshd_config:

Busca la línea que dice Port 22 y la cambias a un número de puerto no estándar, como:

Port 22822

Después se guardan los cambios, y reinicias el servicio SSH para que los aplique:

sudo systemctl restart sshd

Este proceso lo deberás realizar cada vez que hagas un cambio en el fichero de configuración, es decir, después de c

Desactivar protocolos antiguos de SSH

SSH admite varios protocolos, pero es importante desactivar los más antiguos y menos seguros. Asegúrate de que tu archivo sshd_config contenga esta línea y que no esté comentada:

Protocol 2

Esto garantiza el uso del Protocolo 2, que es más seguro, y además desactiva el Protocolo 1.

Limitar acceso de usuarios en SSH seguro

Si quieres estar seguro de quien entra y solo quieres permitir que ciertos usuarios accedan al servidor SSH, puedes utilizar la opción AllowUsers en sshd_config. Por ejemplo, para permitir solo a “pablo” y “luis”, agrego lo siguiente:

AllowUsers pablo luis

Restricción de acceso por dirección IP

Puedo restringir aún más el acceso permitido especificando direcciones IP o rangos de IP en sshd_config. Esto es útil si deseo limitar el acceso solo a direcciones IP confiables. Deberías agregar líneas como estas:

AllowUsers pedro@192.168.1.100 *@192.168.1.101

Esto permite que “pedro” se conecte solo desde la dirección IP 192.168.1.100 y cualquier usuario tenga acceso desde la dirección IP 192.168.1.101.

¿Uso de autenticación con contraseñas SSH es seguro?

La autenticación basada en contraseñas puede ser vulnerable a ataques de fuerza bruta. En su lugar es mucho más segura la autenticación basada en claves SSH. Asegúrate de que esta opción esté habilitada en sshd_config:

PasswordAuthentication no

Esto desactiva la autenticación basada en contraseñas y requiere que los usuarios utilicen claves SSH para iniciar sesión.

La autenticación con clave SSH más seguro

Esta técnica se basa en el uso de un par de claves, una pública y una privada, en lugar de una contraseña. Debe aparecer esta directiva en el fichero de configuración de SSH.

PubkeyAuthentication yes

Así es cómo funciona:

  • Clave Pública: La clave pública es una parte de tu par de claves SSH y se almacena en tu servidor. Esta clave es conocida y se utiliza para cifrar los datos que se envían al servidor. Sin embargo, la clave pública por sí sola no puede usarse para iniciar sesión en el servidor.
  • Clave Privada: La clave privada es la contraparte de la clave pública y se almacena de forma segura en tu computadora o dispositivo desde el cual te conectas al servidor SSH. Esta clave debe mantenerse en secreto y nunca debe ser compartida. La clave privada se utiliza para descifrar los datos cifrados con la clave pública y para autenticarte en el servidor.

El proceso de autenticación con claves SSH funciona de la siguiente manera:

  1. Cuando intentas conectarte a tu servidor SSH, el servidor te envía una solicitud de autenticación.
  2. Tu cliente SSH (por ejemplo, OpenSSH) utiliza tu clave privada para cifrar una respuesta que solo puede ser descifrada por la clave pública correspondiente en el servidor.
  3. El servidor compara la respuesta cifrada con la clave pública almacenada en su configuración. Si coinciden, te permite iniciar sesión.

Ventajas de la autenticación con Clave SSH

  • Mayor seguridad: Las claves SSH son difíciles de adivinar o hackear, lo que las hace más seguras que las contraseñas.
  • Autenticación sin contraseña: Una vez configurada, no necesitas ingresar una contraseña cada vez que te conectas al servidor, lo que facilita y agiliza el proceso de inicio de sesión.
  • Fácil revocación: Si alguna vez tienes razones para desactivar el acceso de alguien a tu servidor, puedes hacerlo simplemente eliminando su clave pública de la configuración del servidor.

Generación de un par de Claves SSH

Puedes generar un par de claves SSH en tu computadora local utilizando el siguiente comando:

ssh-keygen -t rsa -b 4096

Este comando generará un par de claves RSA de 4096 bits. Te preguntará dónde deseas guardar la clave y te permitirá protegerla con una contraseña adicional si lo deseas. La clave pública se guarda en un archivo con extensión .pub, mientras que la clave privada se almacena en un archivo sin extensión.

Instalación de la Clave Pública en el Servidor

Después de generar el par de claves, la clave pública (id_rsa.pub por defecto) debe ser copiada y agregada al archivo ~/.ssh/authorized_keys de tu servidor (el equipo destino). Esto se puede hacer manualmente o utilizando el siguiente comando.

ssh-copy-id usuario@servidor

Reemplaza “usuario” con tu nombre de usuario en el servidor y “servidor” con la dirección IP o nombre de dominio del servidor.

Cómo usar la clave privada para conectarte por SSH

Una vez que hayas configurado correctamente tu clave pública en el servidor, podrás iniciar sesión en el servidor SSH mucho más seguro sin ingresar una contraseña:

ssh usuario@servidor

Tu cliente SSH utilizará automáticamente tu clave privada para autenticarte en el servidor. Asegúrate de proteger y guardar tu clave privada de manera segura, ya que proporciona acceso a tu servidor.

Limita los inicios de sesión fallidos

Puedo configurar el número máximo de intentos fallidos antes de bloquear una dirección IP durante un período de tiempo utilizando estas opciones en sshd_config:

MaxAuthTries 3
MaxSessions 2

Esto limita el número de intentos de inicio de sesión y sesiones simultáneas permitidas.

Habilitar registros de seguridad (logs)

Los registros de seguridad son fundamentales para el seguimiento de posibles amenazas. Puedo habilitar un registro más detallado en sshd_config:

LogLevel VERBOSE

Esto proporciona un registro más completo de eventos relacionados con SSH en el archivo /var/log/auth.log.

Restricción del acceso a archivos privados SSH

Finalmente, es importante que los archivos de clave SSH en mi servidor tengan permisos adecuados. Utilizo el siguiente comando para establecer los permisos correctos:

sudo chmod 600 ~/.ssh/authorized_keys
sudo chmod 700 ~/.ssh

Esto garantiza que solo el propietario pueda leer y escribir en estos archivos.

Seguridad en tu servidor con SSH

Mejorar la seguridad de mi servidor SSH es fundamental para proteger mis datos y mi sistema. Al realizar los cambios adecuados en sshd_config, puedes fortalecer significativamente la seguridad de SSH. Estas configuraciones me ayudan a proteger mi servidor contra amenazas comunes y a mantener la integridad de mis datos.

Recuerda que la seguridad es un proceso continuo. Debes estar al tanto de las mejores prácticas y las amenazas actuales para mantener tu servidor seguro. ¡No escatimes en seguridad y mantén tus sistemas actualizados y protegidos!

Si tienes alguna pregunta o comentario, no dudes en compartirlo en los comentarios.

2 comentarios

  1. César de los RABOS dice:

    Bueno, esto de “La autenticación con clave SSH más seguro” está bien explicado pero confuso, pues si está corriendo el servicio openSSH, Desde otra computadora en el escritorio de mate:
    menu > lugares > conectarse al servidor
    … OK se hace mediante “ftp” pero la dirección IP de la red “wifi” o cableada va a cambiar a menudo, entonces en dónde copio las claves cuando mencionas:

    “debe ser copiada y agregada al archivo ~/.ssh/authorized_keys de tu servidor. ”

    Respecto al tema de seguridad, pues lo mejor es desactivar el servicio de openSSH -igual va a ser de uso personal en mi caso-.

    • Buenos días César, gracias por tu comentario.
      Sobre el tema de la IP, para realizar conexiones por ssh lo más recomendable sería que el equipo destino tenga una IP fija, ya que de lo contrario cada vez que cambie deberías volver a compartir tus claves.
      No entiendo bien lo que comentas sobre dénde hay que copiar las claves, lo he leído un par de veces y no se bien cual es la duda. Si puedes, explícame un poco más en detalle para poder ayudarte.

      Si no requieres conexiones de ssh, lo mejor es incluso desinstalar el paquete openssh y te quitas todos los problemas.

Deja una respuesta

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