Guía completa para configurar SSH y garantizar una autenticación segura

Guía completa para configurar SSH y garantizar una autenticación segura

SSH (Secure Shell) — es un protocolo que proporciona acceso protegido a servidores remotos. Es una de las herramientas más importantes para administradores de sistemas y desarrolladores, especialmente en lo que respecta a la seguridad. En esta entrada explicaré cómo configurar SSH para una autenticación segura, para proteger su servidor contra accesos no autorizados.

Paso 1: Generación de claves SSH

¿Qué son las claves SSH?

Las claves SSH son pares de claves, formados por una clave privada y una clave pública. La clave pública se coloca en el servidor y se usa para la autenticación, y la clave privada se guarda en el equipo local del usuario y debe estar protegida.

¿Cómo crear claves SSH?

Para generar claves SSH use el comando ssh-keygen:

ssh-keygen -t ed25519

El algoritmo Ed25519 se recomienda por su alta seguridad y rendimiento. También puede usar RSA con una clave de 4096 bits:

ssh-keygen -t rsa -b 4096

Tras ejecutar el comando se le pedirá que indique la ubicación para guardar la clave y que cree una frase de contraseña para proteger adicionalmente la clave privada.

Paso 2: Configuración del servidor para usar claves SSH

Copiar la clave pública al servidor

Para añadir la clave pública al servidor use el comando ssh-copy-id:

ssh-copy-id user@server_address

Este comando añadirá su clave pública al archivo ~/.ssh/authorized_keys en el servidor.

Añadir la clave manualmente

Puede copiar manualmente el contenido de su clave pública (archivo .pub) y pegarlo en el archivo ~/.ssh/authorized_keys en el servidor.

Paso 3: Mejora de la seguridad de SSH

Desactivar el acceso por contraseña

Desactivar el acceso por contraseña mejora considerablemente la seguridad, ya que elimina la posibilidad de ataques por fuerza bruta a contraseñas:

  1. Abra el archivo de configuración de SSH /etc/ssh/sshd_config.
  2. Busque la línea PasswordAuthentication y cámbiela a no.

PasswordAuthentication no

  1. Reinicie el servicio SSH:

sudo systemctl restart sshd

Desactivar el acceso como root

El acceso como root otorga control total del sistema, lo que resulta muy peligroso. Para desactivar el acceso como root:

  1. En el archivo de configuración de SSH /etc/ssh/sshd_config busque la línea PermitRootLogin y cámbiela a no.

PermitRootLogin no

  1. Reinicie el servicio SSH.

Cambiar el puerto por defecto

Cambiar el puerto SSH del 22 a otro número puede reducir la probabilidad de ataques automatizados:

  1. En el archivo de configuración de SSH /etc/ssh/sshd_config cambie la línea Port al número de puerto deseado, por ejemplo:

Port 2222

  1. Reinicie el servicio SSH.

Configurar la autenticación de dos factores

La autenticación de dos factores añade un nivel extra de seguridad. Puede usar Google Authenticator o tokens hardware (por ejemplo, YubiKey). La configuración de la autenticación de dos factores puede implicar la instalación y configuración de PAM (Pluggable Authentication Modules).

Paso 4: Desactivar algoritmos inseguros y configurar claves seguras

Desactivar claves ECDSA

El algoritmo ECDSA está asociado con tecnologías NIST, que no siempre se consideran confiables. Para evitar la generación y el uso de estas claves, crearemos enlaces simbólicos no funcionales:

cd /etc/ssh

rm ssh_host_ecdsa_key*

rm ssh_host_key*

ln -s ssh_host_ecdsa_key ssh_host_ecdsa_key

ln -s ssh_host_key ssh_host_key

Desactivar claves DSA

Las claves DSA están limitadas a 1024 bits, lo que no se considera seguro. Para desactivarlas:

cd /etc/ssh

rm ssh_host_dsa_key*

ln -s ssh_host_dsa_key ssh_host_dsa_key

Generar una clave RSA de mayor tamaño

Para una autenticación más robusta conviene generar una clave RSA de 4096 bits:

cd /etc/ssh

rm ssh_host_rsa_key*

ssh-keygen -t rsa -b 4096 -f ssh_host_rsa_key < /dev/null

Generación de claves de cliente

Para crear claves de cliente use los siguientes comandos:

ssh-keygen -t ed25519

ssh-keygen -t rsa -b 4096

Conclusión

De esta entrada se puede concluir que configurar SSH para una autenticación segura es un paso importante para proteger sus servidores. Use claves SSH, desactive el acceso por contraseña, cambie el puerto predeterminado, configure la autenticación de dos factores y desactive algoritmos inseguros para lograr la máxima seguridad. Recuerde que la seguridad es un proceso, y que actualizar y revisar regularmente sus configuraciones es la mejor manera de proteger sus datos.

Alt text