Honeypot en MikroTik: Atrapa y Bloquea Escáneres de Puertos
Configura un honeypot en MikroTik para detectar escáneres de puertos, registrar actividad maliciosa y bloquear atacantes automáticamente con la tabla RAW.

Cualquier router conectado a internet sufre un bombardeo constante de escaneos automatizados. Los bots sondean sistemáticamente todo el espacio de direcciones IPv4 —y cada vez más IPv6— en busca de servicios vulnerables: servidores SSH con contraseñas débiles, bases de datos expuestas, endpoints RDP desactualizados o dispositivos IoT mal configurados.
La mayoría de administradores responden descartando silenciosamente estos paquetes. Pero, ¿y si pudieras convertir estos ataques en inteligencia accionable? Configurando tu router MikroTik como un honeypot ligero, puedes:
- Detectar reconocimientos no autorizados antes de que se conviertan en una brecha.
- Registrar las IPs de los atacantes para análisis y compartición de threat intelligence.
- Bloquear a los actores maliciosos para que no accedan a ningún servicio de tu red.
Esta guía te lleva paso a paso por la implementación de un honeypot listo para producción en RouterOS, con soporte completo para IPv4 e IPv6.
¿Qué es un honeypot?
Un honeypot es un mecanismo de seguridad que crea un sistema señuelo diseñado para atraer y detectar atacantes. Según Fortinet, los honeypots son sistemas intencionalmente vulnerables que alejan a los adversarios de los objetivos legítimos mientras recopilan inteligencia sobre sus métodos. NIST SP 800-53 incluye los honeypots como un control de seguridad formal (SC-26) para detectar y analizar este tipo de ataques.
Existen dos tipos principales de honeypots:
| Tipo | Complejidad | Caso de uso |
|---|---|---|
| Baja interacción | Simple, recursos mínimos | Detecta escaneos automatizados y sondeos básicos. Simula servicios limitados. |
| Alta interacción | Complejo, SO/aplicaciones completos | Involucra a atacantes sofisticados para estudiar TTPs avanzados (Tácticas, Técnicas y Procedimientos). |
Este enfoque es ligero, no requiere hardware adicional y proporciona protección inmediata a la vez que genera logs valiosos.
Entendiendo los estados de conexión TCP
Antes de configurar nuestro honeypot, es esencial comprender cómo los firewalls con estado como MikroTik clasifican el tráfico de red. A cada packet se le asigna un estado de conexión:
| Estado | Significado | Ejemplo |
|---|---|---|
new | Primer packet de un intento de conexión (TCP SYN o primer packet UDP) | Escáner sondeando el puerto 22 |
established | Parte de una conexión ya aceptada (tráfico bidireccional detectado) | Sesión SSH en curso |
related | Nueva conexión relacionada con una existente | Canal de datos FTP, mensajes de error ICMP |
invalid | Packet que no pertenece a ninguna conexión conocida | Packets malformados, escaneos de puertos con flags inusuales |
Por qué solo monitorizamos conexiones “new”
Nuestras reglas de honeypot apuntan específicamente a connection-state=new. A continuación se explica por qué esto es crítico:
El reconocimiento ocurre en
new: Los atacantes envían packets SYN para sondear qué puertos están abiertos. Este es el primer packet, el estadonew.El tráfico established es legítimo: Una vez que una conexión completa el handshake y pasa a
established, ya fue aprobada por tus reglas de firewall. Atrapar packets established crearía falsos positivos.Eficiencia: Al examinar solo el primer packet de cada conexión, minimizamos la carga de CPU. El router no necesita inspeccionar cada packet, solo el sondeo inicial.
La estrategia: detectar, registrar y bloquear
Nuestra estrategia de honeypot tiene tres fases:
¿Por qué usar la tabla RAW para el bloqueo?
Realizamos la detección en la tabla Filter (cadena Input), pero aplicamos el bloqueo en la tabla Raw (cadena Prerouting).
Referencia de puertos trampa
Las siguientes tablas listan puertos comúnmente atacados, basándose en el registro de nombres de servicio y números de puerto de IANA. Son candidatos ideales para trampas de honeypot porque los usuarios legítimos de internet nunca deberían necesitar acceder a ellos en tu router.
Puertos trampa TCP
| Puerto(s) | Servicio | Categoría | Por qué los atacantes lo apuntan |
|---|---|---|---|
| 22 | SSH | Acceso remoto | Brute force de credenciales, claves SSH filtradas |
| 23 | Telnet | Acceso remoto | Sin cifrar, a menudo credenciales por defecto |
| 20, 21 | FTP | Legado | Transferencia sin cifrar, abuso de login anónimo |
| 25 | SMTP | Correo | Open relay para spam, campañas de phishing |
| 79 | Finger | Legado | Enumeración de usuarios en sistemas Unix |
| 110 | POP3 | Correo | Robo de credenciales, acceso a correo sin cifrar |
| 135 | MS-RPC | Windows | Exploits de ejecución remota de código |
| 137-139 | NetBIOS | Windows | Ataques de relay SMB, enumeración de red |
| 143 | IMAP | Correo | Robo de credenciales, acceso a correo sin cifrar |
| 389 | LDAP | Windows | Enumeración de Active Directory |
| 445 | SMB | Windows | EternalBlue (CVE-2017-0144), ransomware WannaCry |
| 502 | Modbus | Industrial | Ataques a sistemas ICS/SCADA |
| 512-514 | R-services | Legado | Ejecución remota sin autenticación |
| 593 | RPC/HTTP | Windows | Exploits de Exchange Server |
| 636 | LDAPS | Windows | Enumeración de Active Directory |
| 1433 | MSSQL | Base de datos | SQL injection, distribución de malware |
| 1521 | Oracle DB | Base de datos | Escalada de privilegios en bases de datos |
| 1883, 8883 | MQTT | IoT | Interceptación no autorizada de mensajes |
| 3128 | Squid Proxy | Proxy | Abuso de proxy abierto para anonimización |
| 3306 | MySQL | Base de datos | SQL injection, autenticación débil |
| 3389 | RDP | Acceso remoto | BlueKeep (CVE-2019-0708), entrega de ransomware |
| 5432 | PostgreSQL | Base de datos | Exploits de base de datos, robo de datos |
| 5900-5903 | VNC | Acceso remoto | Control de pantalla, a menudo sin contraseña o débil |
| 6000-6009 | X11 | Acceso remoto | Secuestro de pantalla en Unix |
| 6379 | Redis | Base de datos | Acceso sin autenticación, RCE vía EVAL |
| 8080, 8443, 8888 | HTTP Alt | Web/Admin | Paneles de administración, servidores de desarrollo |
| 8291 | Winbox | MikroTik | Toma de control del router mediante CVEs conocidos |
| 10000 | Webmin | Admin | RCE en interfaz de gestión web |
| 27017-27018 | MongoDB | Base de datos | Acceso sin autenticación, ransomware |
| 47808 | BACnet | Industrial | Ataques a sistemas de automatización de edificios |
Puertos trampa UDP
Los puertos UDP son especialmente valiosos para honeypots porque muchos se explotan en ataques de amplificación, donde los atacantes usan tu servidor para multiplicar el tráfico de ataque contra terceros.
| Puerto | Servicio | Categoría | Por qué los atacantes lo apuntan |
|---|---|---|---|
| 53 | DNS | Amplificación | Amplificación 100x+ para ataques DDoS |
| 69 | TFTP | Legado | Robo de archivos de configuración (sin autenticación) |
| 123 | NTP | Amplificación | Amplificación 500x+ mediante el comando monlist |
| 137-139 | NetBIOS | Windows | Enumeración de recursos compartidos de red |
| 161 | SNMP | Amplificación | Amplificación 650x, fuga de información del dispositivo |
| 520 | RIP | Enrutamiento | Ataques de inyección de rutas |
| 1900 | SSDP | Amplificación | Amplificación 30x mediante descubrimiento UPnP |
| 5060 | SIP | VoIP | Fraude telefónico, interceptación de llamadas |
| 5683 | CoAP | IoT | Explotación de dispositivos IoT |
| 11211 | Memcached | Amplificación | ¡Amplificación 52.000x! Vector de DDoS récord |
| 47808 | BACnet | Industrial | Sistemas de automatización de edificios |
Paso 1: crear la lista blanca
Antes de desplegar cualquier regla de bloqueo, debes crear una allowlist. Esto evita bloquearte accidentalmente a ti mismo, a tu VPN, sistemas de monitorización o servicios legítimos que necesitan acceder a puertos específicos.
Cuándo usar una allowlist
Considera añadir IPs a tu allowlist para:
- Tus propias IPs públicas — Casa, oficina o hotspots móviles que usas para gestión
- Endpoints VPN — Si te conectas mediante una VPN con IP estática
- Servicios de monitorización — Monitores de uptime, escáneres de vulnerabilidades que controlas
- Socios de confianza — Auditores de seguridad, proveedores de servicios gestionados
- Escáneres conocidos que hayas aprobado — Investigadores de seguridad que hayas incluido en la allowlist
Allowlist IPv4
# Create the whitelist for IPv4
/ip firewall address-list
# Your local networks (never block these)
add list=WhiteList address=192.168.0.0/24 comment="LAN - Main Network"
add list=WhiteList address=192.168.99.0/24 comment="LAN - IoT Network"
add list=WhiteList address=192.168.100.0/24 comment="VPN - WireGuard Devices"
# Your static public IPs (management access)
add list=WhiteList address=203.0.113.50 comment="Office Static IP"
add list=WhiteList address=198.51.100.25 comment="Home Static IP"
# Monitoring and security services
add list=WhiteList address=192.0.2.10 comment="Uptime Monitor - Pingdom"
add list=WhiteList address=192.0.2.20 comment="Vulnerability Scanner"Allowlist IPv6
# Create the whitelist for IPv6
/ipv6 firewall address-list
# Your local IPv6 networks
add list=WhiteList address=fd00::/8 comment="ULA - Private IPv6 Range"
add list=WhiteList address=2001:db8:1::/48 comment="Your Assigned IPv6 Prefix"
# Link-local addresses (never block)
add list=WhiteList address=fe80::/10 comment="Link-Local Addresses"
# Trusted external IPv6 addresses
add list=WhiteList address=2001:db8:2::100 comment="Office IPv6 Address"Paso 2: configuración del honeypot IPv4
Esta configuración incluye todas las reglas de detección del honeypot para IPv4, organizadas por categoría de servicio. Al final de la sección Filter, añadimos una regla DROP para bloquear inmediatamente cualquier origen que haya sido añadido a la lista negra antes de que pueda intentar otros ataques en la misma sesión.
honeypot-ipv4.rsc
# ═══════════════════════════════════════════════════════════════════════════════
# IPv4 HONEYPOT CONFIGURATION
# ═══════════════════════════════════════════════════════════════════════════════
# This configuration detects port scanners and blocks them automatically.
# Customize the ports based on your environment - don't trap ports you use!
# ═══════════════════════════════════════════════════════════════════════════════
# ───────────────────────────────────────────────────────────────────────────────
# FILTER TABLE - Detection Rules (Input Chain)
# ───────────────────────────────────────────────────────────────────────────────
# --- TCP: Remote Access Services ---
/ip firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=22,23,3389,5900-5903,8291,6000-6009 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT: Remote Access (SSH, Telnet, RDP, VNC, Winbox, X11)"
# --- TCP: Database Services ---
/ip firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=1433,1521,3306,5432,6379,27017,27018 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT: Databases (MSSQL, Oracle, MySQL, PostgreSQL, Redis, MongoDB)"
# --- TCP: Windows/Enterprise Services ---
/ip firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=135,137-139,445,389,636,593 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT: Windows Services (SMB, NetBIOS, LDAP, RPC)"
# --- TCP: Legacy Protocols ---
/ip firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=20,21,69,512-514,79 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT: Legacy Services (FTP, TFTP, R-services, Finger)"
# --- TCP: Insecure Mail Protocols ---
/ip firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=25,110,143 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT: Insecure Mail (SMTP, POP3, IMAP)"
# --- TCP: Web Admin Panels & Proxies ---
/ip firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=8080,8443,8888,3128,10000 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT: Web Admin/Proxy (Alt-HTTP, Squid, Webmin)"
# --- TCP: IoT & Industrial Protocols ---
/ip firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=1883,8883,502,47808 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT: IoT/Industrial (MQTT, Modbus, BACnet)"
# --- UDP: Amplification Attack Vectors ---
/ip firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners address-list-timeout=4h \
connection-state=new protocol=udp \
dst-port=53,123,161,1900,11211 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT UDP] " \
comment="HONEYPOT: UDP Amplification (DNS, NTP, SNMP, SSDP, Memcached)"
# --- UDP: Legacy Protocols ---
/ip firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners address-list-timeout=4h \
connection-state=new protocol=udp \
dst-port=69,137-139,520 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT UDP] " \
comment="HONEYPOT: UDP Legacy (TFTP, NetBIOS, RIP)"
# --- UDP: IoT & VoIP ---
/ip firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners address-list-timeout=4h \
connection-state=new protocol=udp \
dst-port=5683,47808,5060 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT UDP] " \
comment="HONEYPOT: UDP IoT/VoIP (CoAP, BACnet, SIP)"
# --- DROP already-blacklisted scanners (prevents further probing) ---
/ip firewall filter add chain=input action=drop \
in-interface-list=WAN src-address-list=BlackList_PortScanners \
comment="DROP: Blacklisted Port Scanners"
# ───────────────────────────────────────────────────────────────────────────────
# RAW TABLE - High-Performance Blocking (Prerouting Chain)
# ───────────────────────────────────────────────────────────────────────────────
# The RAW table processes packets BEFORE connection tracking.
# Blocking here is more efficient and reduces CPU/memory usage.
/ip firewall raw add chain=prerouting action=drop \
in-interface-list=WAN src-address-list=BlackList_PortScanners \
comment="DROP: Blacklisted Port Scanners (RAW - High Performance)"Paso 3: configuración del honeypot IPv6
El escaneo IPv6 está aumentando rápidamente a medida que más redes adoptan configuraciones dual-stack. La estructura es idéntica a IPv4, usando una lista de direcciones separada para los escáneres IPv6.
honeypot-ipv6.rsc
# ═══════════════════════════════════════════════════════════════════════════════
# IPv6 HONEYPOT CONFIGURATION
# ═══════════════════════════════════════════════════════════════════════════════
# Mirrors the IPv4 configuration for comprehensive dual-stack protection.
# Uses a separate address list: BlackList_PortScanners_v6
# ═══════════════════════════════════════════════════════════════════════════════
# ───────────────────────────────────────────────────────────────────────────────
# FILTER TABLE - Detection Rules (Input Chain)
# ───────────────────────────────────────────────────────────────────────────────
# --- TCP: Remote Access Services ---
/ipv6 firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners_v6 address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=22,23,3389,5900-5903,8291,6000-6009 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT IPv6: Remote Access (SSH, Telnet, RDP, VNC, Winbox, X11)"
# --- TCP: Database Services ---
/ipv6 firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners_v6 address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=1433,1521,3306,5432,6379,27017,27018 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT IPv6: Databases (MSSQL, Oracle, MySQL, PostgreSQL, Redis, MongoDB)"
# --- TCP: Windows/Enterprise Services ---
/ipv6 firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners_v6 address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=135,137-139,445,389,636,593 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT IPv6: Windows Services (SMB, NetBIOS, LDAP, RPC)"
# --- TCP: Legacy Protocols ---
/ipv6 firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners_v6 address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=20,21,69,512-514,79 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT IPv6: Legacy Services (FTP, TFTP, R-services, Finger)"
# --- TCP: Insecure Mail Protocols ---
/ipv6 firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners_v6 address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=25,110,143 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT IPv6: Insecure Mail (SMTP, POP3, IMAP)"
# --- TCP: Web Admin Panels & Proxies ---
/ipv6 firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners_v6 address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=8080,8443,8888,3128,10000 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT IPv6: Web Admin/Proxy (Alt-HTTP, Squid, Webmin)"
# --- TCP: IoT & Industrial Protocols ---
/ipv6 firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners_v6 address-list-timeout=4h \
connection-state=new protocol=tcp \
dst-port=1883,8883,502,47808 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT TCP] " \
comment="HONEYPOT IPv6: IoT/Industrial (MQTT, Modbus, BACnet)"
# --- UDP: Amplification Attack Vectors ---
/ipv6 firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners_v6 address-list-timeout=4h \
connection-state=new protocol=udp \
dst-port=53,123,161,1900,11211 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT UDP] " \
comment="HONEYPOT IPv6: UDP Amplification (DNS, NTP, SNMP, SSDP, Memcached)"
# --- UDP: Legacy Protocols ---
/ipv6 firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners_v6 address-list-timeout=4h \
connection-state=new protocol=udp \
dst-port=69,137-139,520 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT UDP] " \
comment="HONEYPOT IPv6: UDP Legacy (TFTP, NetBIOS, RIP)"
# --- UDP: IoT & VoIP ---
/ipv6 firewall filter add chain=input action=add-src-to-address-list \
address-list=BlackList_PortScanners_v6 address-list-timeout=4h \
connection-state=new protocol=udp \
dst-port=5683,47808,5060 \
in-interface-list=WAN src-address-list=!WhiteList \
log=yes log-prefix="[HONEYPOT UDP] " \
comment="HONEYPOT IPv6: UDP IoT/VoIP (CoAP, BACnet, SIP)"
# --- DROP already-blacklisted scanners ---
/ipv6 firewall filter add chain=input action=drop \
in-interface-list=WAN src-address-list=BlackList_PortScanners_v6 \
comment="DROP: Blacklisted IPv6 Port Scanners"
# ───────────────────────────────────────────────────────────────────────────────
# RAW TABLE - High-Performance Blocking (Prerouting Chain)
# ───────────────────────────────────────────────────────────────────────────────
/ipv6 firewall raw add chain=prerouting action=drop \
in-interface-list=WAN src-address-list=BlackList_PortScanners_v6 \
comment="DROP: Blacklisted IPv6 Port Scanners (RAW - High Performance)"Comprendiendo la configuración
Examinemos los parámetros clave que hacen efectivo este honeypot:
| Parámetro | Valor | Propósito |
|---|---|---|
chain=input | input | Apunta al tráfico destinado al propio router, no al tráfico reenviado. |
connection-state=new | new | Solo se activa con el primer packet de una conexión (SYN). Previene falsos positivos de sesiones establecidas. |
address-list-timeout=4h | 4 horas | Bloqueo temporal. Las IPs dinámicas cambian, así que los bloqueos permanentes arriesgan bloquear a usuarios legítimos después. |
src-address-list=!WhiteList | NOT WhiteList | El operador ! excluye las IPs de la allowlist. Crítico para evitar bloquearte a ti mismo. |
log=yes | Activado | Registra cada detección en el log del sistema. Esencial para análisis y threat intelligence. |
log-prefix="[HONEYPOT TCP] " | Prefijo personalizado | Etiqueta las entradas de log para filtrado fácil. Útil para reenviar a sistemas externos. |
in-interface-list=WAN | Interfaces WAN | Solo monitoriza tráfico de redes externas, no dispositivos LAN. |
Aprovechando los logs para threat intelligence
El parámetro log=yes genera entradas que pueden reenviarse a sistemas de seguridad externos. Configurando MikroTik para enviar logs a un servidor syslog remoto, puedes:
- Alimentar CrowdSec — Contribuir con atacantes detectados a la blocklist comunitaria y recibir protección contra ataques vistos globalmente.
- Reportar a AbuseIPDB — Compartir threat intelligence y ayudar a otros a bloquear IPs maliciosas conocidas.
- Crear dashboards — Visualizar patrones de ataque, países de origen y puertos objetivo.
# Configure remote syslog destination
/system logging action set [find name=remote] remote=192.168.0.100 src-address=192.168.0.1
# Send firewall logs (including honeypot) to remote server
/system logging add action=remote topics=firewall prefix="[FIREWALL]"Integración con CrowdSec
A continuación se muestra una configuración funcional para parsear los logs del honeypot MikroTik con CrowdSec. Esta configuración captura los prefijos [HONEYPOT TCP/UDP] que configuramos anteriormente y extrae las IPs de los atacantes para bloqueo automático.
Paso 1: recibir logs mediante rsyslog
En tu servidor Linux que ejecuta CrowdSec, configura rsyslog para recibir syslog UDP desde MikroTik y escribirlo en un archivo dedicado:
# Load UDP input module
module(load="imudp")
input(type="imudp" port="514")
# Write all UDP syslog to MikroTik log file
if ($inputname == "imudp") then {
action(type="omfile" file="/var/log/mikrotik.log")
stop
}Tras crear este archivo, reinicia rsyslog:
Puedes verificar que los logs están llegando comprobando el archivo:
2026-01-19T10:37:39.291+01:00 mikrotik firewall,info [FIREWALL]: [HONEYPOT TCP] input: in:PPPoE_DIGI out:(unknown 0), connection-state:new proto TCP (SYN), 167.94.138.144:33601->YOUR_WAN_IP:389, len 60
2026-01-19T10:38:50.781+01:00 mikrotik firewall,info [FIREWALL]: [HONEYPOT TCP] input: in:PPPoE_DIGI out:(unknown 0), connection-state:new proto TCP (SYN), 109.227.42.233:48036->YOUR_WAN_IP:23, len 60
2026-01-19T10:44:01.360+01:00 mikrotik firewall,info [FIREWALL]: [HONEYPOT TCP] input: in:PPPoE_DIGI out:(unknown 0), connection-state:new proto TCP (SYN), 102.156.174.56:61901->YOUR_WAN_IP:445, len 52Paso 2: configurar la adquisición en CrowdSec
Indica a CrowdSec que lea el archivo de log de MikroTik. Crea un archivo de adquisición:
filenames:
- /var/log/mikrotik.log
labels:
type: mikrotik-logs
source: filePaso 3: instalar el parser de MikroTik
Instala el parser comunitario de MikroTik desde CrowdSec Hub:
Paso 4: parser personalizado para logs del honeypot (opcional)
Para un parseo avanzado que capture específicamente nuestros prefijos [HONEYPOT TCP/UDP], crea un parser personalizado:
/etc/crowdsec/parsers/s01-parse/mikrotik-honeypot.yaml
onsuccess: next_stage
name: local/mikrotik-honeypot
description: "Parser for MikroTik honeypot firewall logs"
filter: "evt.Line.Raw contains '[HONEYPOT'"
pattern_syntax:
# Pattern for honeypot detections with [HONEYPOT TCP] or [HONEYPOT UDP] prefix
MIKROTIK_HONEYPOT: '^%{TIMESTAMP_ISO8601:timestamp} %{HOSTNAME} firewall,.*? \[HONEYPOT %{WORD:hp_proto}\]\s+%{WORD:chain}: in:%{DATA:if_in} out:%{DATA:if_out},.*?proto %{WORD:proto}.*?, %{IP:source_ip}:%{INT:src_port}->%{IP:dst_ip}:%{INT:dst_port}.*len %{INT:length}'
nodes:
- grok:
pattern: "%{MIKROTIK_HONEYPOT}"
apply_on: Line.Raw
statics:
- meta: service
value: mikrotik_honeypot
- meta: log_type
value: honeypot_detection
- meta: dst_port
expression: "evt.Parsed.dst_port"
- meta: proto
expression: "evt.Parsed.proto"
statics:
- meta: source_ip
expression: "evt.Parsed.source_ip"
- target: evt.StrTime
expression: "evt.Parsed.timestamp"Paso 5: recargar CrowdSec
Tras añadir el parser y la configuración de adquisición, recarga CrowdSec:
Verifica que la adquisición está funcionando:
Deberías ver /var/log/mikrotik.log en las fuentes de adquisición con líneas parseadas incrementándose a medida que ocurren eventos del honeypot.
Resultados reales
Para darte una idea de qué esperar, aquí tienes estadísticas reales de mi red doméstica en un período de 24 horas — un MikroTik RB5009 detrás de una conexión FTTH estándar en España:
Probando tu honeypot
Antes de considerar tu honeypot listo para producción, verifica que funciona correctamente:
Procedimiento de prueba
- Añade tu IP de prueba para monitorizar (opcional):
/log print follow where message~"HONEYPOT"Desde una IP que NO esté en tu allowlist (p.ej., datos móviles):
- Intenta conectarte a un puerto trampa:
telnet TU_IP_WAN 23 - O intenta SSH:
ssh root@TU_IP_WAN
- Intenta conectarte a un puerto trampa:
Comprueba la lista de direcciones:
/ip firewall address-list print where list~"BlackList"Tu IP de prueba debería aparecer con la cuenta atrás del timeout.
Verifica que el bloqueo funciona:
- Intenta hacer ping al router desde la misma IP
- Debería dar timeout (la regla RAW descarta todo el tráfico)
Limpieza (eliminar la IP de prueba):
/ip firewall address-list remove [find address=YOUR_TEST_IP]Siguientes pasos
Ahora tienes un router que se defiende a sí mismo y que:
- Detecta intentos de reconocimiento en tiempo real
- Registra las IPs de los atacantes con prefijos estructurados
- Bloquea a los atacantes en el punto más temprano posible (tabla RAW)
- Protege tanto IPv4 como IPv6
- Se integra con CrowdSec para threat intelligence comunitaria
Considera ampliar esta configuración con:
- Reportar a AbuseIPDB — Comparte threat intelligence con la comunidad de seguridad más amplia
- Crear dashboards en Grafana — Visualiza patrones de ataque, países de origen y puertos objetivo
- Configurar alertas — Recibe notificaciones cuando se ataquen puertos específicos o aumente el volumen de ataques