Volver al blog

Configuración de su servidor Linux para usar autenticación basada en claves SSH

Configuración de su servidor Linux para usar autenticación basada en claves SSH

SSH en un servidor Linux

SSH, también conocido como secure shell, es un protocolo que se puede utilizar para conectarse y comunicarse con un servidor. Puedes conectarte a tu servidor Linux para una sesión de terminal utilizando este protocolo cifrado. Si estás utilizando un servidor OpenSSH, existen principalmente dos formas diferentes de realizar el proceso de autenticación. La primera es la autenticación estándar basada en contraseña. Aquí, simplemente utilizas tus credenciales de usuario y contraseña para acceder a tu cuenta. La otra forma es configurar tu servidor Linux para la autenticación basada en claves SSH.

En esta guía, nos centraremos en cómo puedes configurar tu servidor Linux para utilizar claves SSH como el medio principal de autenticación. También analizaremos por qué a menudo se prefieren las claves SSH en lugar del mecanismo habitual de protección por contraseña.

¿Qué son las claves SSH?

Las claves SSH son similares a las credenciales que usarías para iniciar sesión en tu cuenta en el servidor. En lugar de introducir tu nombre de usuario y contraseña, utilizas el par de claves SSH, que también es una credencial de acceso. Aunque las claves son criptográficas, debes tratarlas como credenciales de autenticación, ya que ese es el propósito que cumplen.

Una clave SSH típica consta de dos partes: una clave autorizada y una clave de identidad. La clave autorizada es la clave pública que funciona en combinación con tu clave de identidad privada para darte acceso a la cuenta. La clave pública se encuentra en el servidor remoto al que deseas conectarte con SSH y permanece en el archivo ~/.ssh/authorized_keys asociado a tu cuenta de usuario. Las claves de identidad sirven para verificar tu identidad como el usuario correcto para garantizar que solo el personal autorizado pueda acceder a la cuenta en cuestión. Colectivamente, estas claves se denominan claves de usuario, ya que autentican la identidad del usuario. Una vez que el servidor puede verificar ambas claves, se inicia una sesión de shell para ejecutar tus comandos.

También tienes claves de host y claves de sesión. El protocolo autentica la computadora local, el sistema o el servidor utilizando la clave de host. Las claves de sesión ayudan a cifrar el flujo de datos a través de la conexión. Esto hace que tu sesión y la actividad correspondiente sean mucho más seguras.

Claves SSH frente a la protección por contraseña

La razón principal por la que la autenticación basada en claves SSH es preferible a la protección por contraseña es que esta última puede dejarte vulnerable a los ciberataques. La mayoría de las personas no utilizan contraseñas extremadamente complejas para poder recordarlas cuando necesitan iniciar sesión. Como resultado, esto crea un área de vulnerabilidad. Muchos atacantes emplean la fuerza bruta para descifrar la contraseña relativamente simple y acceder a la cuenta. Esto se ha vuelto particularmente fácil hoy en día debido a la automatización y a las tecnologías avanzadas de hackeo.

Las claves SSH, por otro lado, ofrecen una forma mucho más segura de acceder a tu cuenta. Como mencionamos antes, este método utiliza una clave pública y una clave privada para autenticar la identidad de un cliente. Aunque puedes compartir la clave pública con cualquiera, debes mantener la clave privada en secreto. Cuando se emparejan, la clave pública descifra la privada para autenticar tu identidad. Además, puedes añadir una capa de protección agregando una frase de contraseña sobre el par de claves. Hablaremos más sobre la frase de contraseña más adelante en la guía. Sin embargo, incluso sin la frase de contraseña, tu clave SSH privada se mantiene extremadamente segura en tu computadora local. La red nunca puede acceder directamente a la clave, que se encuentra en un directorio restringido y se complementa con permisos restringidos.

Generación de claves SSH

Para generar tu par de claves SSH, debes buscar en el conjunto de herramientas de OpenSSH y localizar ssh-keygen. Esta es una herramienta de utilidad especial que te permite generar un par de claves SSH de aproximadamente 2048 bits. Comienza ejecutando este comando:

Esto mostrará el siguiente mensaje:

El mensaje generará una clave privada llamada id_rsa y una clave pública llamada id_rsa.pub. En este punto, puede elegir dónde desea ubicar la clave. Le recomendamos mantener la ubicación predeterminada presionando Enter. Mantener la ubicación predeterminada garantiza que el servidor ubicará y verificará automáticamente las claves cada vez que inicie sesión utilizando ese sistema. La ubicación predeterminada es el directorio ~/.ssh en el directorio de inicio. Si prefiere seleccionar un lugar diferente, escriba la ubicación.

Sobrescribir claves SSH anteriores

Es importante tener en cuenta que solo puede tener un par de claves SSH en su sistema a la vez. Esto significa que si ha generado y guardado previamente un par de claves en el sistema, verá el siguiente mensaje:

Para continuar creando y guardando su nuevo par de claves SSH, debe eliminar el existente. Recuerde: si sobrescribe la clave que ya está guardada en el disco, ya no podrá usarla para fines de autenticación. Este es un proceso irreversible, así que asegúrese de estar absolutamente seguro de que desea sobrescribir el par de claves antiguo.

Establecer una frase de contraseña

Una vez que haya configurado las claves en el directorio, se le preguntará si desea proporcionar una frase de contraseña:

La frase de contraseña es opcional; puede optar por omitirla. Sin embargo, agrega una capa adicional de seguridad para su clave privada al cifrarla en el disco. Si elige usar una frase de contraseña, deberá ingresarla correctamente cada vez que intente iniciar sesión con este par de claves SSH:

Finalmente, ahora debería tener sus claves SSH que puede usar para autenticar al cliente.

Insertar su clave SSH en la cuenta de su servidor

Antes de utilizar las claves para la autenticación, debe insertar la clave pública en el servidor Linux remoto. A continuación, le mostraremos cómo hacerlo al crear su servidor CloudSigma. Primero, debe buscar su clave SSH pública para poder copiarla y pegarla. Si ha utilizado el método anterior para generar su par de claves SSH, puede encontrar la pública escribiendo lo siguiente:

Esto hará que la clave SSH pública aparezca de esta manera:

Copie este valor para usarlo más tarde. Al crear un servidor con CloudSigma, tiene la opción de agregar una clave SSH después de haber seleccionado el tamaño del servidor y la imagen del sistema operativo:

single server creation

Haga clic en Agregar y pegue lo que ha copiado para incrustar la clave SSH en su servidor. Como resultado, cada vez que inicie su servidor, este ya tendrá la clave SSH inyectada.

Copiar una clave pública a un servidor existente

Aunque el método anterior funciona cuando está creando un nuevo servidor, ¿es posible incrustar una clave SSH en un servidor existente? La respuesta es sí, y hay múltiples formas de hacerlo dependiendo de las herramientas que tenga a su disposición.

Uso de SSH-Copy-ID

Esta es la forma más simple y fácil de copiar una clave pública. Todo lo que necesita es la herramienta de utilidad ssh-copy-id que encontrará en la suite estándar de OpenSSH. Pero antes de poner en práctica este método, asegúrese de que la autenticación basada en contraseña esté activada en su servidor. Para copiar la clave, aplicará la sintaxis de ssh-copy-id y luego ingresará el host remoto al que desea conectarse. También tendrá que especificar la cuenta a la que se está conectando. Debe tener acceso basado en contraseña a la cuenta, para que su clave se copie en la ubicación correcta. El comando debería verse así:

Esto puede hacer que aparezca en su pantalla un mensaje como el siguiente:

Esto suele ocurrir si es la primera vez que se conecta a ese host remoto en particular. Simplemente significa que el equipo no pudo reconocer el host. Todo lo que tiene que hacer es escribir 'yes' y presionar Enter. Una vez que lo haga, la herramienta escaneará la cuenta para buscar su clave pública. Al localizarla, le pedirá que ingrese la contraseña de su cuenta:

A continuación, puede ingresar su contraseña. Cuando esté conectado a su cuenta, la herramienta copiará el contenido de la clave ~/.ssh/id_rsa.pub y lo pegará en authorized_keys en el directorio ~/.ssh de su cuenta remota. Luego verá el siguiente mensaje:

Esto significa que ha copiado con éxito su clave pública en su servidor remoto existente.

Uso de SSH

Este es un método bastante convencional para copiar su clave pública en un servidor. Es preferible usarlo si no tiene acceso a la herramienta ssh-copy-id. Nuevamente, debe tener acceso basado en contraseña a su cuenta. Lo que está haciendo esencialmente es colocar el contenido de la clave pública como una salida en su computadora y transferirlo al servidor remoto a través de la conexión SSH establecida entre ellos. El comando que utilizará para este propósito debería ser el siguiente:

Como puede ver, hemos especificado que la clave debe colocarse en el archivo authorized_keys dentro del directorio ~/.ssh en el servidor. El uso del símbolo >> también garantiza que estamos agregando claves en lugar de sobrescribirlas. Después de ejecutar el comando, es posible que vea este mensaje:

De manera similar al mensaje anterior, esto significa que la computadora no reconoció al host remoto. Escriba ‘yes’ y presione Enter para continuar. Ahora, ingresará la contraseña de la cuenta:

Una vez verificada la contraseña, la clave se copiará en un archivo en su cuenta de usuario como se especificó.

Manualmente

En caso de que no tenga acceso basado en contraseña a su cuenta en el servidor remoto, puede copiar la clave pública manualmente. El objetivo es llevar el valor del archivo id_rsa.pub al archivo ~/.ssh/authorized_keys en su dispositivo remoto. Como ya sabemos, podemos visualizar el valor de la clave id_rsa.pub usando este comando:

El contenido de su clave pública SSH aparecerá así:

A continuación, debe obtener acceso a su cuenta en el host remoto a través de cualquier medio disponible. Cuando haya iniciado sesión, verifique que el directorio ~/.ssh esté presente. Si no es así, puede ejecutar el siguiente comando para crearlo:

Ahora, puede usar este comando para agregar el contenido del archivo id_rsa.pub al archivo authorized_keys en este directorio ~/.ssh en el servidor remoto:

En lugar de escribir ‘public_key_string‘ en este comando, tendrá que ingresar el contenido de la clave que extrajo al ejecutar el comando cat ~/.ssh/id_rsa.pub anteriormente.

Autenticación con su clave SSH

Ahora, puede ingresar fácilmente a su cuenta usando solo sus claves SSH. Esto significa que ya no necesita su contraseña para acceder a la cuenta de su servidor. Utilizará las credenciales que usa habitualmente para iniciar sesión:

Esto puede hacer que aparezca el siguiente mensaje:

No se preocupe si ve este mensaje. Simplemente significa que el sistema local no puede reconocer al host remoto. Esto suele ocurrir si se está conectando al host por primera vez. Todo lo que tiene que hacer es escribir ‘yes’ y presionar Enter. Volviendo a algunos de los pasos anteriores, si aplicó una frase de contraseña, aquí es donde tendrá que introducirla. Si no lo hizo, iniciará sesión en su cuenta de inmediato después de que se autentiquen las claves SSH. Esto iniciará una nueva sesión de shell a través de su cuenta actual en la computadora local.

¿Cómo desactivar la autenticación por contraseña en su servidor?

Ahora que sabe cómo configurar sus claves SSH, debe desactivar la autenticación por contraseña. Incluso si puede usar las claves SSH para la autenticación, sigue siendo vulnerable a ataques de fuerza bruta si el proceso de autenticación por contraseña está activo. Antes de desactivar el mecanismo de autenticación por contraseña, asegúrese de que la configuración de la autenticación basada en claves SSH sea de la cuenta root en el servidor o que la cuenta configurada tenga acceso sudo. El motivo para confirmar esto es asegurarse de mantener el acceso administrativo a la cuenta incluso cuando las contraseñas estén desactivadas. Ahora puede usar esta clave SSH para iniciar sesión en la cuenta de su servidor. El siguiente paso es abrir el archivo de configuración del demonio SSH:

Aquí, debe buscar la siguiente directiva:

Debe descomentar esta línea y cambiar el valor a ‘no’, de la siguiente manera:

Al hacer esto, se desactivará la autenticación basada en contraseña. Simplemente guarde el archivo y ciérrelo cuando termine. Por último, debe reiniciar su dispositivo para aplicar los cambios. Si es usuario de un dispositivo Ubuntu o Debian, también puede usar el siguiente comando para desactivar el acceso basado en contraseña:

Para asegurarse de que su demonio, o sshd, solo permita la autenticación basada en SSH en el servidor en máquinas CentOS o Fedora, use el comando:

Conclusión

Una vez que haya completado todos estos pasos, debería tener la autenticación basada en claves SSH configurada y funcionando en su servidor. ¡Ahora puede estar seguro de que sus servidores están a salvo y protegidos!

¡Feliz informática!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.