Ya se nos termina el año y pronto uno nuevo empezará, como no, este año he vuelto a Berlín al 24C3.
Estos días los estoy pasando con una gente que me da 10mil vueltas en temas de informática, así que no es raro que aparezca un artículo en este blog.
Hoy vamos a hablar de SSH.
Problema: estamos en el albergue y no tenemos los puertos de ssh, ni jabber, ni irc, ni imap, ni pop, etc. la cosa está chunga, así que vamos a ver como lo hemos solucionado para conectarnos remotamente con nuestras maquinas saltando la protección de puertos y dirigiéndolos hacia otro sitio…
ssh -D 1080 laura@213.xxx.xxx.xxx -p 443 -N -n
-D : esto hace que el puerto que indicamos justo después de la D, pase por el puerto ssh. Así no tendremos que tener abierto este puerto para poder acceder a él, porqué lo hacemos desde el servidor el cual nos conectamos por ssh el cual si tiene los puertos abiertos/filtrados. 1080 es jabber.
-p 443: debido a que el puerto por defecto del ssh (22) está capado he creado una configuración para el usuario (ahora lo cuento mas abajo), así que he dicho que ssh escuche al puerto 443.
Para hacer esto debemos tener el router con el puerto 443 abierto (después cuento como lo he hecho para abrirlo sin tener acceso desde el exterior!).
-N: para que no muestre shell
-n: para que no muestre output, todo lo que sale lo manda a /dev/null
Para hacer una configuración por defecto en la configuración de ssh para el usuario deberemos copiar en local el fichero de configuración de ssh de /etc/ssh a ~/.ssh, y añadimos lo siguiente:
Host 213.xxx.xxx.xxx
Port 443
Con esto le decimos que por defecto si se conecta a 213.xxx.xxx.xxx lo haga por el puerto 443, así que al conectarnos por ssh a otro equipo podremos usar:
ssh 213.xxx.xxx.xxx
Con esto le estamos diciendo, cuando me conecte con el usuario (el que he configurado), al conectarse por ssh al host definido, conectate por el puerto 443, así nos olvidamos de cada vez que nos queramos conectar por ssh a nuestro servidor de poner un -p 443 al final.
Hasta aquí la primera parte, pero SSH va mas allá! puedes configurar tu ordenador que al conectarse a un puerto, automáticamente use SSH, por ejemplo, quiero acceder al router para abrir el puerto 443 para poder acceder por ssh, pero tengo capada la configuración desde la red, sólo puedo configurarlo en la red local.
ssh -L8080:192.168.x.x:80 213.xxx.xxx.xxx -p 443
-L8080: quiero que uses el puerto 8080 para la siguiente conexión
192.168.x.x:80 : para el servidor definido en este puerto
host_remoto: el host remoto al que nos conectamos, este host debe tener acceso al servidor que nos queremos conectar.
-p 443 : usa el puerto 443 (el ssh remoto)
así que la cosa queda, cuando me conecte en local, en el puerto 8080, quiero que realidad te conectes al servidor 192.168.x.x por el puerto 80.
si usamos -T, podemos usar la redirección en orden inverso.
Así que tenemos que distinguir las dos formas usadas
-D redirección dinámica (SOCKS)
-L redirección estática
Hay una nueva funcionalidad de ssh que te crea virtualmente una interfaz de red en cada uno de los servidores y te crea un túnel entre estas ethx. Esta es -w:
-w local_tun[:remote_tun]
Requests tunnel device forwarding with the specified tun(4)
devices between the client (local_tun) and the server
(remote_tun).
The devices may be specified by numerical ID or the keyword
“any”, which uses the next available tunnel device. If
remote_tun is not specified, it defaults to “any”. See also the
Tunnel and TunnelDevice directives in ssh_config(5). If the
Tunnel directive is unset, it is set to the default tunnel mode,
which is “point-to-point”.
Pingback: tunelizar puertos a través de un proxy | Blackhold