Conectarse a Windows 10 por medio de SSH
Qué es SSH?
Como ya deberiamos saber, una shell es una interfaz que tiene un usuario para acceder a los distintos tipos de servicios de un sistema operativo. En este caso ssh nos permite acceder a la shell de un equipo de manera remote y segura.
Qué tenemos que tener en cuenta con la seguridad?
Deshabilitar las contraseñas
Deshabilitar la autenticacion por password. Esto evitara que cualquiera que intente conectarse no puede realizar ataques de fuerza bruta contra nuestro servicio.
Y, que usamos entonces para demostrar que somos nosotros?
En lugar de passwords, usaremos la autenticacion por clave publica y privada. Cabe aclarar que este protocolo solo se usa para autenticar al usuario, no para encriptar la comunicacion
Como funciona la autenticacion por clave publica y privada en SSH
Las claves publica y privada se corresponden una a la otra, por lo que si vamos a la pc objetivo (el servidor) y colocamos nuestra clave publica en este, cuando nos intentemos conectar al server y presentemos nuestra clave publica, el sevidor sabra que estamos intentando identificarnos como un usuario registrado en el (autorización), por lo que nos dara la posibilidad de demostrar que somos quien decimos ser y no cualquier otra persona, en este momento usaremos nuestra clave privada (para autenticarnos, esta no va a ser transmitida por la red, porque esta solo nosotros la sabemos). En este momento se nos permitira el acceso
Ventajas de este metodo por sobre las contraseñas
- La clave privada nunca es enviada por la comunicacion
- Evitamos ataques de fuerza bruta
- Solo los usuarios autorizados pueden conectarse
Generando nuestro par de claves con SSH
Hay varios algoritmos que podemos utilizar para crear nuestro par de claves ssh, en este caso vamos a usar RSA ya que es el mas comun y soportado por todos lo clientes ssh. En nuestra carpeta de usuario en windows desde la pc cliente, crean la carpeta .shh (en caso de que no exista), Abrimos un CMD y escribimos lo siguiente:
ssh-keygen -f .ssh\id_rsa -t rsa -b 4096
-f: indica el nombre de nuestros archivos de claves y la ruta de guardado (si no abrimos cmd como administrador, estaremos parados en tu carpeta de usuario, por lo que el directorio relativo seria .ssh y el nombre de las llaves es el que ustedes quieran, en este caso es id_rsa)
-t: lleva como argumento el algoritmo a utilizar
-b: recibe el tamaño de nuestras claves
A este punto se nos pedira que ingresemos un "passphrase", que no es mas que una frase de contraseña con la que vamos a encryptar la clave privada. En el caso de que fuera robada no podra ser leida a menos que se sepa esta frase. Hay que tener en cuenta que cada ves que querramos usar esta llave tendremos que desencriptarla usando esta contraseña asi que guardenla bien, en un administrador de contraseñas por ejemplo.
Instalacion del servidor openSSH
El cliente ssh ya viene instalado por defecto en windows 10, pero el servidor no, aun asi lo podemos instalar como una caracteristica opcional. Desde el host (la pc objetivo que se va a controlar) ingresamos a Configuracion-->Aplicaciones-->Aplicaciones y caracteristicas y luego en "Caracteristicas Opcionales."
Buscamos "openssh" y seleccionamos la caracteristica de servidor, deberia aparecer un boton "instalar" (en mi caso ya lo esta)
Configuracionn del servidor openSSH
Antes de iniciar el server (que viene deshabilitado) vamos a editar el archivo de configuracion, para eso presionamos WIN+R y escribimos %programdata%. Accedemos a la siguiente ruta: C:\ProgramData\ssh. Aca abrimos sshd_config con un editor de texto y editamos las siguientes lineas:
#PasswordAuthentication yes
Esta linea la descomentamos y cambiamos de "yes" a "no"
PasswordAuthentication no
#PubkeyAuthentication no
Descomentamos y la cambiamos a "yes"
PubkeyAuthentication yes
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Comentamos esta linea ya que a veces da problemas
#AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Por ultimo añadimos la siguiente linea al archivo, para que el par de claves sea nuestro unico metodo de acceso:
ChallengeResponseAuthentication no
Y ya con eso seria suficiente para una configuracion basica, guardamos lo cambios y cerramos
Una aclaracion, y es que en caso de tener el server corriendo, si cambiamos algo de este archivo tendras que reiniciarlo para que se vuelva a cargar la nueva configuracion
Añadiendo nuestra clave publica en el servidor
Lo siguiente sera guardar nuestra clave publica que acabamos de generar anteriormente (en la pc cliente), dentro del archivo authorized_keys (sin ninguna extension) en el directorio C:\Users\tu_usuario\.ssh En la pc objetivo. En el caso de darse que el directorio y el archivo no existan, los creamos manualmente)
Abren con algun editor de texto la "id_rsa.pub" de su pc cliente, copian y pegan su contenido en la pc objetivo (servidor), en una nueva linea dentro de "authorized_keys". Deberia empezar con algo como:
ssh-rsa AAAB3nza...
Guardamos los cambios y eso seria todo. Casi, ahora nos toca iniciar el server. Abrimos el administrador de tareas y vamos a la pestaña servicios y abajo en "abrir servicios". Ahora buscamos "OpenSSH SSH Server" le demos click derecho y luego en propiedades
cambiamos el tipo de inicio de manual a automatico, y luego ponemos "iniciar" y por ultimo aceptar
Conectandonos a nuestro servidor SSH
Desde la pc cliente, abrimos un cmd y nos conectamos de la siguiente manera
ssh -i private_key user@host -p port_number
-p: Si omitimos esta opcion, el cliente ssh buscara por defecto el servicio en el puerto 22, Asi que no es necesario indicarlo amenos que hayamos cambiado en la configuracion del server, en nuestro caso se puede omitir.
user: nuestro nombre de usuario con el que generamos las llaves, por ejemplo si tu nombre de usuario de windows con el que creaste el par de claves es "carlos", pues este sera el valor.
host: la direccion ip del servidor ssh (Tambien puede ser un nombre de dominio en caso de que el servidor este registrado). En nuestra pc objetivo ejectuamos el comando ipconfig en cmd y nos fijamos en la dirección ipv4 de la red a la que este conectado. Supongamos que es 192.168.0.5.
-i: Opcion que significa identidad, indicando donde se encuentra nuestro archivo de clave privada que vamos a usar
El comando quedaria asi tomando los ejemplos anteriores (recuerden estamos parados actualmente en nuestra carpeta de usuario):
ssh -i .ssh\id_rsa carlos@192.168.0.5
La primera vez que nos conectemos nos saldra una advertencia indicando que la autenticidad del host no se puede comprobar. Esto es normal que suceda porque ssh usa lo que se llama "trust of the first use" (confianza de primer uso). Solo escribimos "yes" y presionamos enter, asi la proxima vez que nos conectemos al mismo host no nos saldra este mensaje. A continuacion nos dira "Warning: Permanently added ...to the list of known hosts"
Por ultimo, nos pedira la frase de contraseña (passphrase) para desencriptar la clave privada y completar el proceso de autenticacion. Asi podremos conseguir acceso a la shell remota.
Una aclaracion, y es que a pesar de que el servidor nececita que le enviemos nuestra clave publica, el archivo en si de clave publica con extension .pub nunca es usado para esto, porque ya viene incluida en la clave privada
Como hago para acceder a mi servidor SSH desde fuera de mi red local (LAN)
Para ello, tenemos que recurrir al port forwarding (que en algunos router se los llama servidores virtuales). Yo recomiendo deshabilitar (si lo tienen activado) el reenvio de puertos automatico (upnp) y los configuremos manualmente. Dependiendo de la marca de su router el procedimiento varia.
En cmd usamos el comando ipconfig para ver el adaptador de red que esta conectado actualmente (si es wifi es Adaptador de LAN inalámbrica Wi-Fi y si es por cable Adaptador de Ethernet Ethernet). Nos dira la direccion ip de la Puerta de enlace predeterminada(nuestro router), que generalmente es 192.168.0 o 192.168.1.1
A continuacion ponemos esta ip que nos aparece en el navegador e ingresamos al router, donde si no cambiaron la contraseña, por defecto suele ser "password" o "admin", otras veces es en blanco. Si ninguna de estas funciona, busquen el modelo de su router y vean cual es su contraseña por defecto para entrar a la configuracion
Si ya hicieron port forwarding antes, este caso es como cualquier otro servicio que instalemos en nustra red local. Mas adelante hare una guia sobre esto y la dejare por aca.
Terminando
siento que el post sea un poco extenso, pero es que me parecio importante explicar bien como funciona todo el procedimiento para que entiendan bien que es lo que estan haciendo, ya que es muy importante asi saben bien lo que estan haciendo evitan cometer errores
Comentarios
Publicar un comentario