educación, informática y demás

2308 - Secure Shell

Generar y almacenar contraseña de acceso RSA

Introducción

Hemos configurado un servidor ssh para poder conectarnos de forma remota y segura y poder administrarlo a través de comandos. No obstante, cada vez que tratamos de iniciar sesión remota con ssh tenemos que introducir la contraseña. Esto, si nos conectamos de vez en cuando no es un gran problema. Sin embargo, si realizamos conexiones frecuentes puede ser un poco pesado.

Tenemos la alternativa de generar una par de claves pública y privada con RSA, criptografía asimétrica, y configurar la cuenta de nuestro usuario en el sistema remoto y local para que ssh compruebe que tenemos permiso de acceso sin necesidad de escribir ninguna contraseña.

El problema, desde el punto de vista de seguridad informática, está en que debemos asegurarnos de tener una cuenta local bien protegida. Toda la seguridad recae ahora en la cuenta local que utilicemos.

Uso habitual: Login y password

Vamos a comprobar que el servidor ssh está en ejecución en nuestro sistema servidor GNU/Linux Debian 12 CLI.

Vamos a comprobar la configuración de red de este equipo GNU/Linux. Para ello usamos el comando ip con la opción a.

Vamos a conectarnos desde otro sistema, un sistema GNU/Linux Debian 12 con GUI a este equipo. Comprobamos la configuración de red para asegurarnos de que este equipo está conectado a la misma LAN que el servidor.

Vamos a comprobar que realmente los dos equipos se ven, es decir están conectados entre ellos, utilizando el comando ping.

Ahora vamos a iniciar sesión con el usuario alumno en el sistema remoto 192.168.23.254. Para ello usamos el cliente ssh.

Algunos detalles que comentar. en esta ocasión hemos escrito el nombre del usuario con el que nos queremos conectar, seguido de la dirección IP de la máquina remota, separados por una @. De esta forma, podemos indicarle al cliente ssh que queremos conectarnos con un usuario concreto, que no tiene porque ser el mismo que estamos usando en la máquina local, a una máquina remota destino.

Como podéis comprobar, ssh nos pide que insertemos la contraseña del usuario alumno en la máquina 192.168.23.254. Esto es normal y proporciona seguridad.

Pero si ya hemos pasado los controles de seguridad de la máquina local, puede resultar cansado tener que insertar una y otra vez una contraseña cada vez que queramos realizar alguna operación en remoto.

Lo ideal sería tener un mecanismo que permitiera identificarnos de forma automática con el sistema remoto si ya hemos iniciado sesión con nuestra cuenta en la máquina local.

Para ello se utilizan contraseñas RSA pública y privada.

Recuerda, todas las operaciones que hacemos en una conexión ssh se hacen en la máquina remota a la que estamos conectados con la cuenta de usuario que hemos usado para iniciar sesión.

Podemos ver qué hay en el directorio del usuario alumno en la máquina srv01

Proceso de generación de claves RSA

El algoritmo RSA es un algoritmo de cifrado asimétrico que utiliza pares de clave pública y privada. Este sistema de cifrado es tan fuerte como lo que nosotros protejamos la clave privada. La clave pública podemos, como su nombre indica, publicarla sin problemas, pero la privada debemos mantenerla a buen recaudo.

Para generar un par de claves pública y privada vamos a utilizar la herramienta o aplicación ssh-keygen desde nuestra cuenta local. Así que, si estamos conectados a través de ssh, cerramos la conexión.

Ahora ejecutamos la aplicación ssh-keygen.

Como nuestro objetivo es no tener que escribir contraseñas, sino fiarnos de la seguridad de nuestra cuenta local, no vamos a utilizar ninguna contraseña para la clave que se generará con ssh-keygen.

Si hacemos esto tendríamos que revisar la seguridad de nuestra cuenta de usuario. La finalidad de este documento es mostrar como acceder de forma rápida a un sistema remoto que administramos, así que lo dejamos sin contraseña.

Vamos a echar un vistazo a los ficheros de clave que se han generado.

Copiamos la clave al sistema remoto

Para copiar la clave que hemos generado al sistema remoto utilizaremos la aplicación ssh-copy-id. Como no tenemos claro cómo funciona ni qué hace vamos a echar un vistazo a su página de manual.

Esta aplicación permitirá copiar las claves locales disponibles para facilitar inicios de sesión autorizados en máquinas remotas.

Se trata de un script que utiliza ssh para iniciar sesión en una máquina remota utilizando un login y contraseña.

Si es un script, seguramente podamos verlo… vamos a buscarlo en el directorio /bin a ver si está ahí.

Vamos a utilizar esta herramienta para copiar las claves que hemos generado en nuestra cuenta en la máquina remota.

Ya tenemos preparada la cuenta alumno en la máquina remota 192.168.23.254 para que la autenticación se pueda hacer a través de las claves generadas en la máquina local.

Iniciando sesión con las claves RSA

Ahora tan solo tendremos que iniciar sesión en el sistema remoto con el comando ssh.

Como ambas cuentas de usuario, la local y la remota, comparten las claves RSA, podemos iniciar sesión sin tener que escribir ninguna contraseña.

En la máquina remota srv01:

Vamos a echar un vistazo en la máquina local debsrv, al fichero ~.ssh/id_rsa.pub

Si nos fijamos, lo que ha sucedido es que se ha copiado la clave pública del usuario alumno@debsrv al fichero authorized_keys (claves autorizadas) en la cuenta del usuario alumno en la máquina srv01.

Todo el proceso de inicio de sesión se puede llevar a cabo con la protección de la clave privada que está en la cuenta del usuario alumno en debsrv. Como en la cuenta alumno@srv01 está la clave pública se pueden comunicar servidor y cliente ssh de forma segura.

De esta forma, la seguridad de nuestros dos sistemas ahora está en la protección que tengamos de la cuenta de usuario local.

Conclusión

Si utilizamos de forma habitual la conexión a través de ssh a un equipo remoto para administrarlo, podemos agilizar el proceso de inicio de sesión remoto almacenando una contraseña RSA generada previamente.

De esta forma, podemos iniciar sesión segura con ssh en un equipo remoto sin tener que introducir la contraseña al iniciar sesión. Para ello, tendremos guardada una contraseña en nuestro directorio personal local y en el directorio personal de la cuenta remota.

Dejar una respuesta