Configurando Wifi para invitados con DD-WRT

Esta semana me gustaría hablar de cómo configurar un punto wifi para invitados en nuestro router inalámbrico, de tal manera que podamos compartir nuestro acceso a Internet  sin comprometer la seguridad de nuestra red interna.

La infraestructura  de este ejemplo es una red privada con un direccionamiento 192.168.1.0/24 que está conectada a Internet por medio de un router wireless. Se quiere crear un punto de acceso de invitados (al que asignaremos otras ip’s privadas de tipo 172.16.1.0/24) , de tal forma que conecte a Internet por el mismo router pero sin acceder a la red 192.168.1.0/24.

Para realizar esta tarea vamos a emplear un router al cual le hemos instalado un firmware DD-WRT  (compilación king-kong) , debido a que éste tiene opciones más avanzadas, que nos van a permitir realizar esta y otras tareas.  También podríamos haber empleado cualquier otro dispositivo o firmware, pero éste es bastante amigable .  Antes de nada, comprobamos  (para implementar el firmware dd-wrt) si nuestro router es compatible , y si es así, descargamos una compilación que sea estable. Yo he elegido la King-Kong, aunque podemos elegir cualquier otra.  La tarea de instalar el firmware variará dependiente del modelo del dispositivo, y del firmware del que partamos, con lo cual no voy a entrar en detalles en este apartado. Una vez volcada la imagen, entramos via web a la ip de nuestro aparato, en este caso 192.168.1.1 y establecemos tanto el usuario como la contraseña de acceso.

image

A continuación  accedemos a la configuración Wireless (Setup—> Wireless—> Basic Settings). En esta pestaña vemos las interfaces físicas disponibles.  La interfaz wifi física va a establecerse como punto de acceso.

002

Asociado a nuestro adaptador físico (wl0), vamos a añadir uno virtual (wl0.1). Este último va a ser el que nos proporcione el acceso para invitados. Para añadirlo, simplemente pulsamos el botón “Add”. Aprovecharemos para cambiar el nombre de nuestras redes, al físico (wl0) lo asignaremos a la red interna que denominaremos “Internal” y al virtual (wl0.1 ) lo vamos nombrar como “Guest”. 

Lo siguiente va a ser introducir una clave para cada una de las redes indicadas. Es recomendable que la de invitados tenga también una contraseña.

004

Posteriormente creamos un bridge al cual vinculamos wl0.1, para realizar una separación. Hasta el momento, solamente hay un bridge (br0) que abarca todas las interfaces disponibles. Para crearlo en Setup -> Networking en la parte de Bridging , pulsamos el botón Add.

imageAsí, agregamos un bridge al que vamos a llamar br1. Es importante que cada vez que cambiemos algo, apliquemos la configuración y la guardemos, porque sino es muy posible que no reconozca los cambios que  hacemos.

image

A br1 le adjudicamos la interfaz virtual wl0.1. Así, en la parte “Assign to Bridge” asignamos br1 a wl0.1 y le establecemos la dirección 172.16.1.1 con máscara 255.255.255.0

Incorporamos un dhcp para el bridge br1 pulsado el botón Add y seleccionamos el bridge br1

image

Una vez añadido el DHCP y asignado a nuestro bridge br1 podemos ver que ha establecido un rango de asignación de direcciones ip estableciendo como base la ip del bridge.

Por último, lo que tendremos que hacer es incorporar una serie de reglas en nuestro firewall, de tal manera que todo el tráfico que vaya a nuestra red local (192.168.1.0/24) sea  denegado y no se permita ningún tipo de acceso a nuestro router por telnet, ssh y web.

iptables -I FORWARD -i br1 -d 192.168.1.0/24 -j DROP
iptables -I INPUT -i br1 -p tcp –dport telnet -j REJECT –reject-with tcp-reset
iptables -I INPUT -i br1 -p tcp –dport ssh -j REJECT –reject-with tcp-reset
iptables -I INPUT -i br1 -p tcp –dport www -j REJECT –reject-with tcp-reset
iptables -I INPUT -i br1 -p tcp –dport https -j REJECT –reject-with tcp-reset

NOTA Update: Estas políticas que he aplicado en principio permiten todo por defecto y bloquean algo específico, pero tiene más sentido bloquear por defecto y permitir sólo aquello que necesitemos (tal y como nos comenta David Rodriguez).

Guardamos esta información en el firewall del router (Administration –> Commands) pusaldo el botón “Save Firewall”.

Lo último que nos quedaría por hacer sería conectarnos a nuestra red wifi de invitados y comprobar que tenemos acceso a Internet y si intentamos alcanzar por cualquier medio la red 192.168.1.x , no  lo permitirá.  Y con este apunto me despido. Hasta el próximo post!!!

0 pensamientos en “Configurando Wifi para invitados con DD-WRT”

  1. Hola,

    Solo una cosa, 172.168.1.0/24 no esta reservada como una red privada, son IP publicas que existen por internet. Imagino que querrías asignar 172.16.0.1 (personalmente, yo la tengo desplegada en 192.168.2.0/24, aunque por una larga historia ni siquiera tengo dd-wrt, ahora estoy con TomatoRAF)

    Adicionalmente, posiblemente sea mejor idea para las conexiones de la red de invitados, envez de permitir por defecto y bloquear esos protocolos, bloquear por defecto y permitir solo aquello que nos interesa. Es decir, en vez de:
    iptables -I INPUT -i br1 -p tcp –dport telnet -j REJECT –reject-with tcp-reset
    iptables -I INPUT -i br1 -p tcp –dport ssh -j REJECT –reject-with tcp-reset
    iptables -I INPUT -i br1 -p tcp –dport www -j REJECT –reject-with tcp-reset
    iptables -I INPUT -i br1 -p tcp –dport https -j REJECT –reject-with tcp-reset

    Yo lo cambiaría por:
    iptables -I Input -i br1 -m state –state NEW -j DROP

    Y luego aceptaría DHCP (si hace falta, que lo mas posible es que si)
    iptables -I INPUT -i br1 -p udp –dport 67 -j ACCEPT

    Y si el router sirve DNS (depende de la configuración):
    iptables -I INPUT -i br1 -p udp –dport 53 -j ACCEPT
    iptables -I INPUT -i br1 -p tcp –dport 53 -j ACCEPT

    (No prometo no haber cometido algun error en los comandos de iptables)

    No es que haya mucha diferencia en un dd-wrt por defecto, depende un poco de lo que toque la gente

    1. Hola David,
      gracias por la corrección, acabo de cambiar lo de las direcciones ip. Era un error de tipografía, me ha bailado un número.
      En cuanto a lo que comentas sobre las reglas del firewall de permitir sólo aquello que sea necesario, me parece más correcto. Muchas gracias por la aportación 😀

  2. Definitivamente hay un error en mi comando anterior:
    iptables -I Input -i br1 -m state –state NEW -j DROP
    Tiene que ser:
    iptables -I INPUT-i br1 -m state –state NEW -j DROP

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *