Un firewall es un sistema o un dispositivo de seguridad de la red, que nos permite controlar el tráfico que entra y sale de la red en base a unas reglas establecidas. Este hace de barrera entre la red interna segura (LAN) y la red externa insegura (WAN). Resumiendo, el firewall filtra el tráfico entre dos o más redes interconectadas entre sí.
Todos los router que gestionan el tráfico entre redes, disponen de un firewall, y en algunos firewalls se pueden configurar túneles (VPN), asignar por DHCP direcciones, etc.
Actualmente los firewalls sin indispensables en una conexión a internet, como medida de protección antes posibles ataques he intrusiones.
¿Cómo funciona un firewall?
Los firewalls funcionan operando con dos reglas:
- The matcher: Todas las condiciones establecidas tienen que ser verificadas y deben coincidir, para poder aplicar la acción.
- The Action: Una vez que todos los parámetros coinciden y pasa la primera verificación, se procede con la acción.
En el matchet se analizan y comparan lo siguientes parámetros:
- Source MAC address (dirección MAC origen)
- IP addresses (network o list) y address types (broadcast, local, multicast, unicast)
- Port (puerto) o port range (rango de puertos)
- Protocol
- Protocol options (ICMP type y code fields, TCP flags, IP options)
- Interface por donde el paquete llega o sale
- DSCP byte
- Etc.
RouterOS puede filtrar por:
- Dirección IP, rango de direcciones, puerto, rango de puertos
- Protocolo IP, DSCP y otros parámetros
- Soporta Listas de Direcciones estáticas y Dinámicas
- Puede hacer match de paquetes por patrón en su contenido, especificado en Expresiones Regulares, conocido como Layer 7 matching
RouterOS cuenta con una tabla RAW en /ip firewall permite hacer un bypass de forma selectiva, o dropear los paquetes antes del connection-tracking. esto nos ayuda a reducir la carga del CPU. Esta herramienta es sumamente útil en la mitigación de ataques DDoS.
Estados de las Conexiones (connection-state)
Cuando se establece una conexión, el primer paquete será “nuevo” y el resto de paquetes de esa conexión se pueden aceptar como establecidos, si no se alcanza el valor UDP-timeout.
- New: es el primer paquete UDP, TCP que pasa en la sincronización de paquetes del firewall.
- Established: Cuando pasan el resto de paquetes UDP o TCP por la conexión establecida después de nuevo.
- Related: Cuando se crea una conexión basada en una ya existente.
- Invalid: Paquete TCP inválido o no relacionado con el conection-traking.

Chains y acciones
Un chain: es una agrupación de reglas basado en los mismos criterios. Existen tres chains predeterminados en función de criterios predefinidos.
- input: El tráfico que va al router
- forward: El tráfico que va a través del router
- output: El tráfico procedente del router

Se pueden usar chain para realizar un salto o “jump” hacia otra regla una vez confirmada la coincidencia, Esto se define como “jump target”.
En el firewall los paquetes se analizan de forma secuencial a través de las reglas establecidas.
Filtrado Firewall en acción
Una vez realizada la concidencia (match) con todos los parámetros de una regla, entonces se realizará una acción (action). El firewall de MikroTik tiene las siguientes acciones:
- accept: Acepta el paquete. El Paquete ya no pasará a la siguiente regla de firewall.
- add-dst-to-address-list: Agrega la dirección de destino al Addess-list especificado.
- add-src-to-address-list: Agrega la dirección de origen al Addess-list especificado.
- drop: el paquete es desechado.
- jump: Es definido por el usuario y sirve para saltar a una regla en específico, definido por el jump-target. Después de hacer match el paquete pasa a la siguiente regla definida en jump-target.
- log: añade un mensaje en los logs con la siguiente información: in-interface, out-interface, src-mac, protocol, src-ip:port->dst-ip:port y length of the packet. Después de hacer match el paquete pasa a la siguiente regla.
- passthrough: si el paquete coincide con la regla, aumenta el contador y pase a la siguiente regla (útil para estadísticas)
- reject: Desecha los paquetes icmp y envía un mensaje definido por el usuario el paquete no pasa a la siguiente regla.
- return: Pasa el control del filtro de nuevo, en donde se originó el filtro anterior. Después de hacer match el paquete pasa a la siguiente regla (únicamente si la regla anterior no ocasiona que se deseche el paquete y pare el match).
- tarpit: Captura y retiene los paquetes TCP (replicas con SYN/ACK para paquetes entrantes TCP SYN). Después de hacer match el paquete pasa a la siguiente regla.
Protegiendo tu router (input)
Sugerencias para proteger nuestro router del exterior (WAN)
- Aceptar el tráfico de icmp-echo-reply (si se desea tener réplica de ping sobre internet, esto es útil cuando manejamos servidores)
- Desechar todo el tráfico icmp-echo-request (Cuando no deseamos que nos hagan ping otro dispositivo. Con esto evitamos estar en la mira de ataques como smurf attack u otros)
- Aceptar todo el tráfico entrante establecido y relacionado.
- Desechar todo el tráfico inválido.
- Realizar un Log de todo el resto del tráfico
- Desechar todo el resto de tráfico.
Protegiendo a todos los clientes (forward)
- El trafico forward es el tráfico que pasa a través del router. Sugerencias para Forward:
- Aceptar todo el tráfico forward establecido y relacionado.
- Desechar todo el tráfico inválido.
- Hacer Log de todo el resto del tráfico (para verificar si es que algún paquete importante ha sido bloqueado)
- Desechar todo el resto de tráfico.
Address-list conceptos básicos
address-list se usa para agrupar direcciones IP. Ayuda a simplificar la cantidad de reglas creadas en el router.
Los grupos de address-list pueden representar:
- Grupo de administradores, departamentos…
- Hackers
- Lo que sea que se dese clasificar
Consejos para Firewall
Antes de realizar cambios en el firewall seleccionar el “modo seguro”.
Después de realizar configuraciones y cambios en las reglas firewall, se aconseja probar las debilidades: una herramienta recomendada: ShieldsUP