CONECCIONES SEGURAS “Servidor OpenSsh Windows _ Cliente Linux”


Para acceder a maquinas remotas de forma segura contamos con SSH (secure shell) ó interprete de comandos seguro, muy útil en comunicaciones confiables en conexiones LAN especialmente, ofreciendo además simulación de sesiones FTP cifradas, gestión de claves RSA para uso de claves públicas en el “inicio de sesión” y evitar así el envío de información de cuentas del sistema por la red.
A continuación un paso a paso de cómo implementar SSH en un equipo Windows con autenticación RSA, es decir con un sistema criptográfico de clave pública donde el cliente genera un par de llaves (pública_privada), envía la pública para que le cifren la información que hacia él llegara y poder descifrarla con la privada generada anteriormente, se probara desde un cliente Linux, ent re otras para demostrar OpenSsh como multiplataforma.

1. Comenzaremos instalando OpenSsh para Windows, que lo puede descargar desde aqui si bien OpenSsh es nativo de sistemas Unix, ya ha sido compilado para S.O windows


En la instalacion estandar el asistente indica los componetes de la instalacion como el cliente y el servidor así como las rutas y accesos, seguimos los pasos por omision hasta finalizar.

2. Recordemos que este programa al ser nativo de sistemas Unix compilado para Windows permite su uso en diferentes plataformas, pero que tanto los comandos como las rutas y los nombres de los archivos los leera como en su sitema nativo, por lo que debemos crear un archivo con los difentes usuarios del sistema para que OpenSsh los tome.
creamos el passwd que usualmente almacena los usuarios del sistema en Unix e ingresamos los usuarios propios del equipo.

vamos a ->Inicio -> ejecutar -> cmd, al estar en la consola debemos dirigirnos a la ruta de los ejecutables de OpenSsh y aqui con el siguiente comando creamos en OpenSsh\etc el archivo mencionado anteriormente
C:\Archivos de Programas\OpenSsh\bin>mkpasswd -l -u Admin > ..\etc\passwd


3. De un forma similar creamos el archivo "group" que de igual manera al ser uno de los componentes necesarios en los sistemas Unix para encontrar la informacion de los usuarios del sistema debemos crearlo en Windows para que OpenSsh pueda leer los datos sin problemas
en la misma ruta "C:\Archivos de Programas\OpenSsh\bin" y con el siguiente comando generamos el archivo
C:\Archivos de Programas\OpenSsh\bin>mkgroup -l >> ..\etc\group

4. A continuación el paso más importante en la configuracion de un servidor SSH, editamos el archivo de configuración que se encuentra en "C:\Archivos de Programas\OpenSsh\etc\sshd_config", recordemos que lo podemos hacer por entorno gráfico llendo desde mi PC hasta la ruta o por consola (recomiendo el entorno gráfico y abrir con Wordpad) y tratamos de dejarlo como el siguiente

sshd_config
Lo más importante es tener las rutas acordes a los sitios de refenrecia y asegurarse que las lineas de habilitación de RSAAuthentication esten activadas correctamente y que las de otros tipos de inicio como RhostsRSAAuthentication no se encuentren activadas. Terminamos reiniciando el servicio opensshd desde la consola, para que tome los cambios y procedemos con la implemetación del servidor.

C:\Archivos de Programas\OpenSsh\bin>net stop opensshd
C:\Archivos de Programas\OpenSsh\bin>net start opensshd


5. Ahora creamos las claves como cliente, por lógica este paso no seria estrictamente necesario ya que seremos un servidor al que se conectaran y no un cliente que se conectara pero por cuestiones practicas y de orden procederemos a generar el par de claves (pública_privada) solo para tenerlas y asegurarnos que no sera problema al momento de correr el servidor.
en la consola de Windows, en la ruta que hemos trabajado y con el siguiente comando las generamos.
C:\Archivos de Programas\OpenSsh\bin>ssh-keygen -t rsa
nos indicara la ruta donde almacenara las claves para ese usuario
Llave pública: /home/Admin/.ssh/id_rsa.pub
Llave privada: /home/Admin/.ssh/id_rsa
Nos pedira la frase contraseña "passprhase" y nos mostrara el "fingerprint" o huella de la clave generada
6. Retomando la configuracion del servidor necesitaremos crear el archivo donde el servidor SSH almacenara la clave pública de los usuarios que iniciaran sesión remotamente en nuestra maquina, en parte de la ruta en la que hemos estado trabajando creamos el archivo.

C:\Archivos de Programas\OpenSsh\etc>edit authorized_keys
Nos mostrara una pantalla azul en la que solo haremos "Archivo_Guardar" "Archivo_Salir", con esto tendremos creado el archivo sin un formato especifico que es como debe estar.



Ahora necesitaremos ir al cliente Linux en este caso desde UBUNTU en el cual probaremos la conexion segura por ssh autenticando con RSA o clave públicas (mas notas de ubuntu)

7. En la consola comenzaremos instalando desde los repositorios los paquetes necesarios para tener OpenSsh instalado en el sistema, descargaremos el server que por omision trae el paquete cliente y otras librerias que podrían ser utiles mas adelante.


8. Procedemos a generar el par de claves con la que se establecera la conexión segura,
#ssh-keygen -t rsa
estas (pública "id_rsa-pub" y privada "id_rsa") se guardaran en el "home" del usuario que las genere.
9. Nos aseguramos que el par de claves generadas se encuentren en el lugar especificado por el asistente en el momento de generar las claves generalmente en: /root/.ssh/#

Ahora enviaremos las llaves al servidor ssh quien se encargara de especificar a su configuración que permita al dueño de esta clave, iniciar sesion remotamente como un usuario del sistema de esa maquina remota, con el comando scp, utilidad de ssh y con el nombre y contraseña de un usuario de esa maquina remota enviaremos el archivo, (esto se puede hacer con variado tipo de archivos y es una de las herramientas mas utiles de ssh) así:
u@:/root/.ssh/#scp [archivo] [user_remoto]@[IP_eq_remoto]:[ruta_remota_para_guardar]
ej:#scp id_rsa.pub Admin@192.168.101.126:/home/Admin/cleinte.pub



nos pedira la contraseña del usuario y nos indicará si se pudo o nó hacer la transferencia
10. Volvemos al servidor ssh Windows y en la ruta a la que la quisimos mandar el archivo debe aparcer este (client.pub).

11. Ahora necesitamos ingresar el contenido de ese archivo (client.pub) en el archivo que le dira al servidor quienes pueden iniciar sesión remotamente, llevamos entonces la llave a "authorized_keys", guardamos y cerramos para reiniciar.



12. Reiniciamos el servidor como anteriormente lo hemos hecho (no importa la ruta)
C:\Archivos de Programas\OpenSsh\bin>net stop opensshd
C:\Archivos de Programas\OpenSsh\bin>net start opensshd


13. Podemos iniciar sesión remotamente desde el linux cliente y si toda la configuración se a realizado con exito nos pedira la "passprhase" de la clave RSA generada.

¡¡¡Que alegria!!! nos dio, ahora solo queda recordar la contraseña que nos pide y para comprobar que todo ande bien lanzaremos desde esa consola en linux un comando nativo de Windows, el cual se ejecutara normalmente pues ahora etamos trabajando remotamente en el equipo Windows, esta implementacion tambien permitira hacer ssh sin autenticación ó "Tuneling" que se explicaran en futuras entradas donde haremos lo mismo pero sobre puertos especificos de servicios.




1 comentarios:

Javier Cornejo dijo...

Hey y se puede copiar el archivo que tenes sshd_congif, borro lo que tiene el mio y le pego lo que dice el tuyo... funcionaria??