Laboratorio de seguimiento de las conexiones
Routeros implementa un firewall de tipo statefull. Un firewall de tipo statefull es un cortafuegos que puede seguir conexiones de icmp, udp y tcp.
Esto significa que el firewall es capaz de identificar si un paquete tiene relación con paquetes anteriores. Por ejemplo si es un paquete de respuesta a una petición icmp echo(ping) forma parte de una comunicación que comenzó con una petición icmp echo(ping).
Tcp, Udp, Icmp
Un cortafuegos statefull no solo sigue conexiones TCP, también sigue conexiones udp e icmp. |
El seguimiento de las conexiones utiliza la pestaña connections. En esta pestaña se muestran la información más relevante sobre cada una de las conexiones.
En la Figura1-1 Tabla de conexiones podemos observar la tabla de conexiones junto a los valores por defecto de los protocolos TCP y UDP. Esta ventana aparece tras pulsar el botón tracking.


En el siguiente lab vamos a utilizar las reglas del cortafuegos para realizar el seguimiento de un paquete desde su emisión por parte del portatil del usuario hasta la vuelta del paquete relacionado con la conexión.
La configuración inicial es la siguiente:
set [ find default-name=ether2 ] comment="To Lan" name=ether1 set [ find default-name=ether1 ] comment="To internet" name=ether1-internet set [ find default-name=ether3 ] name=ether2 set [ find default-name=ether4 ] name=ether2-Lan /interface wireless security-profiles set [ find default=yes ] supplicant-identity=MikroTik /ip pool add name=dhcp_pool0 ranges=192.168.11.2-192.168.11.254 /ip dhcp-server add address-pool=dhcp_pool0 disabled=no interface=ether1 name=dhcp1 /ip address add address=192.168.11.1/24 interface=ether1 network=192.168.11.0 /ip dhcp-client add dhcp-options=hostname,clientid disabled=no interface=ether1-internet /ip dhcp-server network add address=192.168.11.0/24 gateway=192.168.11.1 /ip firewall nat add action=masquerade chain=srcnat out-interface=ether1-internet /system identity set name=R1


A continuación creamos la regla que marca la conexión. Utilizamos la acción mark-connections
/ip firewall mangle add action=mark-connection chain=forward dst-address=8.8.8.8 new-connection-mark=icmp passthrough=yes protocol=icmp add action=mark-packet chain=forward connection-mark=icmp new-packet-mark=icmpout out-interface=ether1-internet passthrough=yes add action=mark-packet chain=forward connection-mark=icmp new-packet-mark=icmpin out-interface=ether2-Lan passthrough=yes
Tras lanzar el siguiente ping desde el laptop:
jose@fiberclidev:~$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=122 time=4.51 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=122 time=6.21 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=122 time=6.06 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=122 time=4.27 ms 64 bytes from 8.8.8.8: icmp_seq=5 ttl=122 time=3.72 ms --- 8.8.8.8 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 3.720/4.957/6.213/1.002 ms
Vamos a analizar cada una de las reglas y su funcionamiento:
/ip firewall mangle add action=mark-connection chain=forward dst-address=8.8.8.8 new-connection-mark=icmp passthrough=yes protocol=icmp
En esta primera regla marcamos una conexión con la marca de conexión icmp.
Observaremos en la pestaña connections |

Y confirmamos que hay conteo de paquetes en el interfaz del equipo:

En la siguiente regla comprobamos el conteo de paquetes de icmp que salen del equipo al exterior. En la parte de coincidencia de la regla utilizamos la marca de conexión(2) que configuramos en la acción de la primera regla.
En esta caso la acción que se toma es marcar el paquete(4).
La forma correcta de marcado de conexiones, es en primer lugar marcar conexiones y en segundo lugar marcar los paquetes. |
/ip firewall mangle add action=mark-packet chain=forward connection-mark=icmp new-packet-mark=icmpout out-interface=ether1-internet passthrough=yes

Necesitamos utilizar la cadena forward(1) porque la cadena prerouting no permite utilizar el interfaz de salida como matching. |
En la última regla marcamos de nuevo el paquete(2) y esta vez utilizamos como interfaz de salida el interfaz(1) al que está conectado el portatil.
/ip firewall mangle add action=mark-packet chain=forward connection-mark=icmp new-packet-mark=icmpin out-interface=ether2-Lan passthrough=yes
