OpenSSH con autenticación a través de firma digital.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2011 Joel Barrios Dueñas. Usted es libre de copiar, distribuir, y comunicar públicamente la obra, y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer, y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera, o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar, o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento, y los derivados de éste se proporcionan tal cual son, y los autores no asumirán responsabilidad alguna si el usuario, o lector, hace mal uso de éstos.

Introducción.

Utilizar claves públicas en lugar de claves de acceso a través de servicios como SSH, SCP o SFTP, resulta una técnica más segura para autenticar dichos servicios, facilitando también la operación de guiones y herramientas de respaldo que utilizan dichos protocolos.

Procedimientos

Modificaciones en el Servidor remoto.

Se requiere acceder primero como administrador al servidor remoto, y habilitar la política para SELinux denominada allow_ssh_keysign, ejecutando lo siguiente:

setsebool -P allow_ssh_keysign 1

Al terminar, acceder con la cuenta de usuario que se utilizará para acceder al servidor.

ssh usuario@servidor

Cómo este usuario, ejecutar los siguientes mandatos, los cuales tiene como objetivo crear el directorio ~/.ssh/, con permiso de acceso de lectura/escritura sólo para el usuario, el archivo ~/.ssh/authorized_keys, igualmente con permiso de acceso de lectura/escritura sólo para el usuario:

mkdir -m 0700 ~/.ssh/
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
exit

Modificaciones en el cliente.

Generar firma digital (llave pública).

Se debe generar una firma digital (llave pública) creada con DSA (Digital Signature Algorithm o Algoritmo de Firma digital). Si se desea no utilizar clave de acceso para autenticar, sólo se pulsa la tecla ENTER. Si asigna clave de acceso, está será utilizada para autenticar el certificado creado cada vez que se quiera utilizar éste para autenticar remotamente.

ssh-keygen -t dsa

El procedimiento devuelve una salida similar a la siguiente:

Generating public/private dsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_dsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/usuario/.ssh/id_dsa.
Your public key has been saved in /home/usuario/.ssh/id_dsa.pub.
The key fingerprint is:
2c:73:30:fe:52:21:a5:82:78:49:57:cd:37:af:36:df usuario@cliente

Nota: Es importante resaltar que si desea utilizar la firma digital sin clave de acceso, jamás se deberá establecer una clave de acceso durante la generación de la firma digital. Cuando el diálogo de ssh-keygen solicite una clave de acceso con confirmación, simplemente pulsar la tecla ENTRAR (ENTER) y continuar el procedimiento.

Lo anterior genera los archivos los archivos ~/.ssh/id_dsa y ~/.ssh/id_dsa.pub, los cuales deben tener permiso de acceso 600 (sólo lectura y escritura para el usuario).

chmod 600 ~/.ssh/{id_dsa,id_dsa.pub}

Se debe copiar el contenido de la llave pública DSA (id_dsa.pub) al archivo ~/.ssh/authorized_keys del usuario a utilizar en servidor en donde se va a autenticar.

cat ~/.ssh/id_dsa.pub|ssh usuario@servidor "cat >>/home/usuario/.ssh/authorized_keys"

Para poder acceder al servidor desde cualquier cliente, basta copiar los archivos id_dsa y id_dsa.pub dentro del directorio ~/.ssh/, de la cuenta de usuario de cada cliente desde el que se requiera realizar conexión hacia el servidor. Tendrá serias implicaciones de seguridad si el archivo id_dsa cae en manos equivocadas, o se ve comprometido, por tanto, dicho archivo deberá ser considerado como altamente confidencial.

Pueden generarse diferentes firmas digitales para cada usuario que deba ingresar a través de SSH al servidor remoto. Simplemente se añade el contenido del archivo ~/.ssh/id_dsa.pub de cada usuario al archivo ~/.ssh/authorized_keys de la cuenta a utilizar en el servidor remoto. Pueden agregarse cuantas firmas digitales en este archivo como sean necesarias. Si acaso se ve comprometida la seguridad de alguna firma digital, simplemente bastará eliminar ésta del archivo ~/.ssh/authorized_keys del servidor remoto.

Comprobaciones.

Si no fue asignada clave de acceso para la llave DSA, deberá poderse acceder hacia el servidor remoto sin necesidad de autenticar con clave de acceso del usuario remoto. Si fue asignada una clave de acceso a la clave DSA, se podrá acceder hacia el servidor remoto autenticando con la clave de acceso definida a la clave DSA, y sin necesidad de autenticar con clave de acceso del usuario remoto.


Alcance Libre
http://www.alcancelibre.org/staticpages/index.php/como-ssh-clave-publica

()