En este artículo vamos a explorar cómo podemos aprovecharnos de la tunelización sin grandes medios y mediante herramientas gratuitas y de fácil acceso en la red.
En comunicaciones, llamamos túnel a un canal de comunicación donde los paquetes o datagramas están encapsulados en un procolo encriptado negociado entre los dos extremos. De esta manera se cumplen las dos propiedades siguientes:
- Cada paquete se encripta para que sólo pueda abrirlo el destinatario (privacidad).
- Los paquetes contienen una firma elecrónica que sólo puede generar el nodo origen (autenticación).
En el caso de SSH, el propósito es general. Se va a encapsular cualquier tipo de paquetes entre puertos TCP, los cuales se desempaquetan de manera transparente tanto para la aplicación origen como la de destino, que sólo ven la comunicación como si fuera un canal local (localhost) en claro. Esto nos permite usarlo para casi cualquier aplicación. Véase el siguiente esquema:
Las utilidades de esta técnica son numerosas. Entre ellas:
- Comunicación segura: Acceso a aplicaciones sensibles entre sedes de una empresa, o desde ubicaciones externas, atravesando redes no seguras. En este sentido es una alternativa cuando no se pueda usar VPN por su complejidad o por limitaciones en la red.
- Traspasar limitaciones en redes que bloquean el acceso a determinados servicios. El típico ejemplo son las redes de empresas que impiden a sus empleados el acceso a ciertos protocolos o a sitios concretos.
- Privacidad: Cuando queramos comunicarnos sin que nuestra actividad pueda ser monitorizada, ya sea por intrusos o por administradores de la red.
- Acceso a puertos en NAT: Cuando se usa NAT, puede ser laborioso e inseguro estar mapeando los puertos de acceso a determinados servicios si estos no son de uso público. Con un túnel sólo hay que tener abierto el puerto que da acceso al servidor SSH, y a través de él se accede a todos los puertos del nodo de destino.
En este ejemplo, nos hemos desplazado con un portátil a una plaza pública donde el Ayuntamiento ofrece un Wifi de acceso a Internet. La inseguridad de esa red es total, dado que está abierta y cualquiera en muchos metros a la redonda podría monitorizar todo el tráfico sin problemas. Vamos a usar un túnel SSH para poder usar un cliente de correo (como Thunderbird, por ejemplo) sin temer por nuestra privacidad.
Para ello hemos preparado en casa un PC con Linux conectado a Internet (podríamos hacerlo en Windows, pero no es tan fácil y natural). En el Linux hemos dejado levantado el servicio ssh (que existe en cualquier distribución de Linux, generalmente bajo el paquete openssh-server). En el router hemos abierto el puerto SSH (por defecto el 22) para que se pueda acceder a él desde el exterior. Por supuesto, se puede mejorar la seguridad eligiendo otro puerto arbitrario (en este ejemplo usamos el 2222). Es imprescindible, lógicamente, que la red desde donde vamos a conectar permita conexiones con destino a ese puerto. Esto en la plaza pública es fácil, pero no es así, por ejemplo, en la red de una empresa según lo sofisticado del firewall o del proxy que usen.
En nuestro PC servidor tendremos que decirle al servicio ssh el puerto que debe escuchar. La configuración suele estar en /etc/ssh/sshd_config. Si queremos el puerto 22 no hay que cambiar nada. Nosotros cambiaremos la directiva Port con el valor 2222.
En el portátil, suponiendo que es Windows, podemos usar el cliente SSH libre: PuTTY. Es un ejecutable de pequeño tamaño sin instalación. Se puede obtener en la web de PuTTY. Descargaremos el binario putty.exe.
Abrimos una línea de comandos (Inicio->Ejecutar->cmd) de Windows y nos movemos a la carpeta donde tenemos el ejecutable del PuTTY. Allí solamente tenemos que lanzar este comando (todo en una sóla línea):
putty -P 2222 usuario@mi.casa -L 10000:servidor.smtp:25 -L 10001:servidor.pop:110Donde los datos arbitrarios que he usado son:
- 2222 es el puerto donde está abierto el servicio SSH en casa.
- usuario es el usuario del PC servidor.
- mi.casa es la IP (o DNS) del router en casa.
- 10000 y 10001 son los puertos locales del portátil desde donde queremos acceder a los servicios de correo saliente (SMTP) y correo entrante (POP3), respectivamente. Podemos elegir cualquiera que no esté en uso.
- servidor.smpt y servidor.pop3 son los servidores de correo de mi proveedor particular. Se puede usar también cualquiera de uso libre como el de Google.
- 25 es el puerto SMTP del servidor de correo. 110 es el puerto del servidor POP3.
Ya sólo hay que usar cualquier cliente de correo (como Thunderbird, por ejemplo), configurando la dirección SMTP (correo saliente) a localhost en el puerto 10000 y la entrante (POP3) como localhost al puerto 10001.
El lector avispado se habrá dado cuenta el potencial de esta técnica para cualquier tipo de servicio (escritorio remoto, proxy web, mensajería instantánea, etc.)
La seguridad se puede reforzar usando autenticación por clave pública y también estableciendo una lista de confianza (host.allow).
Fórum Técnico se ofrece gratuitamente y bajo licencia Creative Commons BY-NC-ND 3.0
No hay comentarios:
Publicar un comentario
Expresa tu opinión respetando a los demás y a unas mínimas reglas del lenguaje castellano.
Nota: solo los miembros de este blog pueden publicar comentarios.