Mikrotik - Firewall paso a paso
Firewall FILTER
En un firewall tenemos 3 chains o cadenas: Input (tráfico con destino el propio router), Forward (tráfico que atraviesa el router, como el que originan los dispostivos de tu LAN), Output (tráfico con origen el propio router). El firewall por defecto da de alta las siguientes reglas (cada una de las que ves con la palabra "add" delante).
Chain Input (destino el router)
Código:
add action=accept chain=input comment=\
"defconf: accept established,related,untracked" connection-state=\
established,related,untracked
Aceptas toda conexión previamente establecida, con destino el router.
Código:
add action=drop chain=input comment="defconf: drop invalid" connection-state=\
invalid
Rechazas toda conexión con estado "inválido".
Código:
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
Aceptas que puedas hacerle un ping a tu IP pública. Si esta regla la quitas, verás que dejas de poder hacer ping a tu IP pública desde internet.
Código:
add action=accept chain=input comment=\
"defconf: accept to local loopback (for CAPsMAN)" dst-address=127.0.0.1
Aceptas peticiones del propio router para haciendo de CAPsMAN. Esta regla es solo necesaria cuando tienes un router+AP (router con wifi) y quieres montar CAPsMAN en ese mismo equipo, manejando su propia red inalámbrica vía esa herramienta. En ese caso particular, la petición de control de CAPsMAN vendrá de la IP de loopback, la 127.0.0.1. Si tu equipo no tiene wifi, esa regla la puedes eliminar directamente, no la necesitas.
Código:
add action=drop chain=input comment="defconf: drop all not coming from LAN" \
in-interface-list=!LAN
La regla más importante del chain de input. Impide que nada que no sea un elemento de tu lista LAN (¿ves como usamos las listas, en lugar de las interfaces?) acceda al propio equipo. Esa regla impide, por ejemplo, que alguien desde internet pueda acceder a tu equipo si sabe tu IP pública y tiene winbox instalado.
Chain de Forward (origen/destino la LAN, tráfico que atraviesa el router)
Código:
add action=accept chain=forward comment="defconf: accept in ipsec policy" \
ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" \
ipsec-policy=out,ipsec
Dos reglas muy similares. Aceptan que los elementos LAN y el exterior se puedan comunicar con una policy de IPSec. Esto lo vas a usar cuando montes una VPN en el router, y quieras que el tráfico encriptado entre y salga del equipo, tal y como lo hace el tráfico LAN. Una regla acepta el tráfico encriptado en sentido de entrada (in,ipsec) y el otro en salida (out,ipsec). No las toques, son muy útiles, aunque no las necesitas si no montas una VPN.
Código:
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \
connection-state=established,related
Esa regla hace magia, y podríamos estar mucho tiempo hablando de ella. Básicamente lo que hace es saltarse el flujo de paquetes que seguiría cualquier paquete en el chain de forward, para toda conexión ya activa. Es decir, el primer paquete que pase por ahí no entrará en esa regla, y entrará en la siguiente, pasando por todo el flujo. Pero todos los demás relativos a esa conexión, irán por la vía rápida, saltándose del tirón ese flujo. Esta regla es incompatible con la gestión avanzada del tráfico (QoS, las famosas colas de prioridad y el mangle), y tendrías que desactivarla en caso de querer usar políticas de gestión de tráfico. Sin embargo, consiguen aumentar el rendimiento de un equipo una barbaridad. En tu caso no lo vas a notar, porque tienes una bestia parda de router, pero en el caso de un router de 50€ como puede ser un hEX, es la diferencia entre coger 400-500 Mbps y que el equipo se vaya a manejar 900 y pico megabits por segundo (a todo lo que dan los puertos gigabit). Trátala con mucho cariño y mantenla en tu configuración todo el tiempo que puedas. Yo la tengo quitada porque uso balanco de carga PCC y colas; y si quiero usar mangle para marcar el tráfico, no me queda otra que quitarla. El día que tengas que quitarla, simplemente desactívala con el aspa roja y reinicia el router. Verás que un par de reglas dinámicas que tenías tanto a nivel de filter como en mangle desparecen (descuida, que se vuelven a generar cuando la habilitas y reinicias).
Código:
add action=accept chain=forward comment=\
"defconf: accept established,related, untracked" connection-state=\
established,related,untracked
Igual que lo anterior, para el tráfico que aún no haya sido marcado como fasttrack (primeros paquetes de una conexión). Como ves no se acepta el estado "new", lo cual quiere decir que nadie desde fuera (internet) puede originar una conexión a un elemento de tu LAN. Las conexiones siempre se originan de dentro a fuera, salvo en un caso muy particular (última regla, ahora hablaremos de ella).
Código:
add action=drop chain=forward comment="defconf: drop invalid" \
connection-state=invalid
Al igual que en input, paquetes marcados como inválidos, los rechazamos.
Código:
add action=drop chain=forward comment=\
"defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \
connection-state=new in-interface-list=WAN
Esta es la excepción que confirma la regla. Sólo vamos a aceptar nuevas conexiones que vienen del exterior a nuestra LAN, si dicho tráfico está explicitamente declarado en el NAT. ¿Cuando se da esto? Muy sencillo: cuando abrimos un puerto. En ese caso, esa regla se encargaría de aceptar dicha conexión, dejando pasar ese tráfico en particular, y ningun otro. La regla literalmente dice: toda nueva conexión que venga de internet y no esté explicitamente declarada en el NAT, la rechazas. Otra regla muy importante y que no debes borrar nunca.
Firewall NAT
Aquí es donde cambiamos IPs públicas por privadas y viceversa. Trabajas con dos chains, muy parecido al firewall: srcnat (tráfico con origen la red nateada) y dstnat (tráfico con destino la red nateada). Las reglas de nateo para cambiar tu ip privada por tu ip pública irían en el srcnat, y la apertura de puertos en el dstnat.
Código:
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" \
ipsec-policy=out,none out-interface-list=WAN
Como tienes una IP pública dinámica, no puedes usar una regla de src-nat directamente para cambiar unas por otras (si la tuvieras y fuera estática, esa regla sería incuso más simple), así que tienes que tirar de un "truco" para salir a internet: usar un sub-grupo dentro del src-nat: el masquerade. Esta regla enmascara todo tráfico saliente no encriptado que acabe saliendo por cualquier interfaz dentro de tu lista WAN. De esa manera tan elegante, resuelves el problema de no tener una IP pública estática.
Si la tuvieras, tu regla sería algo así (siendo 1.2.3.4 tu IP pública)
Código:
add action=accept chain=srcnat comment="nateo-lan-to-wan" \
ipsec-policy=out,none src-address=192.168.55.0/24 dst-address=1.2.3.4
No hay comentarios:
Publicar un comentario