09 diciembre 2013

Usando SSH desde una red cerrada

No todos los ámbitos laborales tienen proxys tan sensibles. La mayoría suele ser "Tenés todo libre", "Tenés todo libre y te bloqueo el P2P" o "Te bloqueo todo y divertite con la web de la intranet de la empresa, hecha con Front Page por el sobrino de la hermana de mi cuñado".

En cambio, otros tenemos la condenada suerte de tener un proxy bien armado que filtra muchas cosas. Entre ellas todo lo referido a SSH: puerto (22) o por filtrado de paquetes.

Esto provoca que por más que cambiemos el puerto (si tenemos la suerte de acertar alguno al azar que este abierto), el proxy lo va a rechazar porque la peticion es SSH.

Yo necesitaba conectarme a la Raspberry de casa para poder divertirme desde el trabajo en los tiempos libres y adelantar algún que otro proyecto hogareño.

La solución?
1) Rápida y menos segura: usar algún servicio SSH web based, súper inseguro que vaya a saber uno por donde pasan nuestros datos.
2) Rápida, mas segura y mas divertida: Montar mi propio servidor SSH Web Based.

A continuación la respuesta...


Para comenzar con la segunda opción necesitamos algunas cosas basicas:

Primordial: tener un servicio tipo no-ip para evitar problemas con las ip dinámicas de nuestras casas y tener fowardeado el puerto 22 al dispositivo que nos querramos conectar por SSH.

Un lugar donde poder alojar el servicio que vamos a instalar. En mi caso lo hice en un VPS con Ubuntu 12.04 LTS. También se podría hacer con alguna pc/raspberry que tengan en sus casas y evitar el costo del VPS, pero ya que contaba con mi servidor virtual, fui a lo seguro.

Si hacen como yo y optan por el VPS, lo que van a hacer es un pequeño "Inception" de SSH, ya que se conectarían via web a la consola SSH del VPS y una vez dentro de ella, otro SSH a nuestro "Destino final" (y les metí dos películas en una sola línea. Imposible nerdearla mas)

Basta de chachara, vamos a meter dedo.

Como siempre para estas cosas es ideal tener nuestros repositorios actualizados


$ sudo apt-get update


Una vez actualizados los repos, instalamos

$ sudo apt-get install openssl shellinabox


Parece que por algún motivo que no me moleste a investigar por ahora, esto bajo Ubuntu 12.04 no se instala de la manera tradicional, por lo que es necesario bajar el .deb desde los repositorios de Ubuntu

(en mi caso particular no instale el openssl y todo funcionó igual)

$ wget http://archive.ubuntu.com/ubuntu/pool/universe/s/shellinabox/shellinabox_2.14-1_i386.deb


(Si necesitan el paquete de 64 bits el nombre es: shellinabox_2.14-1_amd64.deb)

Después instalamos

sudo dpkg -i shellinabox_2.14-1_i386.deb


Una vez concluída la instalación, solo nos queda configurar que tipo de puerto vamos a usar para conectarnos.

Podemos tranquilamente utilizar el puerto 443 en vez del 80, y seguimos manteniendo el standard de seguridad, usando https (como es mi caso)

Detenemos el servicio

$ sudo service shellinabox stop


Y modificamos los parametros de configuración

$ sudo nano /etc/default/shellinabox


Y modificamos las lineas

# TCP port that shellinboxd's webserver listens on
SHELLINABOX_PORT=443

# specify the IP address of a destination SSH server
SHELLINABOX_ARGS="--no-beep -s /:SSH:TU.NUMERO.DE.IP.O.DNS"


Luego de esto, reiniciamos el servicio

$ sudo service shellinabox start


Podemos verificar su funcionamiento

$ sudo netstat -nap | grep shellinabox


tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 12274/shellinaboxd


Ya en el navegador podemos probarlo entrando a http://TU.IP.O.DOMINIO:443 con tus credenciales necesarias y listo.



Ya pueden usar todo los servicios de SSH de manera web, a traves de puerto 443 y salteando ese condenado proxy.

Diviértanse.

Fuente TecMint
Tomado de: http://www.fabio.com.ar/5720

No hay comentarios: