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:
- Abra el archivo de configuración de SSH /etc/ssh/sshd_config.
- Busque la línea PasswordAuthentication y cámbiela a no.
PasswordAuthentication no
- 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:
- En el archivo de configuración de SSH /etc/ssh/sshd_config busque la línea PermitRootLogin y cámbiela a no.
PermitRootLogin no
- 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:
- 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
- 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.