domingo, 5 de octubre de 2014

Cómo montar nuestro propio servidor de tuneles siempre online (1ª parte)


Se conoce como túnel o tunneling a la técnica que consiste en encapsular unprotocolo de red sobre otro (protocolo de red encapsulador) creando un túnel de información dentro de una red de computadoras. La técnica de tunelizarse suele utilizar para trasportar un protocolo determinado a través de una red que, en condiciones normales, no lo aceptaría. Otro uso de la tunelización de protocolos es la creación de diversos tipos de redes privadas virtuales.


El tunneling puede ser usado también para circunvalar un cortafuegos

A más de uno nos ha hecho falta alguna que otra vez un túnel, ya pudiera ser SSH, DNS, ICMP o HTTP, bien fuese para securizar conexiones o saltarnos alguna que otra restricción...por no decir lo bien que nos puede venir tener este tipo de server montado a la hora de auditar redes.

En esta serie de posts vamos a montarnos nuestro propio proveedor de estos servicios el cual estará siempre dispuesto a echarnos una mano.

Vamos a abordar diferentes técnicas de tunneling (aunque no todas) y veremos para qué sirven, veremos cómo podemos hacer un 'wake on wan' para solo tener el server funcionando cuando lo necesitemos. Y también veremos como podemos lidiar con el problema de que nuestra ip no sea fija...


Para nuestro propósito echaremos mano de nuestra querida raspberry pi y el sistema operativo whezzy-raspbian (aunque bien pudiera ser un server normal con debianinstalado y quizás he optado por raspberry dado su bajo consumo y porque recientemente a caído una en mis manos ....os vais a hartar!!).

A lo que nos ocupa...



CREANDO UN SUBDOMINIO 


Lo primero que tenemos que hacer con el fin de encontrar nuestro server entre esta selva de hosts que es Internet y como requisito para algún servicio de nuestro servidor, es hacer que el nombre de un subdominio apunte a nuestra ip-publica. Esto podemos conseguirlo de distintas formas pero quizás la más simple y económica (totalmente gratis) sea registrarnos en  http://freedns.afraid.org: 












Una vez registrados iremos ala sección subdominios y generaremos dos entradas nuevas.  











Por ejemplo :
                                        
hackpy.chikenkiller.com A <tu ip puplica>  

   dns4hackpy.chikenkiller.com NS hackpy.chikenkiller.com
  (hackpy y dns4hackpy es sustituible por cualquier cosa)


NOTA: para saber nuestra ip-publica desde la consola typear :

apt-get install curl 
curl ipinfo.io

Tras guardar, tan solo nos queda esperar que nuestro dominio se propague  por el mundo... mientras esto ocurre seguro que una duda asalta vuestra  mente... ¿Y qué pasará cuando mi proveedor de Internet me cambie la ip?

Tranquilo chato tenemos una solución (hay unas cuantas)... volvemos a nuestra raspberry e instalamos Inadyn

DNS-DINAMICO


Inadyn es un cliente de actualización escrito en C que actualiza registros DNS. Lo que hará sera comprobar nuestra ip publica y cuando cambie actualizara el registro defreedns.afraid.org.

Para instalarlo:

apt-get install inadyn

Para configurarlo crearemos el archivo /etc/inadin.conf y escribiremos lo siguiente en su interior.

nano inadyn.conf

--username tu_username 
--password tu_pass 
--update_period 60000 
--forced_update_period 320000
--alias tudominio.chikenkiller.com,Tu token
 --background 
--dyndns_system default@freedns.afraid.org 
--log_file /var/log/inadyn.log
--syslog# /etc/inadyn.conf 

Para conseguir nuestro numero token debemos ir a la sección dinamic-dns y pinchar enwgetscript.


Bajamos  el archivo y lo abrimos con un editor de texto y vemos nuestro token el cual pondremos en el archivo de configuración de inadyn.conf
Podemos comprobar que todo esta donde debe estar:

inadyn
nano /var/log/inadyn.log


Ya tan solo nos queda que inadyn haga la comprobación; y si ha cambiado nuestra ip la actualice automáticamente en freedns.afraid.org.
Para ello añadiremos la siguiente linea a nuestro crontab mediante el comando:

nano /etc/crontab
 15 10   * * *   root    /usr/sbin/inadyn
Esto lo que hará sera comprobar y actualizar nuestra ip freedns.afraid.org todos los dias a las 10:15.

Pues ya hizimos la parte mas dura...hemos conseguido poder acceder a nuestro server con nuestro nombre de dominio, es hora de que le hagamos un ping....

ping  hackpy.chikenkiller.com


MONTANDO NUESTRO SERVICIO DNS-TUNNEL



Llegado este punto vamos a empezar a incluir servicios en nuestro pequeño servidor . El primero de estos sera el dns-tunnel.

No vamos a entrar en materia a cerca de que es y para que sirve el protocolo DNS lo doy por asumido , más adelante escribiré un articulo sobre el bastionado de este protocolo en el cual seré mucho mas extenso, dada su importancia crítica me parece muy interesante >:D.

Bueno la idea general es a groso modo: El cliente encapsulará el trafico IP en el protocoloDNS y lo dirigirá a un falso servidor DNS (el nuestro) el cual desencapsulará dicho tráfico y responderá al cliente de la misma forma, haciendo "transparente" dicha comunicación al IDS,IPS (algunos). 

Dada que esta técnica no es nueva y ampliamente conocida no siempre tiene éxito por si sola, no esperéis metérsela a algún famoso proveedor de Internet que no colará...aunque en su tiempo coló. Por el contrario algunos administradores de red pasan por alto esta posibilidad de comunicación (os sorprendería cuantos) lo cual hace las delicias de algunos avispados que logran navegar sin pagar, saltarse el firewall corporativo, pasarse por el forro el hot spot etc, etc, como ya vimos en un articulo de hackplayers.

Bueno al turrón!!!

Para este menester haremos uso de la famosa herramienta iodine la cual esta en los repos y su configuración y manejo la hacen ideal para nuestros propositos.
 

INSTALACION Y CONFIGURACION DE IODINE


En la consola y como root de nuestra raspberry (o cualquier sistema debian o derivado..).

apt-get install iodine

Luego pasaremos a editar su fichero de configuracion de la siguiente forma:

 # Default settings for iodine. This file is sourced from
# /etc/init.d/iodined
START_IODINED="true"
IODINED_ARGS="10.0.0.1  dns4hackpy.chikenkiller.com"
IODINED_PASSWORD="un password para la comunicacion"

Guardamos y tipeamos los siguientes comandos:

 echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A POSTROUTING -t nat -s 10.0.0.0/24 -o eth0 -j MASQUERADE
(Suponiendo que eth0 es nuestra interfaz de salida a internet) 

/etc/init.d/iodined restart 

ya tenemos el servicio corriendo!!

UPS!!! se me olvidaba.... ni que decir tiene que para que esto funcione deberemos tener el puerto UDP 53 abierto en nuestro router...y podemos proteger el servicio de gente indiscreta aparte de con la< contraseña de marras...con Latch como ya vimos en esta entrada..

Para conectarse el cliente:


 iodine -f dns4hackpy.chikenkiller.com

 
ahora para poder navegar libremente deberemos enrutar el tráfico...



ENRUTADO DEL TRAFICO DEL CLIENTE


Una vez arrancado ionine ejecutaremos el comando route para ver nuestra tabla de rutas:

route 









Lo que haremos a continuación sera cambiar nuestro GW por la ip pública del servidor (podemos hacernos un script con estas lineas para que sea mas cómodo y llamarlo por ejemplo route-dns-tunel.sh)

 route add -host la ip publica del server gw 10.0.0.1
 route del default 192.168.1.1
  route add default gw 10.0.0.1

y ya podremos navegar mediante nuestro DNS-Tunnel!!!










En la siguiente captura veremos a nuestro ordenador navegando por DNS-TUNNEL; como antes he dicho, canta muchísimo esta técnica y se detecta fácilmente...aunque hay formas de mitigar y llegar a camuflar bastante mas este tipo de trafico..


Hasta aquí por hoy  ...los emplazo a una segunda entrada donde seguiremos viendo el tema del tunneling..

Espero haber sido de ayuda.

No hay comentarios:

Publicar un comentario