Por defecto el router tiene todos los puertos cerrados, si queremos dar acceso a algún puerto o redirigir la conexión de un puerto del router hacia un puerto de una de nuestra maquinas tenemos que configurar el firewall. Desde el interface Web podemos realizar esta tarea, pero si queremos algo un poco más potente podemos usar el fichero post-firewall para añadir las que nos interesen de forma manual.
Atención con lo que haces que puedes conseguir que el router se comporte de forma extraña.
Parámetros
El fichero post-firewall recibe una seri de parametros para crea nuestras reglas
- $1 – Interface WAN – La tarjeta por la que se conecta a Internet
- $2 – ip WAN – La ip de Internet
- $3 – Interface LAN – La tarjeta con la que se conecta a tu red
- $4 – ip LAN – La ip del router en la red
Definición Básica
El fichero post firewall tiene una cabecera y un fin comunes y que son siempre iguales.
#!/bin/sh
iptables -D INPUT -j DROP
#Aquí van las reglasiptables -A INPUT -j DROP
La primera linea indica que es un fichero ejecutable con sh.
La primera regla DROP elimina todas las reglas existentes.La ultima regla DROP elimina el resto de conexiones posibles. Entre estas dos reglas DROP se escriben las reglas de filtrado y prerouting que nos interesen. Estas pueden ser de dos tipos:
Reglas ACCEPT
Estas reglas abren un puerto concreto en el router. Se escriben de la siguiente manera (Los textos entre corchetes[ ] son los valores a sustituir).
iptables -A INPUT -p [tipo conexión] --dport [Nº puerto] -j ACCEPT
- Tipo de conexión es el protocolo a abrir puede ser tcp o udp
- Nº de puerto es el numero de puerto a abrir
Por ejemplo para abrir el puerto de SSH que es el 22 la regla seria la siguiente
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Reglas de PREROUTING o NAT
Estas reglas permiten dirigir la conexión de un puerto abierto a otra dirección ip y otro puerto concreto. Las reglas tiene la siguiente estructura:
iptables -t nat -A PREROUTING -i [Interface origen] -p [tipo de conexión] --dport [puerto origen] -j DNAT --to-destination [ip destino]:[puerto destino]
- Interface origen es interface del dispositivo por el que entra la conexión
- Tipo de conexión es el protocolo a abrir puede ser tcp o udp
- Nº de puerto origen es el numero de puerto abierto por el que entra la conexión
- IP destino Es la dirección ip de la maquina a la que enviaremos la conexión
- Nº de puerto destino es el numero de puerto al que dirigir la conexión
Por ejemplo para abrir el puerto de SSH que es el 22 la regla seria la siguiente
iptables -t nat -A PREROUTING -i $1 -p tcp --dport 22 -j DNAT --to-destination $4:22
Como se puede ver tanto el interface de origen como la ip de destino se han sustituido por las variables disponibles correspondientes al interface WAN y la IP de la LAN.
De esta forma el fichero quedara de la siguiente forma para abrir el puerto 22 en el firewall y redirigir el trafico al servidor ssh del router:
#!/bin/sh iptables -D INPUT -j DROP iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -t nat -A PREROUTING -i $1 -p tcp --dport 22 -j DNAT --to-destination $4:22 iptables -A INPUT -j DROP
Una vez finalizado tenemos que salvar y reiniciar
flashfs save && flashfs commit && flashfs enable && reboot
