Resultados 1 al 3 de 3

Tema: Guía acceso remoto a casa saltando firewalls y proxys (Wndows)

  1. Spacesoul
    Spacesoul está desconectado
    Usuario registrado CV
    Fecha de ingreso
    23 mar, 11
    Ubicación
    Madrid
    Mensajes
    236

    Guía acceso remoto a casa saltando firewalls y proxys (Wndows)

    GUÍA, Acceso Remoto a casa saltando Firewalls, Proxys.. (Windows)

    (dificultad Media / Avanzada)


    INTRODUCCIÓN
    ------------
    Escribo esta guía porque he encontrado bastante complicado acceder remotamente desde un pc de empresa hasta un equipo en casa y conseguir un control total del mismo. Una vez conocido el procedimiento, es realmente sencillo y gratuito.
    La mayoría de las guías que existen contienen errores y no explican en detalle pasos fundamentales para lograr el objetivo.
    La guía está realizada para conectar a un servidor windows, pero es aplicable igualmente a un servidor linux. Con linux el procedimiento es mucho más sencillo y las guías que existen en internet para linux están mejor documentadas.
    La finalidad de esta guía es totalmente educativa.

    VENTAJAS
    --------
    La guía resuelve problemas típicos que podemos encontrar, como bloqueo de puertos, bloqueo dns, capado de aplicaciones TeamViewer o VNCs, uso de firewalls intermedios para filtrar y bloquear datos..

    También resuelve el problema de que la empresa use proxys intermedios con autentificación. La mayoría de las aplicaciones no soportan conexiones a través de proxy, y con esté método podremos usar cualquier aplicación aunque a priori no pueda.

    Se resuelve el problema de que la empresa pueda espiar lo que hacemos sniffeando el tráfico de red. No podrán saber saber que hacemos puesto que la conexión irá totalmente cifrada por un tunnel ssh, y se usará una aplicación de control remoto para manejar un ordenador de casa.

    Podremos conectarnos desde cualquier dispositivo a nuestro equipo de casa (android, pc, iphone, ipad..), estableciendo un acceso seguro y pudiendo realizar cualquier tarea como si estuviesemos en nuestro pc de casa (office, juegos 3d..).

    La guía permitirá conectarnos directamente a casa, sin necesidad de servidores intermedios como los de teamviewer, ammy admin, logmein...
    Por último comentar que la guía resuelve algunos problemas típicos que existe al conectar a un servidor windows por ssh.


    ESQUEMAS APLICABLES
    -------------------
    El tutorial está basado en la conexión de un equipo de empresa a un equipo de casa, pero las bases son las mismas para cualquier otro esquema.

    [pc Empresa] --> [Proxy salida con autentificación] --> [firewall empresa] --> [router empresa] --> *[INTERNET]* --> [pc Casa]

    [iphone personal] --> *[INTERNET]* --> [pc Casa]


    SOFTWARE
    --------
    Software necesario en el equipo que conectará al pc de casa:
    - Cliente SSH: Cualquier cliente SSH que permita conexión, hacer túneles y port forwarding: Putty, Kitty
    - Cliente VNC: Cualquier cliente de control remoto: Ammy Admin, TeamViewer, TightVNC, Radmin...

    Software necesario en el equipo de casa:
    - Windows. (Para linux nos valdrá igualmente con otros programas).
    - Servidor SSH: freesshd, openssh Windows, bitwisessh, winssh.. (en linúx existen varios servidores ssh).
    - Servidor VNC: Cualquier servidor de control remoto nos vale: Ammy Admin, TeamViewer, TightVNC...


    PASOS:
    ------

    [Pasos en el equipo de la empresa que se conectará al pc de casa]
    1. Averiguar a qué puertos nos permite conectarnos el router de la empresa.
    Normalmente no nos dejará salir/conectarnos a cualquier puerto.
    El puerto 80 será uno de los que estará habilitado en el router y por eso podemos conectarnos a páginas web.
    Para averiguar que puertos están habilitados para "conectarnos" desde la empresa hacia afuera, entraremos en esta página:
    http://www.firebind.com
    Y seleccionamos java client o tcp test, testeando puertos del 1 al 1000.
    Si sólo encontramos el puerto 80 abierto (passed), escanearemos de nuevo del 1000 al 9999 y seguramente saldrá alguno más abierto. (suelen estar abiertos el 21, 22, 25, 80, 443, 444, 8080, 8443, podemos directamente probar si alguno de estos está abierto para conectarnos).
    (tras haber realizado este testeo, es recomendable cambiar nuestra dirección IP local del equipo de la empresa para que no se detecte demasiado tráfico desde la misma dirección IP, por las futuras pruebas).

    Una vez averiguados los puertos a los que nos permite conectarnos el router de la empresa, podremos conectarnos a cualquier dirección IP a ese puerto.
    Imaginemos que detectamos abiertos los puertos: 80, 444.
    El puerto 80 estaba claro que estaría abierto, sino no podríamos entrar a ninguna web.
    En realidad cuando conectamos a www.google.es, lo que estamos haciendo es poner www.google.es:80 , pero el navegador ya se conecta a ese puerto por defecto y aunque no lo escribamos, el lo pone por nosotros aunque no se vea en la barra de direcciones del explorador web.
    Lo que haremos será exactamente lo mismo, pero con el puerto 444 que está abierto y conectaremos a nuestra dirección de casa: IPCASA:444
    (Igualmente podríamos usar el puerto 80 para conectar a casa, IPCASA:80).

    Recapitulando, ya tenemos los puertos a los que nos deja salir, y el objetivo de conectar a casa, a ese puerto abierto.
    Ahora que sabemos a qué puerto podemos conectarnos, necesitamos un software que nos permita establecer un puente/canal seguro desde nuestro equipo en el trabajo a nuestro equipo en casa, y ese será en windows la herramienta: putty
    http://www.chiark.greenend.org.uk/~s.../download.html

    putty nos va a permitir crear un tunnel ssh seguro donde la información irá encriptada, y también redireccionar los puertos que queramos.
    Dado que sabemos la IP de nuestra casa y el puerto que el router de la empresa nos deja salir, en putty pondremos
    en Host: IPCASA
    en puerto: 444
    (Si le damos a conectar, nos aparecerá la pantalla en negro puesto que aún no tenemos el servidor ssh en el equipo de windows de casa).

    Una alternativa de cliente ssh a putty, es Kitty. Es exactamente igual que la última versión de putty, pero con mejoras añadidas. Han continuado el desarrollo de putty y han añadido opciones fundamentales como reconexión, minimizar.. Lo recomiendo, y se puede descargar aquí:
    http://kitty.9bis.com
    http://content.wuala.com/contents/9b...kitty.exe?dl=1



    [Pasos en el equipo que tenemos en casa]
    1. Debemos crear un usuario nuevo en windows, con contraseña.
    Le quitamos que pertenezca al grupo de Usuarios genérico, y le pondremos que pertenezca al grupo de Invitados y al grupo de Usuarios de Conexión Remota. Es obligatorio ponerle una contraseña que no caduque.
    No debemos ponerle que sea Administrador ni que pertenezca al grupo de Administradores.

    2. Mapear el puerto 444.
    Dado que el equipo de casa va a recibir en el puerto 444 la conexión entrante del equipo de trabajo, debemos mapear ese puerto en el router de casa,
    para que todo el tráfico que le llegue al router de casa vaya a la dirección IP del pc de casa.
    [pc trabajo] --> [putty conecta a IPCASA:444] --> [routerCasa recibe datos en el puerto 444] --> [routerCasa manda datos a la IP_PCCasa al puerto 444].
    Ejemplo: putty conecta a: 80.33.22.11:444 --> (routerCasa recibe datos) --> router manda datos a: 192.168.1.40:444

    3. Instalar el servidor SSH freesshd (u otro servidor ssh)
    http://www.freesshd.com/freeSSHd.exe
    En la pestaña SSH, en Listen Address seleccionamos nuestra dirección IP local. En port ponemos 444. Marcamos también "Start SSH server on startup".
    En la pestaña Authentication, Password authentication: Required. Public key Authentication, lo he deshabilitado para mayor compatibilidad. (Aunque este debe ser el único modo que deberíamos habilitar para tener un acceso seguro que no puedan romper por fuerza bruta).
    En pestaña Encryption, seleccionamos AES256. (puede que algunos dispositivos móbiles no soporten AES256 pero para el ejemplo nos valdrá).
    En pestaña tunneling, Marcamos Allow local port forwarding y Allow remote port forwarding. (esto permitirá que podamos conectarnos a más puertos del equipo de casa, a través de putty, aunque inicialmente no nos haya dejado el router de la empresa).
    Pestaña automatic updates, lo desmarcamos.
    Pestaña users: Añadiremos el usuario que hemos creado en el paso 1. Le pondremos que se le permita Shell y Tunnel. (SFTP no es necesario).

    freessh es gratuito pero desde 2009 no tiene soporte ni actualizaciones y tiene algunos bugs. Uno de ellos es que no se inicia bien el servicio ssh.
    Debemos deshabilitarlo para que funcione bien. Ir a services.msc, freeshdservice lo paramos y lo ponemos en Inicio Manual.
    Si queremos que el freesshd arranque el servidor ssh en cada arranque del pc de casa, simplemente pondremos un acceso directo a FreeSSHDService.exe en Programas, Inicio.
    (también podemos poner una nueva clave de registro alfanumérica en: HKLM-Software-Microsoft-Windows-CurrentVersion-Run). ( "C:\Program Files\freeSSHd\FreeSSHDService.exe" )
    Reiniciar el equipo de casa.
    Debemos comprobar que efectivamente se ha iniciado el servidor ssh en el puerto 444, al arrancar el equipo. Si no, podemos iniciarlo manualmente para probar.

    Listado de múltiples servidores ssh: http://superuser.com/questions/64058...ws-ssh-servers
    Tutorial instalación ssh server: http://www.techmalaya.com/2009/08/05...ndows-freesshd
    Soluciones problemas freeshd: http://engowen.blogspot.com.es/2011/...-freesshd.html



    4. Instalar cualquier software de control remoto en el pc.
    Por ejemplo Ammy Admin que tiene además, soporte para (directx) controlar juegos 3d de forma remota.
    http://www.ammyy.com/AA_v3.exe
    (TightVNC no tiene soporte para Directx, TeamViewer si soporta DirectX pero va muy lento).
    (Para una simple conexión de escritorio, que no necesitemos juegos o programas 3d, con cualquiera nos valdrá).
    En el Ammy Admin en Network marcaremos la opción Allow Incoming connection by IP y Allow Direct TCP y pulsamos External Ports. Ahí añadiremos el 5931.

    Los puertos por defecto que usan los programas de control remoto son:
    - Ammy Admin: 5931
    - Team Viewer: 5939
    - TightVNC: 5900
    *No necesitamos mapear/redigir en el router casa ninguno de estos puertos (como hicimos con el 444). Lo hará el putty automáticamente a través del tunnel que hemos creado en el puerto 444.

    Recopilando:
    Ya tenemos el router de casa que todo el tráfico que le llegue al puerto 444, lo enviará a la IP local de nuestro equipo PC casa.
    Ya tenemos el servidor SSH configurado en el equipo PC de casa esperando una conexión en el puerto 444.
    Ya tenemos el Ammy Admin configurado esperando una conexión en el puerto 5931. (si usamos team viewer o tightvnc, en sus puertos correspondientes).



    [Finalmente Pasos en el equipo de la empresa que se conectará a casa]
    Ya tenemos todo, sólo falta terminar de configurar el putty.
    Añadir la redirección de puertos en el putty, para que información que enviemos a través del tunnel, la envíe al puerto 5931 al equipo pc de casa.
    Añadir los datos de la conexión proxy, si esque nuestra empresa obliga a usar un proxy para conectarse a internet.

    En el putty, nos vamos a Connections-SSH-Tunnel y pondremos:
    Source port 5931
    Destination IPLOCAL_del_PC_deCASA:5931

    Pulsamos en ADD.
    Ya tenemos conexión al puerto 5931.
    Si nuestra empresa obliga a pasar por un proxy, podemos poner los datos en Connection, Proxy.
    Por último, en session en Hostname, pondremos la IP del router de casa y el puerto 444.
    Ponemos un nombre en saved session, y le damos a SAVE. Se nos salvará los datos puestos en el putty para no tener que volver a escribirlos.
    Pulsar Open.
    Debería aparecenos la pantalla de MSDOS, pidiéndonos que introduzcamos el nombre de usuario y la contraseña.

    Ahora el putty está conectado a nuestro ordenador de casa, a través del puerto 444.
    El putty también está escuchando en el equipo en el puerto 5931. Toda la información que le enviemos a putty al puerto 5931, la enviará automáticamente al equipo pc de casa, al puerto 5931.
    putty está escuchando en la dirección IP 127.0.0.1, en el puerto 5931. Y lo enviará a IPLOCALCASA:5931.

    Encendemos el Ammy Admin en el equipo de la empresa, y nos conectamos a 127.0.0.1.
    (si usasemos tightvnc nos conectaríamos a---> 127.0.0.1::5900 )
    Pum!, ya deberíamos ver el pc de casa


    El tutorial puede ser muy muy lioso si no se tienen algunos conocimientos, por lo que os pido disculpas si no está detallado en profundidad en algunos puntos. Espero ir mejorándolo poco a poco e ir añadiendo imágenes más descriptivas.

    Cualquier sugerencia o pregunta es bienvenida.
    Última edición por Spacesoul; 12/09/2012 a las 12:27

  2. macabeop
    macabeop está desconectado
    Usuario registrado CV
    Fecha de ingreso
    31 mar, 05
    Ubicación
    Madrid
    Mensajes
    903
    Llevo un monton de tiempo buscando por internet sobre este tema y resulta que en este foro hay un tutorial!!!

    Gracias a ver si puedo probarlo y saltarme las limitaciones del proxy de empresa-

  3. Kenny
    Kenny está desconectado
    Usuario registrado CV
    Fecha de ingreso
    14 mar, 05
    Ubicación
    Barcelona
    Mensajes
    151
    Muy bueno... Desde que me caparon el acceso por Teamviewer que buscaba algo así.
    Gracias!