domingo, 27 de febrero de 2011

Conectarse por SSH utilizando llaves RSA


Partiremos de la base de que tienes tu servidor SSH configurado y que utilizas un puerto diferente al 22 (que es el puerto por defecto). Un sistema de seguridad más robusto que el de la clave común y corriente es el de las llaves RSA (Rivest-Shamir-Adleman). El sistema consiste en lo siguiente: debes generar dos llaves, una pública y una privada. La llave pública permanecerá en cada servidor al que desees conectarte, mientras que la privada permenece en el equipo desde el que te conectas. La llave pública está a la vista de todo el mundo, mientras que la privada únicamente tú la puedes ver. Obviamente, es necesario tener un par de llaves para cada computador que utilices con este sistema.

Importante: previo a correr este comando asegurate de que existe la carpeta .ssh. Si no existe debes crearla y establecer los permisos correctos:

mkdir ~/.ssh
chmod 700 ~/.ssh

El primer paso es generar tus llaves RSA con el siguiente comando:
ssh-keygen -t rsa

Se te preguntará por la ruta en donde deseas guardar tus llaves y por una clave que se te pedirá cada vez que desees utilizarlas. La razón de crear una clave es proveerte de una seguridad adicional en el caso de que tu llaves RSA sean robadas. La idea de fondo es que si te roban tus llaves cuentes con algunas horas (mientras el ladrón intenta romper tu clave mediante bruteforce) para conectarte a tu servidor por SSH y eliminar tu llave pública.

Si lo deseas, puedes presionar Enter cuando se te pida la clave, de esta forma no se te pedirá una cada vez que te conectes y la conexión se conseguirá de manera automática.

Ahora debes copiar tu llave pública en el servidor:

ssh-copy-id <username>@<host>

Si el usuario es “carlos” y se conecta al servidor “servidor.com” el comando sería:
ssh-copy-id carlos@servidor.com

En caso de que la conexión por SSH se realice utilizando un puerto diferente al 22, por ejemplo el 3333, el comando es el siguiente:

ssh-copy-id “-p3333 carlos@carlos.com”

Finalmente, para conectarte al servidor mediante tu llave RSA debes utilizar el comando:

ssh <usuario>@<host> -p<puerto>
siguiendo el ejemplo:

ssh carlos@host.com -p3333
Se te pedirá que escribas la clave asociada a tus llaves RSA, en caso de que hayas creado una.

Si eres administrador del servidor SSH y deseas que únicamente se realicen conexiones remotas utilizando el sistema de llaves RSA, tienes que deshabilitar la opción de conexión mediante el uso de password. Para ello debes editar tu archivo /etc/ssh/sshd_config y modificar la siguiente línea:
#PasswordAuthentication yes
y modificarla para que quede así:
PasswordAuthentication no

Por supuesto, una vez que deshabilites la autenticación por clave deberás copiar todas tus llaves públicas directamente, ya sea utilizando una unidad USB o algún otro método similar.

Fuentes:
  • https://help.ubuntu.com/community/SSH/OpenSSH/Keys
  • https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication
  • http://jeremy.wordpress.com/2008/05/29/ssh-copy-id-port-different/

1 comentario:

Angelica dijo...

Siempre que se habla de seguridad informática pienso en rsa ya que me ha brindado muy buena confianza y seguridad en mi PC que es lo necesario en estas empresas