Etiqueta: tunneling

  • SSH Reverse Tunneling

    A menudo tenemos la necesidad de conectar a un servidor ssh, a través de consola, de putty, etc.

    La mayor parte de las veces tenemos que habilitar el NAT del servidor ssh y pelear con los routers para conseguirlo. Una vez salvada la configuración del NAT (router) tenemos que volver a pelear con el posible cortafuegos.

    Para evitar estos problemas viene a nuestro rescate el ssh reverso. ¿Qué pasaría si el servidor destino nos mandara a nosotros (clientes de él) una conexión a nuestro equipo? De esta forma nosotros como clientes recibiríamos la conexión del servidor. Con esto evitamos tener que abrir puertos y configurar el cortafuegos porque es el servidor el que nos manda la conexión a nosotros (a nuestro equipo).

    ¿Cómo hacemos esto?

    (más…)

  • HTTPS, SSH Y OPENVPN EN UN MISMO PUERTO

    multi2De vez en cuando uno encuentra una de esas herramientas que resuelve un problema de una forma tan brillante que realmente dan ganas de aplaudir.

    Este es el caso de sslh, una herramienta que permite cumplir el sueño de todo aquel que ha tenido que lidiar en un entorno cuya salida estaba gestionada por un proxy.
    Sslh permite multiplexar un único puerto y convertirlo en varios servicios a la vez. Lo que hace es recibir la conexión en el puerto indicado, analizar que tipo de conexión es (ssl, openvpn, ssh, xmpp) y en función de ese análisis, enviar la conexión al puerto indicado.
    Por simple el concepto es brillante. Muchos nos hemos encontrado en un entorno donde un proxy solo facilita el método ‘CONNECT’ hacia el puerto 443. Si queríamos hacer uso de varios servicios era necesario usar túneles SSH que a la postre eran bastante engorrosos.
    Además, el creador de la herramienta indica un método para lidiar con proxys ‘inteligentes’ que no solo restringen conexiones a puertos sino que también analizan que las conexiones sean efectivamente SSL.
    Para instalarlo en Linux (para windows se proveen ejecutables) hay que hacer lo siguiente:
    Descargamos el paquete:
    wget https://github.com/yrutschle/sslh/archive/v1.15.tar.gz
    Lo descomprimimos
    tar -xvzf v1.15.tar.gz
    Compilamos e instalamos
    make install
    Una vez hecho eso, tenemos que configurar sslh para indicarle como queremos que mueva las conexiones.
    lo más fácil es usar el puerto 443 de la interface de red exterior para sslh y poner los otros servicios en localhost. De esa forma solo exponemos un puerto abierto al exterior y el resto de servicios están ocultos a miradas ajenas.
    Un ejemplo de uso de sslh para escuchar en el puerto 443 de la interface de red y enviar el tráfico SSH al puerto localhost 22
    sslh -p 172.16.183.139:443 –ssh 127.0.0.1:22
    Si queremos mover tráfico openvpn, tan solo tenemos que añadir el flag –openvpn 127.0.0.1:1194
    De esa forma estaremos moviendo tráfico SSH al puerto 22 y tráfico OpenVPN al puerto 1194 pero todas las conexiones desde el exterior irán contra el puerto 443.
  • Comandos útiles (V)

    Siguiendo esta serie de comandos útiles, expongo otro nuevo:

    Tunelizando un servidor remoto en una máquina local con un puerto destino especificado.

    $ socat TCP-LISTEN:3333,fork TCP:192.168.3.200:22,sourceport=12345

    Este comando conecta a la ip 192.168.3.200 puerto 22, usando el puerto destino 12345 y une el tunel al puerto local 3333. Después de esto podemos conectar a  localhost:3333.

    Con este comando es posible conectar a servidores usando un puerto específico en destino.

     

  • Túnel SSH

    ¿Qué es un túnel SSH?
    Un túnel SSH es una conexión SSH que transforma un puerto X en tu equipo, en el puerto Y de otra máquina, pasando por una tercera.

    ¿Se entiende?
    Es probable que no, así que me explicaré con detalles.

    Una conexión “tradicional”, es cuando quiero acceder a un cierto servicio en otra máquina, y me conecto directamente a ella. Tal como se muestra en la imagen a continuación.

    Pero, ¿qué pasa cuando aún necesito conectarme a esa máquina, pero por alguna razón ya no puedo conectarme directamente?

    En este caso, lo que se hace es usar un tunel SSH.

    • Flechas Azules: Conexiones que si son posibles realizar.
    • Flecha Verde: Túnel SSH. Conexión al otro equipo, pasando por el equipo que puede conectarse.
    • Flecha Roja: Conexión en un puerto local, equivale a la conexión de la flecha roja de la imagen anterior.

    ¿Y como funciona?

    $ ssh -L <puerto local>:<el otro equipo>:<puerto en el otro equipo> <equipo que puede conectarse> -l <usuario para el equipo que puede conectarse>

    Por ejemplo, el servidor de Tareas (carretas.inf.utfsm.cl) del LabComp está restringido para ser accesado solo desde las IP’s del DI. Para conectarme a éste seria algo así como:

    $ ssh -L 6666:carretas:22 ssh2.inf.utfsm.cl -l rcovarru

    En el ejemplo, se podría haber omitido el -l rcovarru, ya que el usuario de mi equipo es exactamente igual.
    Además, como ven, al nombre del servidor de tareas no se le agregó el dominio, eso es solo el equipo al que me estoy conectado (ssh2) también pertenece al mismo dominio.

    Ok, pero ese comando extraño, ¿Qué hace?
    Transforma el puerto 6666 de mi equipo, en el puerto 22 (puerto de ssh) de carretas.

    Esto significa, que ahora me podré conectar “directamente” a carretas por el túnel, con:

    $ ssh -p 6666 localhost -l usuario-en-carretas

    Mientras que la conexión SSH esté viva, el túnel se mantendrá igual.

    Esto, funciona para cualquier tipo de puerto, no solo para comunicarse por ssh. Si quieren conectar, por ejemplo, al servidor postgresql de carretas, el tunel debería ser:

    $ ssh -L 6666:carretas:5432 ssh2.inf.utfsm.cl -l rcovarru

    Y luego, la conexión de psql deberia ser algo así como:

    $ psql -p 6666 -h localhost dbname pguser

    Bonito, ¿verdad?

    Entrada original de Renato Covarrubias-Romero

  • Montar FTP o SFTP como una unidad en Windows

    Problema
    Necesidad de montar carpetas desde un hosting web  sobre sftp (ssh) en tu máquina Windows.

    Discusión
    Actualmente no hay aplicaciones sencillas que me permitan montar una conexión SFTP como una unidad en Windows. Sin embargo, existen aplicación como NetDrive (NetDrive_SETUP) o FTPDrive que permiten montar una conexión FTP como una unidad. Necesitaremos entonces crear un puente FTP sobre SFTP. ¿Qué significa esto? Crear un proxy FTP para tu conexión SFTP. Esto permitirá enviar comandos al servidor FTP sobre una conexión SFTP. Hay varias herramientas que van a satisfacer nuestras necesidades. Entre ellas usaremos la creada por Bitvise: Tunnelier.

    Solución

    1. Instale NetDrive
    2. Una vez instalado, ábralo y cree un Nuevo Sitio
    3. Teclee localhost en el nombre del sitio
    4. Teclee localhost en la IP del sitio (hay que recordar que el tunel debe ya estar habilitado)
    5. Teclee 21 en el puerto
    6. Seleccione FTP para el puerto
    7. Seleccione una letra para la Unidad
    8. Teclee la clave y contraseña de la cuenta ftp en el servidor remoto
    9. Pulse en Save
    10. Pulse en Connect
    11. Pulse la X para cerrar la ventana (se minimizará en la barra del sistema)

    ¡Ya lo tenemos! Una conexión SSH/SFTP como una unidad de Windows.

  • Tunelizando con Tunnelier

    q-logoLa empresa bitvise tiene una excelente programa Tunnelier que te permitirá hacer tunneling de varios puertos o incluso crear una compartición de directorios de equipos remotos.

    Este programa crea un fichero de configuración con los parámetros ya configurados. Para mis necesidades muestro aquí el fichero que he utilizado para solucionar un caso práctico.

    Las características de esta configuracion tunnelier consiste en:

    1. Redireccionamiento del puerto 3306 (mysql) de un equipo local XP a un servidor remoto.

    2. Utilización de una tarjeta de bucle local para acceder a unas carpetas compartidas en un servidor remoto.

    El programa lo puedes descargar desde la página web de la empresa bitvise o bien localmente desde aquí.

  • Securing Windows File Sharing With SSH

    q-logo

    En bitvise se puede encontrar una solución profesional a un problema bastante interesante. Compartir en equipos windows carpetas de servidores ssh remotos (o locales) a través del protocolo ssh. Esta técnica, llamada tuneling, sirve además para redireccionar otros servicios (mysql) a otras máquinas remotas pero centrándonos en que la conexión sea seguro.  A continuación transcrivo los pasos a seguir. El artículo original lo podeis encontrar en la página de bitvise.

    Tunneling Windows file shares is useful if you want to comfortably access files on a Windows machine that is only accessible via SSH, and you don’t want to use SFTP or SCP.

    To tunnel Windows file shares over an SSH connection, you need to forward connections on port 139 on the sharing-consumer machine via SSH to the sharing-provider machine. The exact setup differs depending on the version of Windows on the sharing-consumer machine:

    • Windows 2000: configure the SSH client to listen on interface 127.0.0.2 and connect to ‘127.0.0.2sharename’. This is all that is necessary.
    • Windows XP: same as for Windows 2000, but before using the forwarded share, the local (client’s) Windows file sharing server needs to be stopped via ‘net stop server’. To disable it permanently, run ‘sc config lanmanserver start= disabled’. To re-enable it at a later time, run ‘sc config lanmanserver start= auto’. Note the space between ‘start= ‘ and the following parameter – sc will fail without it.

    (más…)

  • Loopback Adapter file share tunneling: XP, 2003

    The following instructions document how the Microsoft Loopback Adapter can be installed and configured for use with file share tunneling on Windows XP and 2003:

    1. Installing the Loopback Adapter:
      1. Open Start, Control Panel, Add Hardware.
      2. Click Next on the introduction dialog box.
      3. Select ‘Yes, I have already connected the hardware’ and click Next.
      4. Scroll to the bottom of the list of hardware, select ‘Add a new hardware device’, then click Next.
      5. Select ‘Install the hardware that I manually select from a list (Advanced)’, then click Next.
      6. Select ‘Network adapters’, then click Next.
      7. Select ‘Microsoft’ as the manufacturer, select ‘Microsoft Loopback Adapter’ as the adapter, then click Next.
      8. Click Next to confim the installation.
      9. Click Finish to complete the installation.
    2. Configure the newly created adapter:
      1. Open Start, Control Panel, Network Connections.
      2. Select the newly created connection (should be named ‘Local Area Connection N’, where N is its order number).
      3. Right click on the selected connection and choose Properties from the menu.
      4. Confirm that ‘Microsoft Loopback Adapter’ (or ‘Microsoft Loopback Adapter #N’) is displayed in the ‘Connect Using:’ field. If it isn’t, return to step 2 and retry properties for another adapter.
      5. Uncheck (disable) everything except ‘Internet Protocol (TCP/IP)’.
      6. Select ‘Internet Protocol (TCP/IP)’, then click Properties to open ‘Internet Protocol (TCP/IP) Properties’.
      7. Select ‘Use the following IP address:’ and fill in the ‘IP address:’ and ‘Subnet mask:’ fields (e.g. 10.10.10.10, 255.255.255.0).
      8. Click Advanced to open ‘Advanced TCP/IP Settings’.
      9. Switch to WINS and select ‘Disable NetBIOS over TCP/IP’.
      10. Click OK to close ‘Advanced TCP/IP Settings’.
      11. Click OK to close the ‘Internet Protocol (TCP/IP) Properties’.
      12. Optionally (on XP only) uncheck (disable) ‘Notify me when this connection has limited or no conectivity’ to remove the connection warning icon from the system notification area.
      13. Click OK to close the connection properties.

    If you later want to uninstall the Microsoft Loopback Adapter (once it is not needed any more for the forwarding of a Windows file share), you can uninstall it using Control Panel > System > Hardware > Device Manager.