Las contraseñas se están volviendo vulnerables con el entorno de ciberseguridad en constante evolución. Más que nunca, los sistemas se están volviendo propensos a los ataques de fuerza bruta. Los usuarios también facilitan que los piratas informáticos se infiltren en sus sistemas protegiéndolos con contraseñas débiles y, a menudo, adivinables. La autenticación de 2 factores ahora es un lugar común y proporciona una capa adicional de protección utilizando códigos OTP para garantizar que realmente sea el usuario el que inicie sesión en el sistema.
Otra forma de proteger su servidor es configurar la autenticación SSH sin contraseña en su servidor. Esto utiliza autenticación SSH de clave pública donde se genera un par de claves SSH en el sistema local. El par de claves se compone de una clave SSH privada y una pública. La clave privada permanece en el sistema local mientras que la clave pública se carga en el sistema remoto. Durante la autenticación, se produce un intercambio de claves entre la clave pública guardada en el sistema remoto y la clave privada en el sistema local. Las conexiones subsiguientes están así aseguradas y no se requerirá contraseña.
En esta guía, lo guiaremos a través de cómo configurar la autenticación SSH con contraseña en 3 simples pasos.
Laboratorio de configuración de SSH sin contraseña
Para fines de demostración, utilizaremos la siguiente configuración de laboratorio:
Local Linux system - 192.168.2.104
Remote Linux system - 192.168.2.108
Sería prudente asegurarse también de que puede acceder al sistema remoto desde su sistema local utilizando la autenticación de contraseña SSH.
¡Empecemos!
Paso 1. Generar par de claves SSH
De inmediato, generaremos un par de claves SSH que se almacenará en el directorio de inicio. Por lo tanto, invoque el ssh-keygen comando como se muestra. Aquí, estamos creando un par de claves de 4096 bits.
$ ssh-keygen -b 4096
Acepte los valores predeterminados simplemente presionando ENTER. Puede encontrar el par de claves SSH en ~/.ssh directorio que es un directorio oculto en su carpeta de inicio.
Solo para estar seguro, use el comando ls para verificar la presencia de las claves SSH.
$ ls .ssh
La clave privada se denota por id_rsa mientras id_rsa.pub es la clave pública. Estas son claves criptográficas que están encriptadas. Posteriormente, copiaremos la clave pública al sistema remoto.
Paso 2. Copie el par de claves SSH en el sistema remoto
A continuación, debe copiar y guardar la clave pública en el sistema Linux remoto. ¿Por qué estamos haciendo esto? En la autenticación de clave pública, se lleva a cabo un protocolo de enlace de autenticación entre la clave pública en el sistema remoto y la clave privada que reside en el sistema local. Esto garantiza que todo el tráfico subsiguiente entre el sistema host local y el sistema remoto esté encriptado.
Para copiar la clave pública SSH, ejecute ssh-copy-id comando de la siguiente manera.
$ ssh-copy-id [email protected]
En nuestro caso, será:
$ ssh-copy-id [email protected]
Para continuar con la conexión, escriba 'Sí' y presione ENTER. A partir de entonces, proporcione la contraseña del sistema remoto para iniciar sesión y copiar la clave pública SSH.
La clave SSH pública se agrega a un archivo único llamado authorized_keys en el directorio de inicio de la cuenta de usuario en la que está iniciando sesión. La ruta completa a este archivo es ~/.ssh/authorized_keys
Después de copiar con éxito la clave SSH, ahora puede iniciar sesión en el sistema remoto utilizando la autenticación de clave pública de la siguiente manera.
$ ssh [email protected]
En el fragmento a continuación, puede ver que hemos iniciado sesión en el sistema remoto sin siquiera solicitar una contraseña. ¡Impresionante!
Como se mencionó anteriormente, la clave pública se guarda en ~/.ssh/authorized_keys camino.
Paso 3. Deshabilitar la autenticación de contraseña (Opcional)
Si desea aumentar la seguridad de su sistema remoto, puede considerar deshabilitar la autenticación de contraseña. Al hacerlo, se asegura de ser el único que puede acceder al sistema utilizando la clave privada que se encuentra en su sistema local. La clave siempre debe ser un alto secreto. Nunca lo comparta con nadie para que su sistema no se vea comprometido.
En el host remoto, abra el acceso a /etc/sshd_config archivo a mostrado.
$ sudo vim /etc/sshd_config
Localice la PasswordAuthentication parámetro y establézcalo en no como se muestra.
A continuación, asegúrese de que la autenticación de clave pública esté habilitada como se muestra.
Para que los cambios persistan, reinicie el servicio SSH de la siguiente manera.
$ sudo systemctl restart ssh
Para demostrar que la autenticación de contraseña está deshabilitada, intentaremos acceder al servidor usando el cliente Putty SSH. Proporcione la dirección del sistema remoto y presione 'Abrir'
Proporcione el nombre de usuario remoto y presione ENTER. Esta vez, obtienes una autenticación ya que deshabilitamos la autenticación con contraseña.
Conclusión
La autenticación de clave pública es una forma a prueba de manipulaciones de conectar y fortalecer su servidor. Elimina los vectores de ataque, como los ataques de contraseña de fuerza bruta, que son siniestros cuando su sistema tiene autenticación de contraseña.