Dnsmasq y ip forwarding – Crea un acces point con esquema MITM

El esquema seria el siguiente:

esquema

La idea es utilizar un router para crear un punto de acceso wifi, y utilizar tu ordenador, o RPI, conectada vía wifi a internet para dar conexión  a internet a los usuarios conectados al router.

Se que hay maneras automatizadas y mas evolucionadas de hacer esto. Se podría por ejemplo, substituir el router por una red ad-hoc creada con una segunda antena wifi en tu ordenador. Hay scripts que te automatizan todo este proceso, pero la idea es ver exactamente como funcionaria.

El hecho, es que es un esquema MITM completo, y que todos los datos pasan por ti…

Bien, empecemos:

Tendremos que tener instalado el dnsmasq. Si usamos raspberry podemos también instalar el wicd, un gestor de conexiones que tiene aplicación por consola, es muy útil si tienes que conectarte a la wifi y solo tienes acceso por shell…:

sudo apt-get install dnsmasq wicd wicd-curses

Lo primero será configurar nuestra tarjeta ethernet con una IP estática. Para ello iremos a /etc/network/interfaces y la configuraremos:

iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.1

También podríamos usar los comandos si no queremos que se automatice al inicio del sistema:

sudo ifconfig eth0 down
sudo ifconfig eth0 up 192.168.0.1 netmask 255.255.255.0

También tendremos que inhabilitar el gestor de conexiones, para que no cree conflictos. Si lo queremos desactivar del inicio también podemos usar el segundo comando:

sudo service network-manager stop
sudo update-rc.d network-manager disable

Ahora podríamos conectarnos a la wifi usando el wicd.
Una vez llegados a este punto, puede que todavía no tengamos conexión a internet. Esto puede ser debido a que el Gateway no este bien configurado. Es decir que el Gateway apunte a la red en la que tenemos el ethernet (que va a un router sin salida a internet) y no a la red wifi a la que estamos conectados. Para comprobarlo podemos usar el comando route, que nos muestra las rutas y redes que tenemos. Si vemos que el default gateway esta en eth0 simplemente tenemos que escribir lo siguiente para substituirlos:

sudo route del default gw <IP gateway eth0>
sudo route add default gw <IP gateway wlan0>

Ahora pasaremos a la configuración del dnsmasq. El archivo de configuración está en: /etc/dnsmasq.conf . Dnsmasq es un servidor DNS y DHCP, dará las IP a los ordenadores que se conecten al router. A todo esto, el router debe tener desactivado su DCHP, y tiene que tener apuntando su gateway por defecto a la ip de nuestro eth0. El router también debe tener una ip dentro de la red que hemos configurado en eth0. La configuración de dnsmasq es la siguiente:

listen-address=192.168.0.1,127.0.0.1 # Ip que tenemos en eth0
interface=eth0
dhcp-range=192.168.0.100,192.168.0.150,255.255.255.0,12h
log-dhcp
dhcp-authoritative

Ahora podemos iniciar dnsmasq con el siguiente comando:

dnsmasq -a 192.168.0.1 -d -i eth0 -z -C /etc/dnsmasq.conf -I lo

Podemos ver un log de las ip y las mac que ha gestionado el programilla en /var/lib/misc/dnsmasq.leases.

A partir de este momento, nosotros deberíamos tener salida a internet a través de wlan0, y deberíamos ser capaces de dar IP a los usuarios del router que tenemos conectado a eth0.

Ahora tenemos que conseguir que los paquetes que nos llegan a través de eth0 sean redirigidos a wlan0. Esto lo haremos usando Iptables. Primero debemos activar el forwarding:

sysctl net.ipv4.ip_forward=1
o
echo 1 > /proc/sys/net/ipv4/ip_forward

Una vez esto, realizamos crearemos la norma de IpTables:

iptables -t nat -A POSTROUTING -j MASQUERADE -o wlan0

Esta norma redirigirá todo el trafico entrante y saliente de eth0 hacia wlan0.

El siguiente script automatizaría el proceso:
#!/bin/bash
ifconfig eth0 down
ifconfig eth0 up 192.168.45.1 netmask 255.255.255.0
service dnsmasq stop
sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -j MASQUERADE -o wlan0
dnsmasq -a 192.168.45.1 -d -i eth0 -z -C /etc/dnsmasq.conf -I lo

This entry was posted in Hacking, linux. Bookmark the permalink.