El firewall es la primera y más importante línea de defensa de cualquier ISP o WISP. Un router MikroTik mal configurado puede ser comprometido en minutos si está expuesto a internet. Esta guía cubre la configuración completa del firewall en RouterOS para entornos de producción ISP/WISP en México y Latinoamérica, con comandos listos para pegar tanto en ROS 6 como en ROS 7.

Requisito previo

Verifica tu versión antes de aplicar: /system resource print. Algunos comportamientos del firewall difieren entre ROS 6.49.x y ROS 7.x, especialmente en conntrack y mangle.

1. Entendiendo las chains en RouterOS

El firewall de RouterOS opera en tres chains principales en /ip firewall filter:

Para un ISP/WISP, la chain input protege tu infraestructura de gestión, y forward protege a tus clientes de ataques externos (y entre ellos).

2. Reglas base de la chain input

Estas reglas protegen el acceso de gestión al router. La lógica es: acepta lo establecido, acepta desde subredes de gestión, dropea todo lo demás.

RouterOS — /ip firewall filter (input)
# Aceptar conexiones establecidas y relacionadas (CRÍTICO — va primero)
/ip firewall filter add chain=input connection-state=established,related action=accept comment="accept established,related"

# Dropear conexiones inválidas
/ip firewall filter add chain=input connection-state=invalid action=drop comment="drop invalid"

# Aceptar ICMP (ping) limitado — 5 pkt/s
/ip firewall filter add chain=input protocol=icmp limit=5,10:packet action=accept comment="accept icmp limited"
/ip firewall filter add chain=input protocol=icmp action=drop comment="drop icmp flood"

# Aceptar gestión desde VPN WireGuard (10.99.99.0/24)
/ip firewall filter add chain=input src-address=10.99.99.0/24 action=accept comment="accept mgmt from WireGuard"

# Aceptar loopback
/ip firewall filter add chain=input in-interface=lo action=accept comment="accept loopback"

# Protección brute force SSH — bloquea IPs que fallan 3 veces
/ip firewall filter add chain=input protocol=tcp dst-port=2222 connection-state=new src-address-list=ssh_blacklist action=drop comment="drop SSH blacklisted"
/ip firewall filter add chain=input protocol=tcp dst-port=2222 connection-state=new src-address-list=ssh_stage3 action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=1d comment="SSH blacklist stage3"
/ip firewall filter add chain=input protocol=tcp dst-port=2222 connection-state=new src-address-list=ssh_stage2 action=add-src-to-address-list address-list=ssh_stage3 address-list-timeout=1m comment="SSH stage3"
/ip firewall filter add chain=input protocol=tcp dst-port=2222 connection-state=new src-address-list=ssh_stage1 action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=1m comment="SSH stage2"
/ip firewall filter add chain=input protocol=tcp dst-port=2222 connection-state=new action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m comment="SSH stage1"

# Dropear el resto — todo lo que no fue explícitamente aceptado
/ip firewall filter add chain=input action=drop comment="drop all other input"
Antes de aplicar

Si tu acceso actual es por SSH directamente, ajusta el puerto y la subnet de gestión. Aplica desde una sesión ya establecida o desde Winbox para no bloquearte.

3. Reglas base de la chain forward

En un ISP, el forward protege que clientes no puedan atacarse entre sí y bloquea tráfico malicioso entrante desde internet.

RouterOS — /ip firewall filter (forward)
# Aceptar establecidas y relacionadas primero (rendimiento crítico)
/ip firewall filter add chain=forward connection-state=established,related action=accept comment="accept established,related"

# Dropear inválidas
/ip firewall filter add chain=forward connection-state=invalid action=drop comment="drop invalid"

# Evitar que clientes escaneen puertos de otros clientes
/ip firewall filter add chain=forward src-address=192.168.0.0/16 dst-address=192.168.0.0/16 action=drop comment="drop client-to-client"

# Bloquear tráfico desde IPs marcadas como atacantes
/ip firewall filter add chain=forward src-address-list=blacklist action=drop comment="drop blacklisted src"
/ip firewall filter add chain=forward dst-address-list=blacklist action=drop comment="drop blacklisted dst"

# Aceptar tráfico de clientes hacia internet
/ip firewall filter add chain=forward src-address=10.0.0.0/8 action=accept comment="accept client traffic out"
/ip firewall filter add chain=forward src-address=192.168.0.0/16 action=accept comment="accept client traffic out"

4. Address Lists: tu mejor herramienta de bloqueo

Las address lists permiten bloquear rangos de IPs por nombre, de forma dinámica o estática. Para un ISP son esenciales para gestionar abuse, botnets y ataques DDoS.

RouterOS — /ip firewall address-list
# Bloquear países con alto abuse (ejemplo: bloques usados para ataques)
/ip firewall address-list add address=0.0.0.0/8 list=bogons comment="bogon"
/ip firewall address-list add address=10.0.0.0/8 list=bogons comment="RFC1918"
/ip firewall address-list add address=172.16.0.0/12 list=bogons comment="RFC1918"
/ip firewall address-list add address=192.168.0.0/16 list=bogons comment="RFC1918"
/ip firewall address-list add address=100.64.0.0/10 list=bogons comment="CGNAT"
/ip firewall address-list add address=169.254.0.0/16 list=bogons comment="link-local"

# Ver IPs en una lista (útil para debugging)
/ip firewall address-list print where list=ssh_blacklist

# Remover IP manualmente de blacklist
/ip firewall address-list remove [find where address=1.2.3.4]

5. Hardening de servicios expuestos

En un router de producción ISP, la regla de oro es: deshabilitar todo lo que no se usa. RouterOS tiene muchos servicios habilitados por defecto que son vectores de ataque.

RouterOS — Hardening de servicios
# Deshabilitar servicios innecesarios
/ip service disable telnet,ftp,www,www-ssl,api,api-ssl

# SSH solo en subnet de gestión, puerto no estándar
/ip service set ssh port=2222 address=10.99.99.0/24

# Winbox solo desde subnet de gestión
/ip service set winbox address=10.99.99.0/24

# Deshabilitar interfaces de descubrimiento en WAN
/ip neighbor discovery-settings set discover-interface-list=!all

# Deshabilitar bandwidth-test server
/tool bandwidth-server set enabled=no

# DNS: deshabilitar forward DNS desde internet
/ip dns set allow-remote-requests=no

# Verificar estado de todos los servicios
/ip service print

6. Protección adicional: connection tracking limits

En RouterOS 7, puedes limitar el número de conexiones por IP para prevenir que un cliente o bot sature la tabla de conexiones:

RouterOS 7 — Connection limits
# Limitar conexiones TCP simultáneas por IP cliente
/ip firewall filter add chain=forward protocol=tcp connection-limit=200,32 src-address=0.0.0.0/0 action=drop comment="limit connections per IP"

# Ver tabla de conexiones actuales
/ip firewall connection print count-only

# Ver las 10 IPs con más conexiones
/ip firewall connection print where protocol=tcp | head count=50
Switch offload — CRS326/CRS354/CRS317

En switches con Marvell L3HW (CRS326, CRS354, CRS317, CRS320), no agregues reglas conntrack en chain=forward. El mangle en forward deshabilita el hardware offloading y degrada drásticamente el rendimiento de switching. Aplica las reglas de firewall solo en el router upstream, no en los switches L3.

7. Verificación y monitoreo

Después de aplicar las reglas, verifica que todo funcione correctamente:

RouterOS — Verificación
# Ver todas las reglas con contadores de paquetes
/ip firewall filter print stats

# Ver logs de firewall (si configuraste logging)
/log print where topics~"firewall" follow

# Ver IPs en ssh_blacklist
/ip firewall address-list print where list=ssh_blacklist

# Contar conexiones activas
/ip firewall connection print count-only

# Ver tráfico por interface
/interface print stats

Conclusión

Un firewall bien configurado en RouterOS combina tres elementos: reglas de filtrado ordenadas (established/related primero), address lists dinámicas para gestión de abuse, y hardening de servicios para reducir superficie de ataque.

Lo más importante es que las reglas estén ordenadas correctamente — RouterOS procesa las reglas de arriba hacia abajo y se detiene en la primera coincidencia. Siempre ten las reglas de established,related al inicio para maximizar el rendimiento.

¿Quieres que gestionemos el firewall de tu flota MikroTik con estas mejores prácticas y más? Revisa nuestros planes de servicio.

¿Preferís que lo hagamos nosotros?

Auditamos y configuramos el firewall de toda tu flota MikroTik de forma remota.

Conocer el soporte MikroTik remoto o solicita una evaluación gratuita →