Como hacer PortKnocking en MikroTik
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.
En este caso, la idea es que después de activar la combinacion 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.
http://www.portknocking.org/images/p...plained-02.png
Para el ejemplo, voy a utlizar las conexiones tcp a los puertos 10000, 10001 y 10002 respectivamente.
En el terminal del MikroTik hay que escribir:
/ip firewall filterPaso a detallar lo que hace cada línea:
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
La primera simplemente indica que las próxima regla se aplicará sobre la cadena input de la tabla filter.
La segunda 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 tercer regla establece que al recibir el server una consulta al puerto TCP 10.000, agregará la dirección IP consultante en una lista temporalllamada temp_admin1.
Si la dirección agregada a la lista anterior, vuelve a consultar, pero ahora al puerto TCP 10.001, 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.
Por último, la sexta línea de comando establece que se acepte todo tipo de conexiones que provengas desde las direcciones IP agregadas a la lista Admin.
Aquí es donde entra la técnica del Port-Knocking. Con ella tenemos un firewall establecido de manera que nadie (ni nosotros mismos!) pueda acceder al sistema. En el ejemplo posterior, vemos como un supuesto atacante (88.35.21.31) intenta acceder por varios puertos (21, 23 y 22) sin éxito alguno.
http://www.emezeta.com/weblog/port-knocking-1.jpgTotalmente inútil sería esta táctica si no hubiera una manera de que nosotros podamos entrar:
http://www.emezeta.com/weblog/port-knocking-2.jpgEl Port-knocking se basa en realizar varios intentos de conexión consecutivos (y previamente establecidos) a ciertos puertos para «avisar» al sistema de que realmente somos nosotros.
Asi pues, en el ejemplo que muestro tenemos configurado el knockd (demonio encargado del port-knocking) para que al recibir los intentos de conexión en el puerto 2199 y 9123, se abra el firewall para nuestra IP en el puerto 22. ¿Brillante, verdad? Una sencilla forma de proteger nuestro sistema y hacer prácticamente imposible de ingresar.
Finalmente también podría hacerse posible otra combinación para volver a cerrar el acceso o alargar la combinación de puertos (a 5 intentos de conexión por ejemplo). Tener en cuenta que, en el remoto caso de que un usuario consiguiera adivinar la combinación de puertos aún tendría que enfrentarse a una contraseña.
Autores: Mario Clep e Emezeta