La técnica Port Knocking como protección

Port Knocking es un método utilizado para abrir externamente los puertos de un Firewall, generando conexiones sucesivas en puertos determinados y en un orden en particular; una vez que se concreta la secuencia correcta, se activa una determinada regla de firewall, dejando acceso al host que generó el «llamado».


Con el uso de Port Knocking se evita el escanéo de puertos y el posible ataque a algún servicio o host  que tengamos en nuestra red. El puerto se mostrara cerrado hasta que no se haga la combinación. En este caso, la idea es que después de activar dicha combinación de puertos específicos, una regla de firewall agregue mi IP en una lista de administradores, para poder así tener el control sobre el router, externamente.

Veamos un ejemplo práctico:

Realizando un escanéo de puertos al IP: 88.35.21.31, vemos que el firewall dropea las conexiones sincrónicas a los puertos 21,23,22, tal como muestra el siguiente gráfico.

En cambio, si utilizamos la técnica de Port Knocking y utilizando una combinación de puertos especiales, en este caso del 2199 y 9123 ambos TCP, nos deja luego abierto el puerto 22 SSH para luego iniciar una sesión shell y administrar mi red/server.

Manos a la obra:

Para el ejemplo, vamos  a utilizar las conexiones tcp a los puertos 10000, 10001 y 10002 respectivamente.
En el terminal del MikroTik hay que escribir:

/ip firewall filter
add action=jump chain=input comment=”Validacion Admin” disabled=no jump-target=”validacion admin”
add action=add-src-to-address-list address-list=temp_admin1 address-list-timeout=2m chain=”validacion admin” comment=”» disabled=no dst-port=10000 protocol=tcp
add action=add-src-to-address-list address-list=temp_admin2 address-list-timeout=2m chain=”validacion admin” comment=”» disabled=no dst-port=10001 protocol=tcp src-address-list=temp_admin1
add action=add-src-to-address-list address-list=admin address-list-timeout=10m chain=”validacion admin” comment=”» disabled=no dst-port=10002 protocol=tcp src-address-list=temp_admin2
add action=accept chain=”validacion admin” comment=”» disabled=no protocol=tcp src-address-list=admin

Detalles de cada una:

La primer regla establece un salto hacia la cadena “Validación Admin“, la cuál en teoría esta vacía, ya que las próximas líneas indicarán su contenido.
La segunda regla establece que al recibir el firewall una consulta al puerto TCP 10.000, agregará la dirección IP consultante en una lista temporal llamada “temp_admin1“.
La regla siguiente hace la misma petición  pero ahora al puerto TCP 10.001 y chequea que el IP origen se encuentre en la lista address list «temp_admin1» , la agregará temporalmente en una segunda lista, “temp_admin2“.
Finalmente, si la direccion IP listada en “temp_admin2” consulta ahora al puerto 10.002, se la agregará a la list.
La última línea de comando establece que se acepte todo tipo de conexiones que provengan desde las direcciones IP agregadas a la lista Admin.

Fuente: Mario Clep, Emezeta. Compaginación: Maximiliano Dobladez
Bajo Licencia CC 2.5 – Attribution-Noncommercial-No Derivative