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.
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:
- input — tráfico destinado al propio router (gestión, DNS, NTP)
- forward — tráfico que pasa a través del router entre interfaces
- output — tráfico originado por el router hacia afuera
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.
# 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"
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.
# 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.
# 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.
# 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:
# 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
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:
# 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 →