Nuestro servidor de túneles siempre online (3ª Parte) icmp-tunnel y VPN PPTP

Siguiendo con esta serie de entradas hoy veremos una técnica más que hay que conocer (indispensable) y empezaremos con el tema de las VPNs... Creo que todo el mundo sabe que es una VPN pero por si acaso, vamos a refrescar conceptos (tirando de Wikipedia):
Una red privada virtual, RPV, o VPN de las siglas en inglés de Virtual Private Network, es una tecnología de red que permite una extensión "segura" de la red local (LAN) sobre una red pública o no controlada como Internet. Permite que la computadora en la red envíe y reciba datos sobre redes compartidas o públicas como si fuera una red privada con toda la funcionalidad, seguridad y políticas de gestión de una red privada. Esto se realiza estableciendo una conexión virtual punto a punto mediante el uso de conexiones dedicadas, cifrado o la combinación de ambos métodos.

La conexión VPN a través de Internet es técnicamente una unión wide area network (WAN) entre los sitios pero al usuario le parece como si fuera un enlace privado— de allí la designación "virtual private network".

ICMP TUNNELING 


Bueno una vez definido vamos a ver que es el ICMP-TUNNEL.
Mi router (el que me dió el proveedor) no me deja manejar el protocolo icmp (así que si me queréis regalar un microtik...). Con una configuración estándar, la de cualquier router casero, nuestras solicitudes hacia el servidor se "estamparían" contra la interfaz WAN y jamás pasarían a nuestra LAN y, desde luego, el software no permitiría el encaminamiento (por lo menos mi router) de estos paquetes hacia mi máquina y por lo tanto no habrá comunicación.

La solución que he encontrado es cambiarle el firmware restrictivo del proveedor por uno un poquito más configurable (en este caso un DLink que por churro es compatible 100% con mi Nucon y cuando acabe esta entrada probaré con un openWRT puesto que hay una versión 100% compatible con el firmware del DLink .....AVISO: Si lo hacéis en casa os podéis quedar sin router).

Tras este pequeño bache que surge a medida que escribo la entrada sólo queda configurar el nuevo software... Tras esto quedan dos opciones: colocar un router decente tras el "router" con su respectivo firewall o pinchar nuestro server a pelo (lo cual no es lo más recomendado en cuestiones de seguridad y a parte nos deja sin NAT). Encomendándonos a nuestro iptables......un padre nuestro y pa'lante... en la consola typeamos  inadyn para refrescar la ip en freedns. 
Una vez en disposición de recibir el protocolo ICMP, podemos seguir con la práctica. 

Vamos a utilizar la herramienta ptunnel la cual esta en los repos tanto de raspbian como debian,ubuntu.....etc

para instalarla :

apt-get install ptunnel

Una vez instalada tanto en el server como en el cliente pasamos a arrancar el server con el comando:

ptunnel -x password --daemon numero
Ésto, como reza nuestro terminal, pone el server esperando los paquetes del cliente en segundo plano.

En el lado del cliente crearemos el túnel de la siguiente forma:

ptunnel  -p Nuestro server  -lp cualquier puerto no usado   -da server queremos conectar -dp puerto de la aplicación -x password

Vamos a conectar con nuestra maquina server al servicio ssh por su propio túnel (podría ser otra máquina y otro tipo de servicio) lo que para nuestro ejemplo se traduce como:

 ptunnel -p hackpy.chickenkiller.com -lp 8888 -dl hackpy.chikenkiller.com -dp 22222 -x ratamoja

Y ya tan solo nos queda utilizar el túnel:
Aunque es una técnica conocidísima, por desgracia algunos administradores de redes cometen el fallo de no filtrar el tráfico ICMP, especialmente el “ping”, tanto desde la red DMZ como a los usuarios, e incluso permitir el tráfico ICMP en servidores internos. Debido a este fallo de configuración, un atacante podría emplear canales encubiertos en protocolo ICMP para realizar conexiones inversas o saltarse las restricciones y políticas de seguridad.
En la imagen podemos ver la conexión ssh hecha desde nuestro cliente a nuestro server camuflada...
 

VPN PPTP


PPTP (Point to Point Tunneling Protocol), es un protocolo de comunicaciones desarrollado por Microsoft, U.S. Robotics, para implementar redes privadas virtuales o VPN. PPTP permite el intercambio "seguro" de datos de un cliente a un servidor formando una Red Privada Virtual.

Las mayores ventajas de PPTP son su gran grado de estandarización y la facilidad que nos brinda a la hora de usarlo...eso nos hace todavía el pensar en utilizarlo a pesar de sus problemas de seguridad. Siempre y cuando la información que vayamos a utilizar no sea muy sensible.  Desde luego hay opciones más seguras, pero de implementación mas ardua o menos estandarizadas. PPTP sólo debe implementarse en entornos "legacy" como solución de compatibilidad y, por supuesto, tomando medidas de protección añadidas.

Vulnerabilidades de PPTP

La seguridad de PPTP fue completamente rota allá por el 2010. La utilidad ASLEAP pudo obtener claves de sesiones PPTP y descifrar el tráfico de la VPN. Podemos ver un ejemplo en el blog de el maligno y en la Defcon 2012 presentaron la herramienta Chapcrack capaz de romper la seguridad del protocolo PPTP y el cifrado WPA2 Enterprise.

El fallo de PPTP es causado por errores de diseño en la criptografía de los protocolos handshake LEAP de Cisco y MSCHAP-v2 de Microsoft y por las limitaciones de la longitud de la clave en MPPE.

No obstante podemos tomar medidas de protección básicas para hacerlo mucho menos vulnerable (ya lo veremos otro día). Este hecho junto con su velocidad, compatibilidad (nativo en la mayoría de dispositivos) y su fácil manejo, lo hace vigente hoy por hoy.

Montando nuestro servidor PPTP

NOTA: Lo primero que tenemos que hacer es, si hemos seguido la práctica anterior, dejar el router como estaba al principio, aunque lo ideal sería dejarlo con 'ppp ip extension' para no tener ningún tipo de problema con los puertos, aunque debemos saber que eso nos dejaría el router en modo "monopuesto".
Esto en una red casera sería poco práctico.

Antes de nada lo que haremos (para que luego no se me olvide) será abrir los puertos en el router. Necesitaremos tener abiertos el 1723 y el 47 y los redirigiremos mediante el portforwarding del router hacia nuestro servidor. Lo haremos bien por la interface gráfica del router o conectándonos por telnet al router : natp add pptp ppp0.1 TCP 1723:1723 1723:1723 192.168.1.133 y con el 47 haremos lo mismo.

Tras ésto comenzaremos con la instalación y configuración del servidor.

Instalaremos  la aplicación PPTPD en el server:

apt-get install pptpd

Para configurar adecuadamente el server deberemos editar 3 archivos

nano /etc/pptpd.conf 

Ahora descomentaremos y editaremos las siguientes lineas:


debug la descomentamos para recibir el log de los posibles fallos

noiparam
localip 192.168.1.133 descomentamos y sustituimos la ip de ejemplo por la ip local del servidor
remoteip 192.168.0.234-238,192.168.0.245 será el rango ip que se le asignara a los clientes. En mi caso 4.

Ahora editaremos  nano/etc/ppp/chap-secrects


Aquí añadiremos las credenciales de los clientes, por ejemplo:

manuel      *       12345     *

y por ultimo:

namo /etc/ppp/pptpd-options

y modificaremos las siguientes líneas:

name servidor-pptp el nombre del server
require-mschap-v2
require-mppe-128

ms-dns 8.8.8.8
debug


Antes de arrancar el demonio pptpd abriremos otro terminal en nuestra raspberry y con el fin de monitorizar el arranque del demonio y la autenticación de los clientes, typearemos:


tail -f /var/log/syslog

Ya estamos en disposición de rearrancar el servicio y monitorizarlo por si hubiese cualquier fallo.

service pptpd restart

Configuracion de IPTABLES

# Accept all packets via ppp* interfaces (for example, ppp0)
iptables -A INPUT -i ppp+ -j ACCEPT
iptables -A OUTPUT -o ppp+ -j ACCEPT

# Accept incoming connections to port 1723 (PPTP)
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

# Accept GRE packets
iptables -A INPUT -p 47 -j ACCEPT
iptables -A OUTPUT -p 47 -j ACCEPT

# Enable IP forwarding
iptables -F FORWARD
iptables -A FORWARD -j ACCEPT

# Enable NAT for eth0 и ppp* interfaces
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -o ppp+ -j MASQUERADE

Ya tan solo quedaría conectarnos desde nuestro dispositivo por ejemplo nuestro iphone, android u otro pc linux o windows...

Como acabamos de ver, ha sido facilísimo implementar pptpd en nuestro server el cual nos confiere un canal "seguro" para nuestras comunicaciones... y a la hora de conectarnos a redes inseguras es muy aconsejable echar mano de nuestra VPN (obligado).

Para los paranoicos veremos muy pronto como montar en nuestro servidor un servicio OPEN-VPN.

Bueno ya tenemos nuestra maquinita corriendo varios servicios de tunneling para securizar nuestras conexiones o evadir restricciones... aunque podríamos seguir añadiéndole unos cuantos mas.

Pero por hoy ya esta bien...

un saludo

Comentarios

  1. Muy bueno.

    Señalarte algunos pequeños errores de escritura como:
    secrects
    noiparam

    ¿Hasta cuándo va a llegar la serie? :)

    ResponderEliminar
    Respuestas
    1. poco queda ya...me cansado de mi router ;P ..me pedido un microtik para poder cacharrear en condiciones

      Eliminar
  2. COmo hacer una conexión VPN utilizando ICMP

    ResponderEliminar

Publicar un comentario