lunes, 11 de julio de 2011

Acceso Más Seguro por SSH sin Usar Contraseñas

Una forma de mantener las contraseñas seguras es haciéndolas grandes y complicadas, agregando caracteres raros o usando diferentes contraseñas para cada cuenta. Pero otra forma de mantener las contraseñas seguras es saltárselas todas juntas.

El ssh es una herramienta que esta en cualquier distribución de Linux, es usada cada vez que se necesita conectarse a otra maquina.

Cada vez que uno se logea a una maquina remota usando ssh se solicita la contraseña del usuario. Pero se puede usar otra alternativa llamada par de clave asimétrica.

Un par de clave asimétrica consiste en una llave pública y otra privada. Estas se generan usando algoritmos, ya sea RSA o DSA. RSA se ha usado por mucho tiempo y es la más soportada. DSA es más segura pero requiere la v2 del protocolo de ssh. Pero esto no es ningún problema ya que si tienes actualizado el servicio de ssh tendrás el soporte para usar DSA. Se recomienda usar DSA a menos que por alguna razón se tenga que usar RSA.

Las claves generadas son más largas que cualquier contraseña común. La claves de RSA son al menos de 768 bits. Las claves de DSA son de 1024, tal como lo especifica el standar.

Para generar una clave DSA puedes usar el siguiente comando:

$ ssh-keygen -t dsa

Esto genera los archivos ~/.ssh/id_dsa y ~/.ssh/id_dsa.pub. Puedes especificar un passphrase durante el proceso de generación de la clave. Esto significa que esa clave puede ser usada en combinación con el passphrase, añadiendo así más seguridad.

El archivo generado que termina en pub es la parte pública del par generado. Este debe de ser compartido con el host remoto al cual deseas hacer ssh. El otro archivo que termina en id_dsa es la parte privada del par. Debe de ser protegido como si fuera la contraseña. Por eso nunca lo envies por correo ni lo guardes en maquinas sin protección.

Tener una clave de 1024 es como tener una contraseña de 128 caracteres. Eso quiere decir que el par de claves es tan seguro que las contraseñas que puedas recordar. Las claves son completamente aleatorias por eso no pueden ser crackeadas o rotas usando diccionarios. Ahora se puede incrementar la seguridad del host deshabilitando el logeo usando contraseñas forzando así a que los usuarios usen par de claves.

Una vez generado el par de claves, todo lo que queda es copiar la parte pública a la maquina remota. Se puede hacer usando el comando ssh-copy-id.

$ ssh-copy-id -i ~/.ssh/id_dsa.pub usuario@remoto

Esto agrega tu clave a la lista de claves autorizadas de la maquina remota. Solo para estar más seguros, es bueno asegurarse que los archivos ~/.ssh y ~/.ssh/authorized_keys no son escribibles por otro usuario que no seas tu. Esto se puede hacer usando el comando chmod.

Luego de eso deberías ser capaz de hacer ssh sin necesidad de contraseña.

$ ssh usuario@remoto

Esto aplica a todos los mecanismos basados en ssh. Puedes hacer scp libremente, tal como se montan partes de un sistema remoto usando sshfs.

En caso de que la maquina remota no permite logeos basados en contraseñas, el comando ssh-copy-id no funcionará. En vez de eso tendrás que tomar el contenido de la clave pública y añadirla manualmente como una nueva linea en el archivo ~/.ssh/authorized_keys de la maquina remota.

En caso de que la clave se vea comprometida o este en desuso, simplemente remueve la linea correspondiente de la lista de claves autorizadas. Puedes reconocer también la clave en cuestión al ver usuario@host.

De ahora en adelante no más contraseñas al usar ssh.

1 comentario:

noticias dijo...

guaaa!! me encanta el blog, siempre encuentro temas muy interesantes.