# Honeypot en MikroTik: Atrapa y Bloquea Escáneres de Puertos

> Una entrada de jmrp.io, publicada como documento propio. Índice: https://jmrp.io/llms-full.txt

> Generated: 2026-08-31

URL: https://jmrp.io/es/blog/006-implementing-mikrotik-honeypot/
Language: es
Alternate: https://jmrp.io/blog/006-implementing-mikrotik-honeypot/index.md
License: https://creativecommons.org/licenses/by/4.0/
Type: TechArticle
Published: 2026-01-19
Updated: 2026-08-22
Last verified: 2026-08-22 · RouterOS 7.24 · RB5009UG+S+
Author: José Manuel Requena Plens
Summary: Configura un honeypot en MikroTik para detectar escáneres de puertos, registrar actividad maliciosa y bloquear atacantes automáticamente con la tabla RAW.
Tags: MikroTik, Security, Networking
Topics: Honeypot (Q911932), MikroTik (Q913580), Firewall (Q80998), Port scanner (Q833766), IPv6 (Q2551624), Denial-of-service attack (Q131406)

Preguntas que responde:

**¿Qué es un honeypot?**

Un honeypot es un mecanismo de seguridad que crea un sistema señuelo diseñado para atraer y detectar atacantes, alejándolos de los objetivos legítimos mientras recopila inteligencia sobre sus métodos. NIST SP 800-53 incluye los honeypots como un control de seguridad formal (SC-26).

**¿Por qué el honeypot solo monitoriza conexiones "new"?**

El reconocimiento ocurre en el primer paquete (el TCP SYN), que lleva el estado "new". Apuntar solo a "new" evita falsos positivos de sesiones legítimas ya establecidas y minimiza la carga de CPU, ya que solo se inspecciona el sondeo inicial.

**¿Por qué usar la tabla RAW en lugar de la tabla Filter para bloquear escáneres?**

La tabla RAW procesa los paquetes antes del connection tracking, así que bloquear ahí a los atacantes de la lista negra hace que el router no asigne memoria ni CPU para rastrear sus conexiones. En routers que gestionan miles de ataques diarios esto reduce significativamente el uso de recursos; la detección sigue ejecutándose en la tabla Filter.

**¿Cómo evito bloquearme a mí mismo al desplegar el honeypot?**

Crea una lista blanca (address-list) y añade tu propia IP antes de activar cualquier regla. Las reglas del honeypot usan src-address-list=!WhiteList, así que las IPs de la allowlist nunca se bloquean; si te bloqueas a ti mismo necesitarás acceso físico para recuperarte.

**¿Por qué las IPs bloqueadas se banean solo 4 horas en lugar de permanentemente?**

Las reglas usan address-list-timeout=4h para un bloqueo temporal. Las IPs de los atacantes suelen ser dinámicas y reasignarse, por lo que los bloqueos permanentes arriesgan bloquear a usuarios legítimos después.

**¿Funciona el honeypot con IPv6?**

Sí. La guía incluye una configuración IPv6 separada idéntica a IPv4, usando una lista de direcciones distinta BlackList_PortScanners_v6 para una protección dual-stack completa.


Pasos (Crear un honeypot en MikroTik para atrapar y bloquear escáneres de puertos):
1. Crear la lista blanca
2. Desplegar la configuración del honeypot IPv4
3. Desplegar la configuración del honeypot IPv6
4. Reenviar los logs a un servidor syslog remoto
5. Integrar los logs con CrowdSec
6. Probar el honeypot

---

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](/es/blog/005-implementing-tarpit-nginx/). Pero, ¿y si pudieras convertir estos ataques en inteligencia accionable? Configurando tu router **MikroTik** como un **honeypot** ligero, puedes:

1. **Detectar** reconocimientos no autorizados antes de que se conviertan en una brecha.
2. **Registrar** las IPs de los atacantes para análisis y compartición de threat intelligence.
3. **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.

## TL;DR — el honeypot de MikroTik en pocas palabras

- **Atrapa y bloquea automáticamente**: las reglas de detección en la tabla Filter coinciden con `connection-state=new` en puertos trampa y ejecutan `add-src-to-address-list` para incluir a los escáneres en la lista negra de forma automática.
- **Bloqueo de alto rendimiento**: una regla drop en prerouting de la tabla RAW descarta el tráfico de la lista negra antes del connection tracking, ahorrando CPU y memoria en routers que reciben miles de ataques.
- **No te bloquees a ti mismo**: crea primero una `WhiteList`; las reglas usan `src-address-list=!WhiteList` y los baneos usan `address-list-timeout=4h` para evitar bloqueos permanentes de IPs dinámicas.
- **Dual-stack**: un conjunto de reglas IPv6 idéntico usa una lista `BlackList_PortScanners_v6` separada para cobertura completa de IPv4 e IPv6.
- **Threat intelligence**: reenvía los logs del firewall con prefijo `[HONEYPOT]` a un servidor syslog remoto e intégralos con CrowdSec para recopilar las IPs de los atacantes.

---

## ¿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](https://www.fortinet.com/resources/cyberglossary/what-is-honeypot), 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](https://csf.tools/reference/nist-sp-800-53/r5/sc/sc-26/) 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:

**Tipos 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](https://attack.mitre.org/) avanzados (Tácticas, Técnicas y Procedimientos). |

**Información — Lo que vamos a construir**

En esta guía implementamos un **honeypot de baja interacción** directamente en el firewall de MikroTik. No ejecutamos servicios falsos; en su lugar, monitorizamos intentos de conexión a puertos que *nunca deberían recibir tráfico legítimo* desde internet. Cualquier conexión a estos "puertos trampa" identifica inmediatamente al origen como un escáner.

Este enfoque es ligero, no requiere hardware adicional y proporciona protección inmediata a la vez que genera logs valiosos.

---

## Entender 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 paquete se le asigna un **estado de conexión**:

**Estados de conexión en RouterOS**

| Estado | Significado | Ejemplo |
| --- | --- | --- |
| `new` | Primer paquete de un intento de conexión (TCP SYN o primer paquete 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` | Paquete que no pertenece a ninguna conexión conocida | Paquetes 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:

**Handshake TCP de tres vías**

```mermaid
sequenceDiagram
    participant Escáner
    participant Router
    
    Escáner->>Router: SYN (nueva conexión)
    Note right of Router: ¡El honeypot se activa aquí!
    Router-->>Escáner: SYN-ACK
    Escáner->>Router: ACK
    Note over Escáner,Router: Conexión ahora "established"
```

1. **El reconocimiento ocurre en `new`**: Los atacantes envían paquetes SYN para sondear qué puertos están abiertos. Este es el primer paquete, el estado `new`.

2. **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 paquetes established crearía falsos positivos.

3. **Eficiencia**: Al examinar solo el primer paquete de cada conexión, minimizamos la carga de CPU. El router no necesita inspeccionar cada paquete, solo el sondeo inicial.

**Advertencia — Nunca atrapes tráfico established**

Si tus reglas de honeypot coincidieran con conexiones `established`, bloquearías tráfico de retorno legítimo de servicios que realmente usas. Usa siempre `connection-state=new`.

---

## La estrategia: detectar, registrar y bloquear

Nuestra estrategia de honeypot tiene tres fases:

**Flujo de detección del honeypot**

```mermaid
flowchart TD
    classDef warning fill:#e6a700,color:#000
    classDef danger fill:#c53030,color:#fff
    classDef success fill:#2d7d32,color:#fff
    
    A[Escáner de Internet] --> B{¿IP en lista negra?}
    B -->|Sí: Tabla RAW| C["DROP instantáneo"]:::danger
    B -->|No| D{¿Puerto trampa?}
    
    D -->|No: Puerto 80/443| E["Permitir - Servidor Web"]:::success
    D -->|Sí: Puerto 22/3389/etc.| F["Honeypot activado"]:::warning
    
    F --> G["Registrar con prefijo"]
    G -.-> G2["Syslog remoto"]
    
    F --> H["Añadir IP a BlackList"]
    H --> I["Descartar paquete actual (Filter)"]:::danger
```

### ¿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).

**Consejo — Ventaja de rendimiento**

La **[tabla Raw](https://help.mikrotik.com/docs/spaces/ROS/pages/250708066/Firewall)** procesa los paquetes *antes* del [Connection Tracking](https://help.mikrotik.com/docs/spaces/ROS/pages/130220087/Connection+tracking). Al bloquear a los atacantes aquí, el router no asigna memoria ni ciclos de CPU para rastrear sus conexiones. En routers que gestionan miles de ataques diarios, esto puede reducir significativamente el uso de recursos.

---

## 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](https://www.iana.org/assignments/service-names-port-numbers). Son candidatos ideales para trampas de honeypot porque los usuarios legítimos de internet *nunca* deberían necesitar acceder a ellos en tu router.

**Importante — Personaliza según tu entorno**

Antes de implementar, revisa qué servicios expones realmente. Si ejecutas un servidor SSH público en el puerto 22, ¡no pongas trampa en ese puerto! Los ejemplos a continuación asumen que solo ejecutas servidores web en los puertos 80/443.

### Puertos trampa TCP

**Puertos TCP para detección del honeypot**

| 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)](https://nvd.nist.gov/vuln/detail/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)](https://www.cisa.gov/news-events/cybersecurity-advisories/aa19-168a), 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](https://mikrotik.com/supportsec) |
| 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](https://www.cloudflare.com/learning/ddos/drdos-ddos-attack/)**, donde los atacantes usan tu servidor para multiplicar el tráfico de ataque contra terceros.

**Puertos UDP para detección del honeypot**

| 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+](https://www.cisa.gov/news-events/alerts/2014/01/13/ntp-amplification-attacks-using-cve-2013-5211) 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](https://github.blog/news-insights/company-news/ddos-incident-report/) |
| 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

**Advertencia — Prueba antes de bloquear**

Añade tu IP actual a la allowlist *antes* de activar cualquier regla de honeypot. Si te bloqueas a ti mismo, necesitarás acceso físico al router para recuperarte.

### Allowlist IPv4

**Creación de la allowlist IPv4**

```routeros
# 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

**Creación de la allowlist IPv6**

```routeros
# 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.

**Advertencia — Personaliza según tu configuración**

Las reglas a continuación usan `in-interface-list=WAN` para identificar tráfico externo. Si tu router usa un nombre de lista de interfaces diferente (p.ej., `internet`, `external`, o una interfaz específica como `ether1`), actualiza este valor. Comprueba tu configuración con `/interface list print`.

**Fichero: `honeypot-ipv4.rsc` — Configuración completa del honeypot IPv4**

```routeros
# ═══════════════════════════════════════════════════════════════════════════════
# 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.

**Fichero: `honeypot-ipv6.rsc` — Configuración completa del honeypot IPv6**

```routeros
# ═══════════════════════════════════════════════════════════════════════════════
# 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)"
```

---

## Comprender la configuración

Examinemos los parámetros clave que hacen efectivo este honeypot:

**Referencia de parámetros de las reglas**

| 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 paquete** 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. |

---

## Aprovechar 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:

1. **Alimentar [CrowdSec](https://www.crowdsec.net/)** — Contribuir con atacantes detectados a la blocklist comunitaria y recibir protección contra ataques vistos globalmente.
2. **Reportar a [AbuseIPDB](https://www.abuseipdb.com/)** — Compartir threat intelligence y ayudar a otros a bloquear IPs maliciosas conocidas.
3. **Crear dashboards** — Visualizar patrones de ataque, países de origen y puertos objetivo.

**Advertencia — Personaliza las direcciones IP**

Reemplaza `192.168.0.100` con la dirección IP de tu servidor syslog (la máquina que ejecuta CrowdSec) y `192.168.0.1` con la IP LAN de tu router.

**Configuración de syslog remoto**

```routeros
# 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](https://www.crowdsec.net/). 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:

**Fichero: `/etc/rsyslog.d/10-mikrotik.conf` — Configuración de rsyslog para MikroTik**

```bash
# 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:

**Comando para reiniciar rsyslog**

```bash
sudo systemctl restart rsyslog
```

Puedes verificar que los logs están llegando comprobando el archivo:

**Salida — tail -f /var/log/mikrotik.log**

```text
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 52
```

#### Paso 2: configurar la adquisición en CrowdSec

Indica a CrowdSec que lea el archivo de log de MikroTik. Crea un archivo de adquisición:

**Fichero: `/etc/crowdsec/acquis.d/mikrotik.yaml` — Adquisición de MikroTik en CrowdSec**

```yaml
filenames:
  - /var/log/mikrotik.log
labels:
  type: mikrotik-logs
source: file
```

#### Paso 3: instalar el parser de MikroTik

Instala el parser comunitario de MikroTik desde CrowdSec Hub:

**Comando para instalar el parser de MikroTik**

```bash
sudo cscli parsers install a1ad/mikrotik-logs
```

#### 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:

**Fichero: `/etc/crowdsec/parsers/s01-parse/mikrotik-honeypot.yaml` — Parser personalizado del 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:

**Comando para recargar CrowdSec**

```bash
sudo systemctl reload crowdsec
```

Verifica que la adquisición está funcionando:

**Comando para verificar las métricas de CrowdSec**

```bash
sudo cscli metrics
```

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:

**Distribución de ataques por puerto**

| Elemento | Valor | % del total |
| --- | --- | --- |
| Telnet (23) | 535 | 42.1% |
| SSH (22) | 216 | 17% |
| SMB (445) | 172 | 13.5% |
| HTTP Alt (8080) | 106 | 8.3% |
| RDP (3389) | 80 | 6.3% |
| MSSQL (1433) | 63 | 5% |
| HTTPS Alt (8443) | 51 | 4% |
| MySQL (3306) | 49 | 3.9% |

Datos recopilados durante 24 horas en mi conexión doméstica

**Principales países atacantes**

| Elemento | Valor | % del total |
| --- | --- | --- |
| Estados Unidos (US) | 484 | 44.1% |
| Países Bajos (NL) | 194 | 17.7% |
| China (CN) | 127 | 11.6% |
| Brasil (BR) | 81 | 7.4% |
| Rusia (RU) | 59 | 5.4% |
| Bulgaria (BG) | 58 | 5.3% |
| Alemania (DE) | 50 | 4.6% |
| India (IN) | 44 | 4% |

Países de origen de las IPs bloqueadas

**Principales organizaciones atacantes (ASNs)**

| Elemento | Valor | % del total |
| --- | --- | --- |
| DigitalOcean | 180 | 35.4% |
| Google Cloud | 108 | 21.3% |
| Microsoft | 83 | 16.3% |
| Hurricane Electric | 80 | 15.7% |
| Chinanet | 57 | 11.2% |

Top 5 de redes que originan ataques

**Correcto — Cada escáner bloqueado en el primer intento**

Más de **1.000 IPs únicas** fueron detectadas y bloqueadas en las últimas 24 horas. Cada una fue inmediatamente añadida a la blocklist de MikroTik y registrada en CrowdSec. La regla de la tabla RAW garantiza que estos escáneres no puedan sondear ningún otro servicio — su primer paquete de reconocimiento es el último.

---

## Probar tu honeypot

Antes de considerar tu honeypot listo para producción, verifica que funciona correctamente:

### Procedimiento de prueba

1. **Añade tu IP de prueba para monitorizar** (opcional):

**Monitorizar logs del honeypot**

```routeros
/log print follow where message~"HONEYPOT"
```

2. **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`

3. **Comprueba la lista de direcciones**:

**Comprobar IPs en la lista negra**

```routeros
/ip firewall address-list print where list~"BlackList"
```

Tu IP de prueba debería aparecer con la cuenta atrás del timeout.

4. **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)

5. **Limpieza** (eliminar la IP de prueba):

**Eliminar IP de prueba de la lista negra**

```routeros
/ip firewall address-list remove [find address=YOUR_TEST_IP]
```

---

## Lo que este honeypot ha capturado de verdad

Esta guía describe el honeypot que corre en mi propio router de borde, y su
contador es público: la [página del homelab](/es/homelab/) publica los hits
junto a la lista de baneos de CrowdSec, inyectados por el servidor de borde al
responder y no por JavaScript — el rastreador y tú veis el mismo número.
Marcaba **3.341 hits** cuando se escribió esta nota (22-08-2026), y marcará otra
cosa cuando llegues aquí, que es justamente el motivo de dejar el contador vivo
en lugar de congelar una cifra en este párrafo.

Conviene saberlo antes de leer demasiado en un número suelto: un honeypot en una
IP residencial cuenta escaneo *indiscriminado*, no ataques dirigidos a ti. El
valor está en el patrón —qué puertos, desde dónde, cómo evoluciona el volumen—,
no en el total.

## 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:

1. **Reportar a [AbuseIPDB](https://www.abuseipdb.com/)** — Comparte threat intelligence con la comunidad de seguridad más amplia
2. **Crear dashboards en Grafana** — Visualiza patrones de ataque, países de origen y puertos objetivo
3. **Configurar alertas** — Recibe notificaciones cuando se ataquen puertos específicos o aumente el volumen de ataques

