Página 1 de 1

Port Knocking en Mikrotik

Publicado: Mié, 14 Feb 2018, 21:56
por emmmm
Bueno, hoy un temita bastante chulo. Port Knocking... que es Port Knocking??? pues, por seguir en la línea del ejemplo que os voy a poner, es que tengamos cerrado el puerto 22 de nuestro Mikrotik y que, "llamando" a unos puertos en una combinación correcta, se abra para que podamos conectarnos.

Os explico el código por líneas y al final tenéis el ejemplo para pegarlo en el Mikrotik

Código: Seleccionar todo

/ip firewall filter
add action=tarpit chain=input dst-port=22 protocol=tcp
Lo primero, tarpit a todo lo que vaya al puerto 22. Condición indispensable para que un puerto quede cerrado. Si tenéis todos los puertos ya cerrados, esta línea os la podéis ahorrar... la he puesto para que se vea claro el ejemplo por si queréis probarlo en una máquina limpia.

Código: Seleccionar todo

/ip firewall mangle
add action=add-src-to-address-list address-list=1st_knock address-list-timeout=\
    10s chain=input comment="Port Knocking" dst-port=2221 protocol=tcp
En esta primera parte, le indicamos los puertos. Basicamente, con cualquier navegador, podemos poner http://ip_vuestro_mikrotik:2221 y, con ello, la IP de la máquina habrá accedido a la lista "1st_knock". Esta lista tiene un tiemeout de 10 segundos. Si pasas de ese tiempo, la IP abandona la lista.

Código: Seleccionar todo

/ip firewall mangle
add action=add-src-to-address-list address-list=2nd_knock address-list-timeout=\
    30s chain=input dst-port=1112 protocol=tcp src-address-list=1st_knock
add action=add-src-to-address-list address-list=3rd_knock address-list-timeout=\
    10m chain=input dst-port=2212 protocol=tcp src-address-list=2nd_knock
A continuación le indicamos que escuche los puertos 1112 y 2212. El primero lo incluirá en la lista "2nd_knock" durante 30 segundos pero sólo si ya pertenece a la lista "1st_knock". Ya, sólo escucharemos el siguiente toque, siempre y cuando, siga en el orden correcto y esté añadido a "2nd_knock". Estas listas se van confirmando en esta parte del código. La idea, es evitar que alguien que esté escaneando los puertos del router lo abra sin querer. Mi recomendación es que los puertos sean lo más aleatorios posible. En mi ejemplo, he puesto tres... se pueden poner los que queramos. Si queréis cambiar el orden, sólo tenéis que elegirlo y cambiarlo en el código.

Código: Seleccionar todo

/ip firewall filter
add action=accept chain=input dst-port=22 protocol=tcp src-address-list=\
    3rd_knock
Por último, la regla de oro; acepta a todo lo que esté en la lista "3rd_knock" y que vaya al puerto 22. ¿Por qué? pues bien simple. Si está en esa lista, es que ha cumplido el orden correcto de puertos y, durante diez minutos, podrá conectar vía SSH a nuestro Mikrotik.

Aquí está el código integro

Código: Seleccionar todo

/ip firewall filter
add action=accept chain=input dst-port=22 protocol=tcp src-address-list=\
    3rd_knock
add action=tarpit chain=input dst-port=22 protocol=tcp
/ip firewall mangle
add action=add-src-to-address-list address-list=1st_knock address-list-timeout=\
    10s chain=input comment="Port Knocking" dst-port=2221 protocol=tcp
add action=add-src-to-address-list address-list=2nd_knock address-list-timeout=\
    30s chain=input dst-port=1112 protocol=tcp src-address-list=1st_knock
add action=add-src-to-address-list address-list=3rd_knock address-list-timeout=\
    10m chain=input dst-port=2212 protocol=tcp src-address-list=2nd_knock