Los routers Teltonika disponen de un potente firewall como uno de los módulos de su sistema operativo RutOS basado en OpenWRT. Este firewall se articula a través de una serie de reglas de tráfico o ‘traffic rules’ que podemos ir creando y configurando para filtrar y/o permitir diferentes tipos de tráfico tanto de entrada al router, como de salida del router como hacia o desde el propio router.
La configuración de estas reglas se realiza a través del menú NETWORK – FIREWALL – TRAFFIC RULES. Cuando accedemos por primera vez a este menú vemos ya creadas unas reglas, algunas habilitadas y otras no, que corresponden a tráficos específicos ya preconfigurados en el router.
Cada regla en el listado dispone de una serie de campos:
- NAME: nombre de la regla. Es un nombre indicativo. Se recomienda usar nombres que faciliten la identificación del funcionamiento de la regla
- MATCH: define los parámetros de la regla que a su vez definen el funcionamiento de dicha regla (ver apartado siguiente)
- ACTION: define la acción de la regla que puede ser básicamente la de descartar el paquete (Drop), aceptar el paquete (Accept), Reject (rechazar el paquete notificándolo al origen), Don’t track (no actuar). Drop y Accept son las más comunes.
Al final tenemos un botón para habilitar o deshabilitar la regla, editar la regla y borrar la regla. Siempre que hagamos algún cambio deberemos pinchar sobre SAVE & APPLY al final de la página.
A modo de ejemplo, si nos fijamos en la segunda regla de la figura vemos que esta regla permite que el router acepte los paquetes ICMP tipo Ping desde cualquier host en la WAN y que vayan dirigidos al propio router.
Parámetros de una regla (MATCH)
Cuando editamos una regla podemos configurar el detalle del funcionamiento de la misma. En la siguiente captura mostramos los parámetros de la regla anterior que permite hacer ping al router desde la interfaz WAN.
Los parámetros más importantes son:
- Protocol: define el protocolo del paquete al que se aplica la regla (ICMP, TCP, UDP o TCP/UDP)
- Source and Destination Zone: como su nombre indica es la zona de origen y destino del paquete. La regla sólo se aplicará a los paquetes que vegan de la Source zone y vayan con destino a la Destination Zone. En el router hay básicamente tres zonas: WAN (cualquiera de los interfaces que conecta el router con Internet), LAN (los dispositivos conectados a la LAN del router) e INPUT (el propio router). También podemos tener otras zonas específicas como OpenVPN si hemos creado una VPN con este protocolo o LA2/LAN3 si hemos creado otras lans en el router.
- Source and Destination IP: indica la dirección IP o rango de direcciones IP (incluyendo máscara) tanto de origen como de destino del paquete al que aplicaremos la regla. Ejemplos claros serían el limitar la salida a Internet únicamente a la dirección IP de un servidor cloud para el envío de medidas o bien restringir el acceso remoto al router y/o a los equipos detrás de él desde un rango de direcciones públicas pertenecientes a la empresa de mantenimiento de la instalación.
- Source and Destination MAC address: en aquellos casos en que determinados hosts puedan tener activado DCHP y cambiar de IP podemos restringir o permitir el acceso únicamente a estos equipos a través de su dirección MAC
- Action: como dijimos antes es la acción que se aplica al paquete cuando todos los condicionantes anteriores se cumplen. Drop para descartar un paquete o Accept para aceptar un paquete
Al final disponemos también de unos filtros temporales en el supuesto de que quisiéramos aplicar esta regla únicamente durante un intervalo de tiempo. Por defecto las reglas son permanentes y se aplican siempre.
¿Cómo se ejecutan las reglas de tráfico?
Para saber cómo configurar el firewall del router a través de las reglas de tráfico debemos entender primero cómo las interpreta el router. Y en este sentido, el orden de las reglas es primordial.
Cuando un paquete llega al router a través de cualquiera de sus zonas (WAN, LAN o INPUT) el firewall lo intercepta y lo compara con el listado de reglas empezando por la primera (la de posición superior en las páginas del interfaz web).
Si el paquete encaja en la regla porque cumple con el protocolo, zonas origen y destino, dirección(es) IP origen y destino y MAC origen y destino entonces se realiza la acción que indica la regla (drop o accept) y el firewall deja de funcionar sobre este paquete no pasando a comparar ni ejecutar las reglas siguientes.
Si el paquete no encaja en alguno de estos parámetros, el firewall pasa a la siguiente regla y así sucesivamente hasta que encaje y se ignoren las reglas posteriores. Si el paquete no encaja con ninguna de las reglas del firewall se deja pasar.
En base al comportamiento anterior debemos tener en cuenta que las reglas más específicas deben siempre colocarse primero y las más genéricas después. Veamos un par de ejemplos:
Si queremos limitar el acceso remoto al router únicamente desde la IP pública 10.10.10.10 entonces tendremos que crear dos nuevas reglas en el firewall desde la zona wan a la zona input. Una primera que haga un ‘accept’ desde la IP 10.10.10.10 y a continuación una que haga ‘drop’ desde todas las direcciones IP (0.0.0.0 máscara 0.0.0.0). De esta forma cuando un paquete llega desde la 10.10.10.10 hacia la IP del router, encaja en la primera regla y se acepta. Si llega desde otra IP origen no encaja en la primera regla y se pasa a la segunda donde si encaja y por tanto se descarta.
Exactamente el mismo ejemplo de reglas podríamos crear para limitar el acceso a Internet de los equipos conectados al router únicamente a la dirección IP de un servidor cloud para el envío de medidas. En este caso también definiríamos dos reglas, en este caso con source zone lan y destination zone wan. En la primera haríamos un ‘accept’ para la IP del servidor cloud y en la segunda haríamos un ‘drop’ para todas las direcciones IP.
En base al concepto anterior podríamos decir que si queremos un firewall poco restrictivo deberíamos crear reglas de ‘drop’ específicas que colocaríamos al principio. Este sería el ejemplo para limitar el acceso de los usuarios a ciertas webs o direcciones IP. Por el contrario, si queremos un firewall muy restrictivo deberíamos crear un ‘drop’ genérico y por encima de esta reglas crear las excepciones a este bloqueo general como hemos explicado en los dos ejemplos anteriores.
Hay que tener cuidado cuando creamos reglas muy restrictivas especialmente si las creamos de forma remota. Podemos bloquear totalmente el acceso al router.
¿Cómo añadir y luego mover y ordenar las reglas?
Para crear una nueva regla iremos a la parte inferior de la página en ADD NEW INSTANCE. Tenemos dos tipos de reglas predefinidas: Opens ports on router como su nombre indica permite abrir un puerto o rango de puertos en la interfaz WAN del router. Debemos crear estas reglas cuando hacemos algún port forward en el router de un puerto no incluido en alguna otra regla, por ejemplo, redireccionar tráfico Modbus TCP en el puerto 502 o crear un TCP server para el puerto serie en el puerto 10001, por ejemplo. El segundo tipo de regla Add new forward rule es el que usaremos de forma genérica para añadir una regla de filtrado al firewall
Una vez creada la regla debemos editar su configuración para ajustarla a nuestras necesidades. Esta regla quedará la última de la lista. Para moverla al inicio en caso de ser específica como comentamos anteriormente debemos pinchar sobre la cruz ‘+’ en la parte izquierda de la regla y moverla al lugar deseado. Si no funciona correctamente probad a borrar la caché del navegador o probad con una sesión de incógnito en el navegador. Si tampoco funcionara de esta manera existe también una forma manual de hacer el reordenamiento que es modificando el fichero de texto interno del router con las reglas.
Para ello lo más fácil es descargarse el sotfware WinSCP y una vez instalado en nuestro ordenador lanzar una sesión SCP hacia el router (si la lanzáis al puerto WAN aseguraros que habéis habilitado anteriormente el Remote SSH Access en el puerto 22. Debéis entrar el usuario ‘root’ y el password de acceso al servidor web.
A continuación navegar al directorio /etc/config y transferir el fichero firewall a nuestro ordenador
Este fichero puede abrirse con cualquier editor de texto y contiene toda la configuración del firewall. A continuación mostramos las dos primeras reglas
config rule
option name ‘Allow-DHCP-Renew’
option src ‘wan’
option proto ‘udp’
option dest_port ’68’
option target ‘ACCEPT’
option family ‘ipv4’
config rule
option name ‘Allow-Ping’
option src ‘wan’
option proto ‘icmp’
option icmp_type ‘echo-request’
option family ‘ipv4’
option target ‘ACCEPT’
basta mover el texto de las reglas que queramos ordenar mediante un cortar y pegar. A continuación transferiremos de nuevo el fichero a la carpeta etc/config del router y reiniciaremos el router para que los cambios tengan efecto. Si a continuación entramos en la interfaz web del router veremos como las reglas han quedado correctamente ordenadas.
Port forwards y NAT rules
Dentro de la configuración del firewall tenemos otros dos apartados. PORT FORWARDS nos permite redirigir los puertos en el router hacia otros puertos en los dispositivos detrás del router. Recordad que, aparte de crear la redirección, es necesario luego abrir el puerto creando una regla de ‘Open ports on router’ como vimos anteriormente en este artículo.
Finalmente el apartado NAT RULES permite crear reglas de Source NAT o SNAT en las que sustituimos la dirección IP origen del paquete recibido por otra. Uno de los usos podría ser para habilitar el acceso a dispositivos conectados a la LAN del router que no tengan configurado o bien configurado el gateway de salida sustituyendo para el tráfico entrante por la WAN la dirección IP pública de origen con la dirección IP LAN del propio router. Este mecanismos de SNAT lo explicamos en este artículo.
Las reglas de Destination NAT o DNAT ya son directamente las reglas del apartado PORT FORWARDS ya que estamos sustituyendo para el tráfico entrante de la WAN la dirección IP pública del router con la dirección IP del dispositivo conectado a la LAN al que queremos redirigir el paquete.