-[ 0x0D ]-------------------------------------------------------------------- -[ Building SSH ]------------------------------------------------------------ -[ by SeSox ]--------------------------------------------------------SET-31-- *************************************** * Creando y Utilizando tuneles SSH * *************************************** 1.- Que son los tuneles SSH? 2.- Por que necesitamos los tuneles SSH? 3.- Que necesito para empezar? 4.- Client? Server? Significa lo mismo que siempre? 5.- Procedimiento 6.- Ejemplo 7.- Tenga presente... 8.- Recursos 1.- Que son los tuneles SSH? ------------------------ Un túnel de SSH es un camino seguro (conexión TCP) entre dos nodos en una red. Todo el tráfico de la red enviado a través del túnel se cifra -- cualquier paquete interceptado a lo largo de la conexion es ininteligible para cualquier persona que no posea la clave apropiada para descifrarlo. Hablando claro, un túnel de SSH toma todo el tráfico enviado a un puerto TCP de su ordenador (un extremo del túnel), lo cifra, y lo envía a el ordenador remoto (el otro extremo del túnel). La computadora remota desencripta el tráfico y lo reenvia a un host y puerto especifico, a sí mismo o a otra máquina. .___. APP | | Server |___| Home PC Internet gw Router \____\ .___. _____ .____. . | | / \ | | /|\ |___|::::::> | | ::::::::> | | ::::::: | \____\ \_____/ |____| :: .___. :: | | :::::::> |___| \____\ SSH Server NOTA: El tunel es la flecha "::::::>" que va desde el pc de casa hasta el servidor SSH. Lo que hay a partir del gw Router es una red privada. El pc de casa podra acceder al servidor de aplicacion dentro de la red privada. Todo lo que tiene que hacer el router es permitir la entrada/salida del trafico ssh. 2.- Por que necesitamos los tuneles SSH? ------------------------------------ La respuesta a esto está en gran parte influenciada por usted. Aquí están algunos ejemplos de cómo se puede dar un buen uso a un tunel SSH: * Esta usted en un entorno restringido por un firewall o router que no permite las conexion del tipo que necesita. Si se permiten las conexiones por SSH atraves del router, puede usted utilizar un tunel para pasar atraves del router y utilizar los servicios de red que precise al otro extremo de la red. * Usted desea enviar información utilizando protocolos como el SMTP o el telnet que son protocolos que trabajan en texto plano (usuarios y contraseñas incluidos). * Si cree usted que el gran hermano / el FBI / la Interpol/ Echelon / Bavarian Illuminati estan fisgoneando en el trafico de su red, y quiere desbaratar sus intentos y reirse en su cara. 3.- Que necesito para empezar? -------------------------- Este articulo asume que tiene usted conocimientos basicos sobre lo que es SSH, y como usar este para realizar una conexión con un servidor. Si le gustaria practicar con SSH, aqui tiene varios proveedores de cuentas shell gratuitas que le permiten utilizar SSH para conectar. Usted necesitara tener un cliente y un servidor SSH funcionando para construir y probar su tunnel. He añadido unos enlaces al final de este articulo a sitios que contienen informacion sobre SSH y posibilidad de descargar programas cliente y servidor. 4.- Cliente? Servidor? Significa lo mismo que siempre? -------------------------------------------------- Si tiene usted conocimientos sobre los mecanismos de redes, probablemente entendera estos terminos. Para aclarar estos terminos, aqui tiene algunas definiciones que seran utilizadas en este articulo: Cliente: El ordenador del cliente es desde el que realizara usted la conexion SSH. Normalmente suele ser su computadora de casa o pc personal. Servidor: El servidor es el ordenador al que esta conectando mediante el tunel SSH. Es ordenador podria estar dentro de una red privada o puede ser una cuenta shell en internet. Destino: El destino (Target) es el ordenador que esta en el estremo final y que recivira el trafico de red enviados a traves del tunnel. Este ordenador puede ser igual que el servidor aunque no tiene por que serlo. Con propositos de estudio, usted puede utilizar el mismo ordenados en forma de cliente, servidor y destino -- La conexion sigue el mismo camino que tendria que hacer por diferentes ordenadores. 5.- Procedimiento ------------- Siga estos pasos para construir y probar su tunel. Estos pasos asumen que esta usted sentado frente a un ordenador cliente: 1. Primero realice una conexion normal al servidor SSH, para así verificar que todo esta funcionando correctamente. 2. Si el servidor y el destino no son el mismo ordenador, compruebe que el servidor puede acceder adecuadamente al puerto especifico del ordenador destino. 3. Configure su cliente SSH para habilitar la opcion de forwarding (reenvio) -- Este es el paso clave en la construccion del tunnel. Para esto, necesitara especificar tres bloques de información: 1. El puerto TCP en el ordenador del cliente que será utilizado como primer salto del tunel. Cuando el forwarding (reenvio) este activado, SSH estará escuchando en este puerto a la espera de trafico. 2. El nombre de host o direccion IP del ordenador destino (ultimo destinatario del trafico que circule atraves del tunel). Este sera resuelto por el servidor; Si el servidor y el destino son el mismo ordenador, usted podrá utilizar 'localhost' o '127.0.0.1'. 3. El puerto de la computadora destino que recibira el trafico que pase atraves del tunel desde el cliente y pasando por el servidor. La configuración del cliente cambiará segun el software que utilice. PuTTY es un excelente cliente de SSH/telnet para windows -- si esta utilizando PuTTY, puede usted habilitar el forwarding (reenvio) desde Connection -> SSH -> Tunnels y una vez estemos ahí, introduciremos el puerto local y el host y puerto remotos (host:port) en la seccion de port forwarding. Si esta usted utilizando un cliente ssh de linea de comandos, podra usted especificarlo de la siguiente manera: # ssh -L myport:target_address:target_port server ...rellenando correctamente con los siguientes datos: servidor, puerto, direccion de destino (target_address) y puerto de destino (target_port). 4. Por fin se ha realizado esta primera conexion SSH entre cliente y servidor , verifique que myport este escuchando en el ordenador cliente. Para esto puede utilizar el comando netstat -ntl, le tendra que aparecer el puerto con estado LISTEN o LISTENING. Si ve usted el puerto en esta lista, quiere decir que su tunel esta creado y funcionando. 5. Configure la aplicacion que utiliza usted para enviar datos atraves del tunel; Debe usted asegurarse de que cualquier campo 'server name', 'nombre del servidor' o similar contenga 'localhost y que la informacion del puerto contenga el especificado por usted como myport. Por ejemplo, si esta utilizando el tunel para enviar un correo atraves de un SMTP, debera poner como servidor SMTP localhost (127.0.0.1) y usar el puerto especificado en myport. 6. Listo! Usted ahora tendria que poder usar su tunel SSH. Note que tiene que dejar la sesion SSH habierta mientras utiliza el tunel -- cierre la sesion cuando haya terminado y el tunel se cerrara sin problemas. 6.- Ejemplo ------- Fijese en la siguiente situacion y vaya paso a paso configurando El tunel SSH: Usted es un administrador de sistemas en Initech, y necesita configurar el ordenador de su casa para acceder al servidor de dominio de la empresa utilizando VNC cuando este fuera de la oficina. El personal de seguridad no permite entradas ni salidas inseguras por el router -- por lo que habrir puertos para VNC no es una opcion. Utilizando SSH puede usted crear un tunel que pase la conexion de VNC atraves del servidor de dominio y el ordenador de su casa. 1º Paso: Solicite que el router (router1.example.com) permita conexiones SSH desde internet. Estas conexiones deberan ser enrutadas o reenviadas al ordenador de su oficina dependiendo de la configuracion de la red. 2º Paso: Instale VNC en el servidor de dominio (192.168.1.100) y ejecute este como un servicio del sistema. Yo personalmente prefiero el UltraVNC, pero si usted no esta en un entorno 100% windows, necesitara usar el cliente y servidor de VNC para su configuracion concreta. Asegurese de que VNC le pide la contraseña, y pruebe a conectarse para comprobar que funciona correctamente. Ahora, el servidor de dominio es el ordenador destino, con el VNC escuchando en el puerto 5900. 3º Paso: Instale un servidor de SSH en el ordenador de su oficina, por ejemplo (192.168.1.139). Ponga este como un servicio del sistema, y asegurese de tener permiso para tener el ordenador encendido por la noche y fines de semana. Este ordenador sera el servidor, el cual tendra el servidor SSH escuchando en el puerto 22. 4º Paso: Instale un cliente de SSH en el ordeandor de su casa. Si tiene configurado el servidor para utilizar autentificacion por clave publica o basada en host, asegurese de que tiene el nombre de host correctamente establecido o que tiene una copia de la clave en el ordenador. (Para una seguridad extraordinaria, necesita autentificacion por clave publica o basada en host y desabilitar la autentificacion por contraseñas de SSH. Consulta la documentacion para mas informacion.) El ordenador de su casa es ahora el ordenador cliente. 5º Paso: Verifique que puede realizar una conexion SSH desde el ordenador de su casa al servidor SSH. Si esto funciona, usted ya sabra que el router deja pasar el trafico correctamente. 6º Paso: Construya su tunel SSH. Escoja un puerto para que el ordenador de su casa se quede a la escucha entre el 1 y el 65535. VNC utiliza el puerto 5900 por defecto, pero tambien puede utilizar 5900 si lo desea. Sin embargo, si da la casualidad de que esta ejecutando VNC en su ordenador, el puerto 5900 ya estara en uso. Yo en este caso recomiendo añadir 1 al puerto por defecto de modo que la información quedaria de la siguiente manera: myport: 5901 target_address: 192.168.1.100 target_port: 5900 O en la línea de comandos: # ssh -L 5901:192.168.1.100:5900 route1.example.com (Nota: Si el ordenador de su oficina tiene una ip publica, deberá ser capaz de conectar directamente a este ordenador. En nuestro ejemplo necesitamos especificar el nombre (hostname) del router para la conexion ssh por que utilizamos una direccion ip privada que no puede ser enrutada, por eso enviamos la solicitud al router el cual si que nos puede reenviar el trafico asta la direccion ip especificada. Si esto te confunde, no te preocupes -- lo unico que pretendemos es que pongas la direccion IP del ordenador de la oficina en el comando SSH.) 7º Paso: Si se crea la conexion SSH con exito, utilice el comando netstat para verificar que el ordenador de su casa esta escuchando en el puerto 5901. Si es asi, esta usted listo para hacerlo funcionar. 8º Paso: Ejecute VNC Viewer en el ordenador de su casa. Para obtener informacion de la conexion, usted necesitara proporcionar el string: localhost:5901 -- Esto le indica al visor que realice una conexion a 'localhost' (su ordenador) en el puerto 5901 (final del tunel SSHH). Llegados a este punto, te saldra un cuadro solicitando la contraseña de la conexion VNC, o reciviras un error si existe algun problema. 9º Paso: Introduzca la contraseña. Dele uno o dos minutos y deberia ver el mensaje "Please Wait" mientras VNC carga el escritorio remoto Dependiendo de la velocidad de su conexion, usted querra especificar una compresion, colores y otras configuraciones de VNC para que la aplicacion funcione algo mas rapido en conexiones lentas. ( Nota: UltraVNC procura detectar la velocidad de la conexion automaticamente; puesto que el destino esta reciviendo los datos desde el servidor, la velocidad utilizada sera la que hay entre ellos dos. Si el ordenador de su casa tiene una conexion mas lenta hacia el servidor, necesitara ponerlo para una velocidad mas lenta.) 10º Paso: Ya lo ha conseguido! La sesion que esta utilizando esta enviando datos atraves de un tunel SSH. Recuerde cerrar la conexion del VNC antes de cerrar el tunel SSH -- sino, la conexion VNC no se cerrara conrrectamente. 7.- Tenga presente... ----------------- * Cualquier cosa que quiera enviar atraves del tunel debe ser enviada a localhost:myport. Si no esta usted seguro de como redireccionar servidores/puertos en la aplicacion que esta utilizando, mire en la documentacion. * Cerciorese de que el puerto local que ha especificado para el tunel no tenga conflictos con otros puertos que esten abiertos en el pc cliente. Es por eso que yo he utilizado el puerto 5901 para la conexion VNC, en vez de usar el puerto por defecto 5900. * El trafico solo se encripta entre el pc CLIENTE y el pc SERVIDOR. Si el servidor y el destino no son los mismos, el trafico redireccionado desde el servidor asta el destino NO SERA ENCRIPTADO. (miren la Figura 2) ._____. ._____. No ._____. | | Encriptado | | Encriptado | | | C | <------------> | S | <------------> | T | |_____| Tunel SSH |_____| |_____| FIGURA2: Es importante recordar que si el servidor (S) y el destino (T) no son la misma maquina el trafico entre ellos no estara encriptado. * Si ha seguido usted estas instrucciones y todavia tiene dificultades para crear una conexion SSH, mire la documentacion para la version especifica de SSH que este utilizando ya que existen pequeñas pero importantes diferencias en la forma de configurar por ejemplo en linux y windows. 8.- Recursos -------- Esto es simplemente una lista de enlaces para especificar el software y la informacion a la que nos referimos en este articulo: * [1]OpenSSH: Un cliente/servidor de SSH disponible para varios sistemas operativos. Este software ha sido desarrollado por el mismo equipo que ha echo OpenBSD. * [2]OpenSSH para Windows: Es un port para windows del paquete OpenSSH. * [3]PuTTY: Es un cliente GUI de ssh para usuarios de windows, es el mejor cliente de ssh freeware que conozco. * [4]VNC: Ahora conocido como RealVNC, este sitio contiene muy buena documentacion para esta util herramienta. * [5]UltraVNC: Esta es una version de VNC que solo funciona en sistemas Windows. Esta version tiene añadidos muy utiles que no tiene el VNC estandar, como puede ser la transferencia de ficheros, posibilidad de chat entre servidor y cliente, y Autentificacion mediante Active Directory en dominios NT. * [6]Freeshell.org: Este es un buen servicio de cuentas shell que llevo utilizando durante un par de años. Se que tienen funcionando NetBSD y no consideran linux como una eleccion viable. Sin embargo, tu opinion puede ser distinta (YMMV). References 1. http://www.openssh.com/ 2. http://sshwindows.sourceforge.net/ 3. http://www.chiark.greenend.org.uk/~sgtatham/putty/ 4. http://www.realvnc.com/ 5. http://ultravnc.sourceforge.net/ 6. http://www.freeshell.org/ Nota del traductor ------------------ Puede consultar el original de este articulo en el siguiente enlace: http://www.neworder.box.sk/newsread.php?newsid=12498 Copyright (c) 2005 SeSoX. Se otorga permiso para copiar, distribuir y/o modificar esta traduccion bajo los términos de la Licencia de Documentación Libre (FDL) GNU, Versión 1.2 o cualquier otra versión posterior publicada por la Free Software Foundation. http://www.gnu.org/copyleft/fdl.txt *EOF*