Mikrotik - PortKnocking

Iniciado por xyz, Septiembre 17, 2018, 10:14:17 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Septiembre 17, 2018, 10:14:17 PM Ultima modificación: Septiembre 17, 2018, 10:24:56 PM por xyz
¿Qué es Port Knocking ?

Es un mecanismo, para "abrir" puertos o redireccionar mediante una secuencia pre-establecida.

Consiste en realizar un golpeo (knock) de puertos secuenciales a puertos tcp/udp establecidos, de ese modo el Firewall identifica que no se trata de un ataque, sino de una conexión legítima.


En algunos sistemas operativos se puede lanzar el demonio de port-knocking. En algunos routers (dispositivos capa 3) se pueden configurar con ingenio, ya que se tratan de listas blancas.



Configurando en mikrotik.
Al tratarse de una lista blanca, lo que hay que establecer con anterioridad es:
-   Servicios a habilitar (SSH / Rdp / Telnet / Web-app ).
-   Secuencia de knock's a utilizar.
-   Puertos knock's a utilizar.
-   Dispositivos que utilizaran la conexión
-   Notificar en el log la conexión.



Las imágenes anteriores detallan que con pocas reglas se realiza la secuencia.
A modo de ejemplo, brindaré un simple ejemplo de cómo realizar la configuración.
Aclaración: Está en cada uno saber utilizar el port-knock y que desean realizar, si hacer un port-forward o acceder a los dispositivos de borde para administrarlos.
Entonces, la configuración es la siguiente.
Código: php

ip firewall filter
add chain=input protocol=tcp/udp dst-port=1111 in-interface=WAN
connection-state=new action=add-src-to-address-list address-list=RDP timeout=00:00:10

El código anterior lo que hace, es agregar a una lista RDP por diez segundos la dirección IP que golpee (knock) en el puerto 111 con protocolo tcp o udp y que la conexión sea nueva además que ingrese por la interfaz WAN.
Código: php

ip firewall filter
add chain=input protocol=tcp/udp dst-port=2222 in-interface=WAN
connection-state=new src-address-list=RDP
action=add-src-to-address-list address-list=RDP1 timeout=00:00:10

Este segundo código detallado arriba, continúa con la secuencia de knocking, lo que realiza es agregar a las direcciones IP que están en la lista RDP a la lista RDP1, debiendo cumplir lo siguiente, golpear el puerto 2222 de protocolo tcp o udp, la conexión debe ser nueva e ingresar por el puerto WAN.
Código: php

ip firewall filter
add chain=input protocol=tcp/udp dst-port=5555 in-interface=WAN
connection-state=new src-address-list=RDP2
action=add-src-to-address-list address-list=RDP-SECURE timeout=00:01:00

El segmento anterior de código, continúa con el Knocking, solo que ahora, está en la lista definida como RDP-SECURE la cual tiene un time-out de 10 minutos, pasado ese tiempo el cliente debe comenzar nuevamente la secuencia, ya que no pasará la secuencia correcta.
Código: php

ip firewall filter
add chain=forward protocol=tcp dst-port=3389/22 src-address-list=RDP-SECURE
action=accept log-prefix="RDP WHITE LIST" log=yes

Una vez alcanzado el knocking correcto, para redirigir el trafico al servicio correcto; hay que utilizar el chain=forward, indica que la conexión será redirigida a algún sevicio, debe provenir de la lista RDP-SECURE
Código: php

ip firewall nat
add chain=dst-nat protocol=tcp dst-port=3389 in-interface=WAN
src-address-list=RDP-SECURE action=dst-nat
to-addressess=<ip-servidor> to-ports=<puerto servicio> log-prefix="RDP FWD" log=yes

Al utilizar el NAT del firewall, indica que esta redirigiendo la conexión a un equipo determinado del segmento LAN.
Entonces, la conexión debe provenir de la lista RDP-SECURE, al realizar un dst-nat es una redirección NAT, a una dirección IP del servidor <ip-sevidor> ejemplo: 192.168.10.10 al puerto 3389 (Rdp) y que la conexión quede registrada en el LOG del equipo.


   
Una presentación que brinda un vista amplia de la seguridad que implica utilizar port-knock por sobre redirecciones sin control.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Ventajas de utilizar un port-knock, a un atacante le resultará difícil identificar la secuencia de puertos a utilizar (ya que estos pueden ser un puerto hasta n puertos), trabaja con protocolos tcp/udp/icmp.
Al realizar mapeos a un router, los puertos estarán cerrados.
Ejemplo de mapeo desde segmento LAN.

Ejemplo de mapeo hacia dirección ip de la WAN.
Código: php

Starting Nmap 7.60 ( https://nmap.org ) at 2018-09-17 22:03 Hora estándar de Argentina
NSE: Loaded 146 scripts for scanning. NSE: Script Pre-scanning.
Initiating NSE at 22:03 Completed NSE at 22:03, 0.00s elapsed Initiating NSE at 22:03 Completed NSE at 22:03, 0.00s elapsed
Initiating Parallel DNS resolution of 1 host. at 22:03 Completed Parallel DNS resolution of 1 host. at 22:03, 6.41s elapsed Initiating SYN Stealth Scan at 22:03 Scanning <dirección ip wan>  (<dirección ip wan>) [1000 ports]
SYN Stealth Scan Timing: About 13.60% done; ETC: 22:07 (0:03:17 remaining)
SYN Stealth Scan Timing: About 25.60% done; ETC: 22:07 (0:02:57 remaining)
SYN Stealth Scan Timing: About 37.60% done; ETC: 22:07 (0:02:31 remaining)
SYN Stealth Scan Timing: About 49.60% done; ETC: 22:07 (0:02:03 remaining)
SYN Stealth Scan Timing: About 61.60% done; ETC: 22:07 (0:01:34 remaining)
SYN Stealth Scan Timing: About 73.60% done; ETC: 22:07 (0:01:05 remaining)
SYN Stealth Scan Timing: About 85.60% done; ETC: 22:07 (0:00:35 remaining) Completed
SYN Stealth Scan at 22:07, 247.91s elapsed (1000 total ports)
Initiating Service scan at 22:07 Initiating OS detection (try #1) against <dirección ip wan>
Retrying OS detection (try #2) against <dirección ip wan>
Initiating Traceroute at 22:07 Completed Traceroute at 22:07, 9.16s elapsed
Initiating Parallel DNS resolution of 5 hosts. at 22:07 Completed Parallel DNS resolution of 5 hosts. at 22:08, 16.50s elapsed NSE: Script scanning <wan>
Initiating NSE at 22:08 Completed NSE at 22:08, 0.01s elapsed Initiating NSE at 22:08 Completed NSE at 22:08, 0.00s elapsed Nmap scan report for <dirección ip wan>
Host is up (0.77s latency).
rDNS record for host.telecom.net.ar All 1000 scanned ports on <dirección ip wan>
are filtered Too many fingerprints match this host to give specific OS details TRACEROUTE (using proto 1/icmp)
HOP RTT       ADDRESS
1   4.00 ms   192.168.3.1
2   8.00 ms   10.10.1.1
3   57.00 ms  Broadcom.Home (192.168.1.1)
4   271.00 ms host1.telecom.net.ar (host1)
5   279.00 ms host2.telecom.net.ar (host2) 6   ...
30 NSE: Script Post-scanning. Initiating NSE at 22:08 Completed NSE at 22:08, 0.00s elapsed
Initiating NSE at 22:08 Completed NSE at 22:08, 0.00s elapsed Read data files from: C:\Program Files (x86)\Nmap OS and Service detection performed.
Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 297.37 seconds           
Raw packets sent: 2128 (96.912KB) | Rcvd: 18 (1.156KB)



Luego de ello, las conclusiones están a la vista.

Para quienes deseen implementar port-knock en gnu/linux, una buena guía: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta