miércoles, 15 de febrero de 2017

Control de acceso al DHCP en router WIFI usando el firmware dd-wrt



En este pequeño articulo muestro como limitar la conexión al DHCP de un router WIFI TP-Link TL-WR1043ND. 

El problema era el siguiente: Tenia q agregar un Punto de Acceso WIFI en mi red local; dicha red local cuenta con un server DHCP y no quería que las PC de la red local contactaran el DHCP del AP WIFI. Las razones pueden ser varias, en mi caso el DHCP de la LAN entrega un rango ip en una subred y el DHCP del AP en otra; por supuesto como no hay una VLAN pasa lo que no debía. 

Pero al grano. Existe un proyecto maravilloso que provee una distribución Linux empotrada para router WIFI (http://www.dd-wrt.com/). Este firmware provee características avanzadas a los router WIFI soportados, como por ejemplo la posibilidad de escribir reglas IPTABLES.

Como casi todos los router WIFI, este soporta un filtro MAC para establecer las MAC de los dispositivos que pueden conectarse.

Por suerte las direcciones MAC establecidas en el filtro se guardan en /tmp/ath0_accept
Por tanto, mi solución al problema consistió en modificar el firewall del router para solo permitir tráfico de entrada a los dispositivos listado en el filtro MAC.

El script iptables que escribi fue el siguiente.

#!/bin/sh

# Borrando las reglas previas
iptables -F
iptables -X
iptables -Z

# Estableciendo políticas, DROP por defecto para las INPUT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT

insmod xt_mac
insmod ipt_mac

# En /tmp/ath0_accept estan las mac del filtro mac q tienen acceso al ap
# Debe incluirse tambien la mac de la pc q podran administrar el ap

for dirfisica in $( cat /tmp/ath0_accept )
do
iptables -I INPUT -m mac --mac-source $dirfisica -j ACCEPT
done

Luego de acceder a la consola web de administración del router, vamos a Administración -> Diagnósticos y pegamos el código del script en la caja de comandos, luego hacer click en el botón “Guardar Firewall”. Este script se ejecutara la próxima vez que reiniciemos el router. 

Despues de esto podemos acceder via SSH al router y comprobar escribiendo nvram get rc_firewall, también podemos escribir iptables -L -n para ver las reglas iptables aplicadas.

Finalmente cabe mensionar que cada vez que ingresemos una MAC nueva en el filtro MAC se debe reiniciar el router o de alguna manera ejecutar nuevamente el script para que la nueva MAC pueda acceder…