VPN y túnel ssh para navegar sin censura

  • 0

VPN y túnel ssh para navegar sin censura

VPN Virtual Private Network

La redes privadas virtuales no son más que conexiones de internet que van cifradas y con algunos sistemas de verificación e integridad sobre la conexión. Estas redes son utilizadas por las compañías que quieren mantener la confidencialidad de sus comunicaciones en una WAN. Por ejemplo imaginemos una empresa que necesita comunicaciones seguras entre dos sedes de la misma distintas, una en una ciudad y otra en otra, la única manera que tendría de conectar los servicios telemáticos de las dos sedes sería mediante internet.

¿Que por qué querría una empresa cifrar su tráfico?
Pues bien sencillo, hoy en día se utilizan muchos dispositivos móviles con acceso a puntos de redes inalámbricos, hoy en día más que nunca cualquiera podría estar escuchando su tráfico, en TeamSec pensamos que no importa la confianza en el entorno empresarial en cuanto a la seguridad. Ya sea su compañero de trabajo o su jefe, el 75% de los ataques en sedes de compañías se han producido dentro de la infraestructura informática de la empresa, ya fuese fuga de información, daños, etc. No es que seamos paranoicos, son recomendaciones basadas en hechos probados.

Vpn
El protocolo estándar de de VPN es IPSEC, pero existen otros protocolos PPPT, L2F, L2TP, SSL/TLS, SSH, etc. Cada uno con sus ventajas y desventajas.

Que nos ofrece una VPN:

Integridad de los datos- La encriptación de los datos es tan importante como que no sean cambiados o alterados durante su circulación. Por ejemplo, IPsec incluye  un mecanismo para asegurar que la parte encriptada del paquete, el encabezado completo y los datos del paquete IP o datagramas IP, no han sido alterados. Si se detectase alguna modificación, el paquete es descartado. Esta integridad de los datos también involucra autenticar el remote peer, esto es, la otra parte de la comunicación, que deberá  compartir su clave pública para completar el protocolo, como por ejemplo un certificado ssl.

Autenticación del origen de los datos- Verificar la identidad de la fuente de los datos que se están enviando es tan importante como los que se están recibiendo, puesto que siempre podemos estar expuestos a ataques del tipo spoofing que suplantarían nuestro tráfico.
Anti Replay Es la habilidad de detectar y rechazar paquetes que son reproducidos o copiados, y sirve para evitar el spoofing.

Data Tunneling/Traffic Flow Confidentiality- Tunneling es el proceso de encapsular un paquete completo dentro de otro paquete y enviarlo sobre una red. El tunneling se utiliza cuando se quiere esconder la identidad del dispositivo que origina el tráfico. Lo que hace es encapsular el tráfico de los host que hay detrás de él modificando el encabezado de los datagramas IP de los mismos. De esta forma no solo se añade total confidencialidad al tráfico, sino que además esconde el origen de las conexiones. Muchas empresas ofrecen este servicio y es en el tunneling al que hace referencia en sus ofertas comerciales para la utilización de internet con privacidad.

 

Usando un servidor ssh propio para saltarse la censura de navegación de una forma sencilla:

Muchas veces se nos restringe el acceso a algún servicio/puerto ya sea porque las políticas de la red que estemos utilizando, por las limitaciones técnicas, firewalls, etc. También puede ser que hayamos viajado a algún país donde no este permitido el acceso a ciertas páginas como es el caso de  China  Wikipedia Lista de webs bloqueadas en China y muchos otros.

En este ejemplo vamos a ver lo fácil que es saltarse casi cualquier restricción en cuanto a conectividad una vez tenemos acceso ssh a una máquina. En este caso supondremos que hemos instalado un servidor ssh en nuestra casa, hemos configurado el router para abrir el puerto 443 y enrutarlo al 22 de nuestro servidor de ssh. ¿Porqué el 443? Bueno, este puerto está normalmente abierto ya que es la versión segura de http para la versión web (https) y no es tan evidente como el 80, otro puerto que sería muy raro que estuviese cerrado hacia afuera dentro de cualquier red. El caso es utilizar un puerto que normalmente no esté cerrado y esos dos son universales.

Normalmente al instalar el servidor ssh puede ser que nos pregunte o no las passphrases según la distribución linux que estemos utilizando.

En este caso vamos a generar nuestras propias claves privada y pública porque es una tarea recomendable el cambiarlas de vez en cuando.

ssh-keygen -t rsa

root@teamsec:~/.ssh$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/root/.ssh/id_rsa.
Your public key has been saved in /home/root/.ssh/id_rsa.pub.
The key fingerprint is:
a6:35:ef:c1:91:91:54:7e:eb:04:9b:8a:7e:fd:11:ec root@teamsec
The key’s randomart image is:

 

Vpnssh
Como no hemos introducido passphrase no genera una extraña imagen aleatoria, a partir de ella se genera la clave rsa

Ahora copiamos nuestra claves al directorio de claves de ssh para que las use como nuestra claves pública y privada.

cp id_rsa /etc/ssh_host_rsa_key
cp ida_rsa_pub /etc/ssh/ssh_host_rsa_key.pub

Una vez tenemos nuestro servidor ssh con sus claves, este ya puede iniciar el protocolo de comunicación cifrado.

Ahora, suponiendo que ya estamos en el extranjero, deseamos acceder a Facebook, pero por alguna razón el país donde estamos nos lo tiene prohibido, de hecho vamos a suponer también que la web de descarga del TorBoundle, nos es inaccesible, y no lo tenemos descargado. Así que vamos a crear un tunnel ssh que nos permitirá saltarnos esa restricción.

$ssh -p 443 -L 80:facebook.com:80 myhome.no-ip.org

Ahora abrimos el navegador y tecleamos en la barra de direcciones
http://localhost

Ya tendríamos acceso a Facebook, pero es engorroso si se quiere visitar más páginas.

Hilando más fino, usando nuestro propio proxy:

Hay 8 escenarios posibles de conexiones túneles ssh genialmente explicados por Vicent Navarro en su magnífico blog y de muy recomendable lectura.

Blog de Vicente Navarro, creando túneles tcpip, port forwarding con ssh, los 8 escenarios posibles usando openssh

Como no solo queremos entrar a Facebook,  vamos a decirle a nuestro tunnel que queremos conectarnos a un servicio de nuestros servidor ssh que nos deje navegar , en este caso usaremos privoxy, que tenemos instalamos en el servidor. Privoxy es  un proxy que corre en el puerto por defecto 8118 asi que ejecutamos:

ssh -p 443 -L 6666:localhost:8118 myhome.no-ip.org

Esto creará un tunnel contra el puerto 8118, que acepta peticiones de un navegador web, así que configuramos nuestro navegador en el puerto de escucha. (-L 6666 significa que nuestra máquina creará un tunnel ssh a través de ese puerto en local 6666, localhost:6666)
Ese será el proxy que debemos configurar en el navegador.
confignavegador
Recordar que se puede configurar privoxy para que utilice la red de TOR siempre y cuando hayamos añadido la linea correspondiente a su configuración. (forward-socks5 / 127.0.0.1:9050 .)

echo “forward-socks5 / 127.0.0.1:9050 .” >> /etc/privoxy/config

De esta forma, conseguimos dos cosas, evitar la censura y securizar la comunicación de el tráfico que generemos desde nuestra máquina hasta nuestra casa, ya que estará cifrado, haciendo muy difícil que se sepa que estamos haciendo a través de esa conexión, además virtualmente estaríamos visitando Facebook desde nuestra propia casa y desde nuestro país, porque así es como lo percibirían los servidores que visitemos de esta manera, excepto claro, si usamos la combinación tor+privoxy en nuestro servidor de ssh, para además añadir privacidad a nuestra navegación.

Como comentaba esta es una forma de portforwarding que funciona, sin utlizar socks y  sin complicadas configuraciones de enrutado de interfaces virtuales que nos exigiría un escenario de reenvío dinámico de puertos

Blog de Vicente Navarro, vpn con openssh

Pablo Martínez. TeamSec


Leave a Reply