Bandera: Русский Русский Bandera: English English

Estudio de caso: Configurando Port Knocking en MikroTik para una seguridad reforzada

Publicado el 16.07.2025

En un mundo donde los ciberataques se vuelven cada vez más sofisticados, la protección del acceso remoto a servidores y equipos de red adquiere una importancia primordial. Abrir puertos estándar para SSH, RDP o interfaces web los convierte en objetivos de escaneos constantes y ataques de fuerza bruta.

Hoy veremos una técnica poderosa pero poco conocida que incrementa significativamente la seguridad de tu MikroTik (y no solo): Port Knocking. No es simplemente “cerrar puertos”, sino un sistema inteligente que hace que tus servicios sean invisibles para la mayoría de escáneres y bots.


¿Qué es Port Knocking?

Port Knocking es un método de autenticación en el que el usuario remoto debe “tocar” una secuencia predefinida de puertos cerrados (por ejemplo, 1234 → 5678 → 9012) en el orden correcto. Solo después de ello se le abrirá acceso al servicio requerido (por ejemplo, SSH en el puerto 22).

Antes de ejecutar la secuencia correcta los puertos permanecen cerrados e invisibles — como una puerta secreta que aparece solo para quien sabe cómo tocarla.


¿Por qué usar Port Knocking?

  • 🔒 Invisibilidad de servicios — SSH, Winbox, interfaces web no serán visibles en un escaneo habitual.
  • 🛡 Protección contra fuerza bruta y escáneres — la mayoría de los bots ni siquiera sabrán que existen los puertos.
  • 🔑 Nivel adicional de autenticación — se requiere la “secuencia secreta” incluso si se conoce la contraseña.
  • 🌐 Alternativa simplificada a VPN — no reemplaza a una VPN, pero puede sustituirla en casos puntuales de acceso.

Configuración de Port Knocking en MikroTik (RouterOS)

Objetivo: abrir acceso a SSH (22) y Winbox (8291) solo después de contactar secuencialmente los puertos 1234 → 5678 → 9012.

Tras el “toque” correcto la IP del remitente se añade a una lista y los puertos necesarios se abren durante 60 segundos.


1. Preparación

Asegúrate de tener acceso al MikroTik:

  • a través de Winbox (por MAC address),
  • o por consola local (por ejemplo, vía serial o dentro de la red local).

2. Configuración del Firewall: listas de direcciones

Crearemos listas para rastrear los “toques”:

/ip firewall address-list
add list=knock_1 address=0.0.0.0/32 disabled=yes comment="Lista inicial para toque 1"
add list=knock_2 address=0.0.0.0/32 disabled=yes comment="Lista inicial para toque 2"
add list=knock_open_port address=0.0.0.0/32 disabled=yes comment="Lista de toque exitoso"

❗ Estas son entradas ficticias para que las listas “existan” — MikroTik no aplicará reglas a una lista inexistente.


3. Reglas de Port Knocking

/ip firewall filter

# Paso 1: Primer toque
add chain=input protocol=tcp dst-port=1234 action=add-src-to-address-list \
    address-list=knock_1 address-list-timeout=5s comment="Toque 1"

# Paso 2: Segundo toque, si hubo el primero
add chain=input protocol=tcp dst-port=5678 src-address-list=knock_1 \
    action=add-src-to-address-list address-list=knock_2 address-list-timeout=5s comment="Toque 2"

# Paso 3: Tercer toque, si hubo el segundo — abrimos acceso
add chain=input protocol=tcp dst-port=9012 src-address-list=knock_2 \
    action=add-src-to-address-list address-list=knock_open_port address-list-timeout=1m comment="Toque 3 (concede acceso)"

# Descarta todos los intentos de acceso a los puertos de toque
add chain=input protocol=tcp dst-port=1234,5678,9012 action=drop comment="Descartar puertos de toque"

4. Apertura de SSH y Winbox

# Permitimos el acceso si la IP está en la lista knock_open_port
add chain=input protocol=tcp dst-port=22,8291 src-address-list=knock_open_port action=accept comment="Permitir IPs que han tocado"

# Bloqueamos el acceso para todos los demás
add chain=input protocol=tcp dst-port=22,8291 action=drop comment="Bloquear SSH/Winbox para otros"

# (Opcional) Drop general al final de la cadena input
# add chain=input action=drop comment="Descartar todas las demás entradas"

🔥 Importante: el orden de las reglas es crítico — las reglas que permiten y las reglas de knock deben ir por encima del drop general.


5. ¿Cómo “tocar”?

💻 Con netcat:

# Toque 1
nc -nvz ВАШ_IP_MIKROTIK 1234 -w 1

# Toque 2
nc -nvz ВАШ_IP_MIKROTIK 5678 -w 1

# Toque 3
nc -nvz ВАШ_IP_MIKROTIK 9012 -w 1

-z: solo SYN, sin establecer sesión TCP
-w 1: timeout rápido para acelerar el toque
ВАШ_IP_MИКРОТИК: dirección IP pública del MikroTik

🧪 Alternativa para macOS (si nc no funciona correctamente):

nmap -Pn -p 1234,5678,9012 ВАШ_IP_MIKROTIK --data-length 0

6. Pruebas

  1. Asegúrate de que SSH y Winbox están bloqueados por defecto.
  2. Intenta conectarte — será rechazado.
  3. Ejecuta la secuencia de “toques”.
  4. Intenta conectarte de nuevo — el acceso será permitido por 60 segundos.
  5. Tras expirar el timeout volverá a rechazarse.

Puedes comprobar la lista con:

/ip firewall address-list print

Recomendaciones y buenas prácticas

  • TCP SYN — MikroTik añade la IP a la lista por el paquete SYN, no por la sesión completa.
  • No uses secuencias obvias: 1, 2, 3 o 2222 → 3333 → 4444.
  • Aumenta la entropía: usa 4-5 pasos y mezcla TCP/UDP.
  • Protege al cliente — no almacenes la secuencia en claro.
  • Automatiza el “toque” — con un script bash o alias.
  • Combínalo con otras medidas: GeoIP, fail2ban, VPN, restricción de IP.

Limitaciones de Port Knocking

Port Knocking — no es una panacea, sino un complemento:

  • 🔸 No protege contra 0-day en SSH/Winbox
  • 🔸 No previene MITM (si no hay TLS/verificación de claves)
  • 🔸 No ayuda contra DDoS (las direcciones siguen siendo conocidas)
  • 🔸 Incómodo en entornos con NAT o redes inestables
  • 🔸 Errores en el timing = frustración para los usuarios

Conclusión

Port Knocking en MikroTik es una forma elegante de ocultar servicios y complicar ataques sin recurrir a VPNs complejas o sistemas externos de autorización.

No reemplaza la seguridad básica, pero te hace menos visible como objetivo y aumenta la resiliencia general del sistema.

Úsalo con cabeza, combínalo con otras prácticas — y estarás por encima de la mayoría de administradores.

¿Necesitas ayuda?

Escríbeme y te ayudaré a resolver el problema

Publicaciones relacionadas