3 ene 2013

Envio seguro de archivos Windows>Linux mediante PSCP y PuTTYgen

Buenas a todos, hace algunos meses nuestro compañero Marc nos hablaba sobre la Autenticación de SSH con clave pública mediante la utilidad PuTTYgen, hoy, utilizaremos esta funcionalidad de PuTTYgen para automatizar el envío de archivos de manera segura entre una  máquina Windows y una máquina Linux por SCP, sin necesidad de utilizar una clave. Esta técnica podrá sernos útil para enviar, por ejemplo, backups regulares de nuestros logs de Windows y almacenarlos en una máquina linux. También es interesante recordar la serie sobre configuración de SSH en servidores GNU/Linux.

Necesitaremos para ello un servidor SSH en la máquina Linux, y las herramientas PSCP y PuTTYGen, ambas de los desarrolladores de Putty (para Windows). Las podréis descargar desde aquí.

image

Para enviar los logs de manera regular y sin intervención manual haremos uso de las tareas programadas de Windows (que no explicaremos en el presente post).

Podéis crearos por ejemplo un bat como el siguiente que envíe los logs a la máquina linux y sea lanzado por una tarea programada:

pscp.exe –pw SUSTITUIR_POR_CONTRASEÑA -scp –r “\Logs" SUSTITUIR_POR_MAQUINA@SUSTITUIR_POR_IP:/home/usuario

 

¿Problema de ello? Si la seguridad de alguna de las máquinas Windows fuese comprometida, el usuario malicioso tendría acceso al archivo bat que contiene el usuario y clave para acceder a la máquina Linux. Para evitar este problema se sustituirá la autenticación mediante usuario y contraseña por el uso de un par de claves pública y privada. Para ello se necesitará el software PuTTY Key Generator (PuTTYgen), que permitirá generar dichas claves.

El uso de PuTTY Key Generator es muy sencillo. En primer lugar se pulsará sobre el botón “Generate”.

imageA continuación se deberá mover el ratón para generar aleatoriedad.image

Una vez se hayan creado el par de claves, mostrará en pantalla la clave pública. Ahora podremos seleccionar una clave (pero si la ponemos nos la solicitará cada vez que se realice el envío de un archivo)

image

A continuación se guardarán ambas claves pulsando los botones “Save public key” y “Save private key”.

La clave privada será cargada desde el bat para realizar el proceso de autenticación y la clave pública habrá que copiarla al servidor Linux. Para ello se deberán realizar los siguientes pasos:

En primer lugar se creará la carpeta oculta SSH:

usuario@servidor: mkdir ~/.ssh

A continuación se asignan permisos a la carpeta:

usuario@servidor: chmod 700 ~/.ssh

Ahora, se creará dentro de la carpeta .ssh el archivo authorized_keys y se copiará la clave pública dentro, de manera que quede como se muestra a continuación:

image

Posteriormente se asignará permisos al fichero de claves autorizadas

usuario@servidor: chmod 600 ~/.ssh/authorized_keys

Finalmente se configurará ssh para que sólo se pueda acceder al sistema mediante la clave pública

usuario@servidor: nano /etc/ssh/sshd_config

Sustituir los siguientes valores en el archivo:

PermitRootLogin noPasswordAuthentication noUsePAM noDescomentar AuthorizeKeysFile %h/.ssh/authorized_keys

A continuación se reiniciará el servicio.

image

Ya se encuentra configurado el servidor para admitir la autenticación mediante clave pública/clave privada. Ahora únicamente queda sustituir dentro del bat la instrucción que permite enviar los archivos, para que en lugar de autenticar con usuario y clave, utilice el archivo ppk que contiene la clave privada. Para ello se deberá sustituir el contenido del bat por el siguiente:

pscp.exe -i "C:\Users\admin\Desktop\ClavePrivada.ppk" -scp –r “\Logs" SUSTITUIR_MAQUINA@SUSTITUIR_IP:/home/usuario

Eso es todo por hoy, saludos!

3 comentarios:

  1. [...] Buenas a todos, hace algunos meses nuestro compañero Marc nos hablaba sobre la Autenticación de SSH con clave pública mediante la utilidad PuTTYgen, hoy, utilizaremos esta funcionalidad de PuTTYgen para automatizar el envío de archivos de manera...  [...]

    ResponderEliminar
  2. Hola, buen artículo.Quería recalcar que si alguien abre el bat podría leer la clave en plano como bien dices, pero si acceden al windows de nuevo, y mirar el bat obtienen la ruta donde esta la clave privada, casi peor... De todos modos, buen artículo y seguir así ;)Saludos!

    ResponderEliminar
  3. Eso es, si le pones clave, aunque acceda a la clave privada tiene que acertar la clave (pero pierdes la automatización...). Otra alternativa es pasar el bat a script y utilizar la aplicación screnc.exe para cifrarlo. Aunque el cifrado no es la panacea, pero añades una capa más de seguridad.gracias por el comentario, saludos!

    ResponderEliminar