Revista Informática

Cómo usar claves privadas Linux en PuTTY

Publicado el 06 julio 2016 por Drassill
En numerosas ocasiones he hablado sobre la utilidad del protocolo SSH en este blog; pues nos permite gestionar de forma muy cómoda y eficiente un sistema Linux remotamente aún estando éste a miles de kilómetros de distancia. Obviamente el acceso mediante dicho protocolo es muy codiciado por cybercriminales y es por ello que es altamente recomendable usar varias medidas de seguridad tales como cortafuegos, claves públicas y privadas y/o honeypots. Cada uno tiene sus ventajas y desventajas y generalmente se suele aplicar diferentes combinaciones para adaptarse lo mejor posible a las necesidades reales de cada situación... Hoy quiero centrarme en una de esas medidas en concreto: Las claves públicas y privadas. El uso de estas es cada vez más extendido, pero cualquiera que haya trabajado con éstas se habrá encontrado con un pequeño problema; y es que las claves privadas creadas en Linux no pueden funcionar en PuTTY (Herramienta para acceder por ssh desde Windows) ni viceversa... Entonces cual es la solución... ¿Crear dos claves públicas y privadas para que pueda accederse desde diferentes sistemas operativos? Hoy vengo a contaros como solventar ese pequeño, pero significativo problema.
Linux&putty
Para ello lo primero que habría que hacer sería crear un par de claves, pública y privada, SSH en Linux; dichas claves pueden tener diferente tipo de cifrado y/o longitud, pero a modo de recomendación personal es preferible que tengan cifrado rsa y que sean del mayor tamaño posible; es decir de 4096 bytes. Esto puede parecer complicado pero la verdad es que todo se resume en un solo comando:
ssh-keygen-t rsa -b4096
Esto creará dos claves, una pública y una privada; clave privada que además podemos proteger con una contraseña, lo cual es muy recomendable y que podemos hacer durante el proceso de creación de la clave, pues ssh-keygen preguntará por una contraseña para proteger la clave privada; en caso de escoger no usar contraseña alguna dejaríamos dicha contraseña en blanco, en caso contrario deberíamos usar una clave de una longitud superior a 4 caracteres...
La ejecución exitosa del comando creará dos ficheros dentro del directorio .ssh del directorio home del usuario que ha ejecutado el comando; un fichero contendría la clave pública y otro sería la clave privada. La clave pública puede usarse en cualquier sitio para cualquier usuario pues sería algo así como un candado que no podría abrirse a menos que se tuviese la llave... La clave privada en cambio es algo que habría que guardar con cuidado, pues se trataría de la llave que abriría dichos candados, con lo que sería recomendable ser cuidadoso con ella. Las claves tendría la nomenclatura: id_rsa.pub, que sería la pública; y id_rsa para la privada... Para poder hacer uso de nuestro "candado", tendríamos que aplicarlo en el usuario que nosotros queramos proteger; dicho proceso consistiría en volcar la clave pública dentro del fichero authorized_keys, dentro del directorio .ssh del usuario en cuestión; esto es tan sencillo como hacer:
cat id_rsa.pub >> ~/.ssh/authorized_keys
Con el proceso finalizado, solamente con tener el fichero id_rsa dentro del directorio .ssh del usuario con el que nos queremos loguear, podríamos loguearnos desde Linux, pero ese no es el objetivo de este articulo; lo que queremos es aprovechar la clave privada para que sea válida para PuTTY... Para ello lo primero que habría que hacer sería descargarse el clave privada generada mediante algún método de transferencia de archivos... Teniendo en cuenta que probablemente se esté ejecutando Windows en la máquina en la que tengamos instalado PuTTY, podríamos usar Filezilla, pues permite realizar conexiones vía FTP o SFTP... Con únicamente conectarnos al puerto SSH (por defecto 22) del servidor por Filezilla mediante el protocolo SFTP, podríamos descargarnos el fichero...
Teniendo la clave privada bajo nuestro poder, veremos que esta clave no puede ser usada en Filezilla como una clave privada "normal", pues PuTTY solamente reconoce claves privadas en formato ppk... Es por eso que antes de usarla tendremos que hacer dicha clave "legible".
Como supongo que ya sabréis, PuTTY posee un generador de claves públicas y privadas llamado PuTTYgen. Dicho generador de claves es el usado para generar claves, pero no solo eso, sino que además puede importar claves "ajenas" y leerlas en caso de que contengan una clave legible, aún sin encontrarse en formato ppk; para ello lo que haríamos sería abrir PuTTYgen para después clickar en Conversións --> Import Key.
Convertir_clave
En caso de que la clave tenga una contraseña habría que introducirla primero para que la aplicación fuese capaz de reconocer su contenido, tras lo cual la aplicación cobraría una aspecto parecido a éste:
clave_importada
Con únicamente clickar el botón "Save private key" obtendríamos una clave privada en formato ppk, perfectamente legible para PuTTY, pudiendo ser usada en entornos Windows sin complicación alguna y evitando así el uso de claves innecesarias.
Como podéis ver el proceso de conversión de claves es realmente sencillo y gracias a dicha conversión usaremos menos claves públicas/privadas, mejorando la seguridad del servidor y haciendo que nos tengamos que preocupar únicamente por la seguridad de una clave privada y no de varias.
Espero que os haya resultado útil.
Saludos.

Volver a la Portada de Logo Paperblog