Skip to main contentSkip to footer

Honeypot Server

Un Honeypot Server de código abierto que detecta ataques y aporta automáticamente Threat Intelligence a la comunidad reportedIP. Implántalo junto a tu infraestructura para atrapar a los atacantes antes de que lleguen a tus sistemas reales.

¿Qué es un Honeypot?

Un Honeypot es un sistema señuelo diseñado para atraer y detectar a los atacantes. Imita servicios reales, pero no tiene ningún propósito legítimo: cualquier interacción con él es intrínsecamente sospechosa.

El Honeypot Server de ReportedIP emula instalaciones vulnerables de CMS para identificar direcciones IP maliciosas. Cuando un atacante intenta un Login por Brute Force, busca vulnerabilidades conocidas o escanea en busca de vulnerabilidades, el honeypot captura la dirección IP de origen y los detalles del ataque, y luego los comunica automáticamente a la ReportedIP API.

CMS Emulation

El Honeypot Server simula páginas de Login y paneles de administración de sistemas de gestión de contenidos populares. Los atacantes que intentan ataques de Brute Force o mediante vulnerabilidades son detectados y notificados de inmediato.

CMS Rutas emuladas Detección
WordPress /wp-login.php, /wp-admin/, /xmlrpc.php Ataques de Brute Force al Login, uso indebido de XML-RPC, vulnerabilidades en plugins
Drupal /user/login, /admin/ Intentos de Login, firmas de Drupalgeddon
Joomla /administrator/, /index.php/component/users/ Ataques de Brute Force al administrador, vulnerabilidades en componentes

Threat Analyzers

El Honeypot incluye 36 analizadores integrados que inspeccionan cada solicitud entrante en busca de patrones y técnicas de ataque conocidos:

Analizador Descripción
Detección de Brute Force Identifica intentos repetidos de Login procedentes de la misma fuente
SQL Injection Detecta Payloads de SQL Injection en parámetros y encabezados
Payloads de XSS Detecta intentos de cross-site scripting en los datos de las solicitudes
Recorrido de directorios Identifica secuencias de recorrido de directorios (../, ..\\)
Firmaturas de exploits conocidas Compara las solicitudes con una base de datos de vulnerabilidades CVE conocidas
Credential Stuffing Detecta pruebas automatizadas de credenciales con distintos pares de nombre de usuario y contraseña
Enumeración de directorios Identifica el escaneo sistemático en busca de archivos y directorios confidenciales
Uso indebido de XML-RPC Detecta la amplificación de pingback y los ataques de Brute-Force a métodos a través de XML-RPC

Informes automáticos

Cada ataque detectado se notifica automáticamente a la ReportedIP API sin intervención manual. Cada informe incluye:

  • IP de origen: la dirección IP del atacante
  • Tipo de ataque: el patrón de ataque específico detectado
  • ID de categoría: asignado a una de las 30 Threat Categories predefinidas
  • Marcas de tiempo: hora exacta de cada evento de ataque
Mayor fiabilidad: los informes de los honeypots tienen mayor peso en el cálculo del Confidence Score. Las direcciones IP notificadas por los honeypots reciben una bonificación específica y sus informes mantienen su relevancia durante más tiempo debido a una menor cantidad de Time Dampening.

Repercusión en el Confidence Score

Los informes de honeypots tienen un peso especial en el sistema de reputación porque representan una actividad maliciosa confirmada: no hay ninguna razón legítima para interactuar con un honeypot. El sistema aplica una bonificación específica por honeypot además del Confidence Score base.

Ventaja Detalle
Bonificación de Honeypot Se añaden hasta +25 puntos al Confidence Score
Reducción del factor de Time Dampening Los informes mantienen su relevancia durante más tiempo; la proporción de Honeypots reduce el factor de decaimiento
Mayor ponderación de confianza Los informes de honeypot se multiplican por honeypot_report_weight_multiplier (por defecto: 2,0x)
Confianza mínima Con ≥2 informes de Honeypot, se garantiza un mínimo del 25 % de confianza

Fórmula de bonificación de Honeypot

text
base_bonus = honeypot_count * base_bonus_per_report

# Diversity requirement
diversity_factor = min(unique_reporters / diversity_divisor, 1.0)
base_bonus = base_bonus * diversity_factor

# Single reporter penalty (if > 5 honeypot reports & only 1 reporter)
if honeypot_reports > threshold AND unique_reporters == 1:
    penalty = 10

final_bonus = min(base_bonus - penalty, 25)

# Time dampening reduction
honeypot_ratio = honeypot_reports_count / report_count
dampening_reduction = honeypot_ratio * 0.5
time_dampening_factor = min(1.0, time_dampening_factor + dampening_reduction)

Requisitos

El Honeypot Server es una aplicación PHP autónoma sin dependencias externas de Composer. Almacena todo en una base de datos SQLite local, por lo que no se requiere un servidor de bases de datos independiente.

  • PHP 8.2+ con el pdo_sqlite, curl, y json extensiones
  • nginx o Apache que redirijan todas las solicitudes a public/index.php
  • SQLite para su almacenamiento — no se necesita ningún servidor MySQL/PostgreSQL

Instalación

Docker (recomendado)

La forma más rápida de empezar. Clona el repositorio e inicia la pila de Compose incluida:

bash
git clone https://github.com/reportedip/honeypot-server.git
cd honeypot-server
docker compose -f docker/docker-compose.yml up -d

Abre la URL del contenedor en tu navegador: el instalador web se inicia automáticamente en la primera visita y te guía a través de las comprobaciones del sistema, la introducción de la API Key, la selección del CMS y las credenciales de administrador. Necesitas una API Key de ReportedIP para el paso de generación de informes; consulta «Autenticación y Rate Limits» para saber cómo crear una (se asignan, previa solicitud, claves dedicadas para honeypots con generación de informes Unlimited).

Configuración manual

Clona el repositorio y configura tu servidor web para que apunte al public/ directorio. Las configuraciones de plantilla para ambos servidores web se incluyen en el repositorio:

bash
git clone https://github.com/reportedip/honeypot-server.git
cd honeypot-server

# nginx: adapt the bundled example
cp config/nginx.conf.example /etc/nginx/sites-available/honeypot.conf

# Apache: copy the htaccess template into the document root
cp config/apache.htaccess.example public/.htaccess

A continuación, abre la URL del sitio en tu navegador. El instalador web te guiará a través de las comprobaciones del sistema, la introducción de la API Key, la selección del CMS, las credenciales de administrador y la configuración opcional de OpenAI.

Configuración

La mayoría de los ajustes se configuran mediante el instalador web en la primera ejecución. Se pueden modificar posteriormente en el panel de administración o en el archivo de configuración.

Configuración Valor por defecto Descripción
api_key Tu Community Access Key de ReportedIP (obligatoria). Utiliza una clave con función de «Honeypot» para disfrutar de informes Unlimited; solicítala en 1@reportedip.com.
cms_profile wordpress Perfil de CMS que se va a emular: wordpress, drupal, o joomla.
admin_path /_hp_admin ruta URL del panel de administración. Elige un valor que no sea obvio para mantenerlo oculto.
trusted_proxies CIDR de Cloudflare Rangos de IP de proxy utilizados para resolver la IP real del cliente detrás de una CDN.
rate_limit_per_ip 10 Número máximo de entradas de registro almacenadas por IP por minuto.
report_rate_limit 60 Número máximo de informes de API enviados por minuto.
report_batch_size 10 Número de Reports en cola transmitidos por lote cron.
queue_mode web Modo de procesamiento de la cola de informes: web (después de cada visita a la página) o cron.
log_retention_days 90 Días antes de que las entradas antiguas del registro se eliminen automáticamente.
openai_api_key Clave OpenAI opcional para contenido señuelo generado por IA.

Procesamiento de la cola

Los ataques detectados se ponen en cola y se reenvían a la ReportedIP API en pequeños lotes. Hay dos modos disponibles:

  • Cron web (predeterminado): la cola se procesa automáticamente tras cada visita a la página . No se necesita ninguna tarea cron externa, lo que resulta ideal para el alojamiento compartido.
  • Cron manual: configura queue_mode para cron y programa tú mismo el proceso de la CLI.
bash
# Process the report queue every 5 minutes
*/5 * * * * php /path/to/honeypot-server/cli.php process-queue

Webhooks

El honeypot puede reenviar cada detección coincidente a un Endpoint externo en tiempo real — dirigiendo los ataques directamente a tu SIEM, plataforma de registro, una alerta de chat u otra base de datos de amenazas. Los Webhooks se introdujeron en la versión 1.2.0; la versión 1.3.0 los convirtió en un enrutador flexible capaz de dirigirse a cualquier API HTTP, incluida una asignación integrada con AbuseIPDB.

Cada Webhook es un endpoint HTTP(S) que recibe una solicitud por cada detección que coincida. La entrega se produce después de que se haya enviado la respuesta de trampa al atacante, por lo que los Webhooks nunca ralentizan el Honeypot. Cuando una sola solicitud activa varios analizadores, las detecciones se agregarán en una única entrega (categorías fusionadas, máxima gravedad).

Configuración

Los Webhooks se gestionan en el panel de administración, en la sección «Webhooks». Cada Endpoint admite:

  • Filtros de categoría: restringen el envío a ID de Threat Categories específicas.
  • Filtros de analizador: restringen el envío a motores de detección específicos (p. ej., SqlInjection).
  • Clave secreta: opcional, permite la firma de la Payload mediante HMAC-SHA256.

Si los filtros están vacíos, se envían todas las detecciones. Cuando se configuran ambos filtros, el Webhook se activa cuando cualquiera de ellos coincide. Cada Endpoint se puede verificar desde el panel de administración mediante un envío de prueba, que lleva el encabezado X-ReportedIP-Event: test.

Encabezados de solicitud

Encabezado Valor
Content-Type application/json
User-Agent reportedip-honeypot-server/<version>
X-ReportedIP-Event detection o test
X-ReportedIP-Signature sha256=<HMAC> — solo cuando se haya configurado un secreto

Payload

json
{
  "event": "detection",
  "generated_at": "2026-06-12T14:00:00+00:00",
  "honeypot": {
    "name": "reportedip-honeypot-server",
    "version": "1.3.0",
    "host": "your-honeypot.example.com",
    "profile": "wordpress"
  },
  "request": {
    "ip": "203.0.113.50",
    "method": "POST",
    "uri": "/wp-login.php",
    "user_agent": "sqlmap/1.7"
  },
  "detections": [
    {
      "analyzer": "SqlInjection",
      "categories": [16, 21],
      "category_names": ["SQL Injection", "Web App Attack"],
      "comment": "SQL injection attempt detected: ...",
      "severity": 85
    }
  ]
}

Signature Verification

Cuando se haya configurado un secreto, calcula el HMAC sobre el cuerpo de la solicitud sin procesar y compáralo en tiempo constante:

php
$expected = 'sha256=' . hash_hmac('sha256', $rawBody, $secret);
$valid = hash_equals($expected, $_SERVER['HTTP_X_REPORTEDIP_SIGNATURE'] ?? '');
Estado de entrega: el panel de administración registra el último resultado de entrega, la marca de tiempo y un contador de fallos consecutivos por Webhook, para que puedas detectar un endpoint defectuoso de un vistazo.

Enrutamiento a cualquier API

Un Webhook ya no está limitado al formato JSON de ReportedIP. Desde la versión 1.3.0, cada Endpoint define su propio método HTTP, encabezados y cuerpo, por lo que puedes enviar datos directamente a AbuseIPDB, Slack, Discord o cualquier API HTTP, sin necesidad de middleware.

Opciones por Webhook Opciones Notas
Método HTTP POST, PUT, PATCH, GET Debe coincidir con lo que espere la API de destino.
Encabezados personalizados Uno por línea Añade API Keys o encabezados de autenticación; estos anulan los valores predeterminados.
Formato del cuerpo json, form, plantilla personalizada JSON estructurado, pares clave/valor codificados en URL o una plantilla de formato libre.

Marcadores de posición

Los encabezados personalizados y los cuerpos basados en plantillas se rellenan a partir de marcadores de posición. Los tokens confirmados incluyen {{ip}}, {{categories}}, {{severity}}, y {{timestamp}}; los demás campos de solicitud y detección que aparecen en la Payload anterior también están disponibles. Cada token también tiene una {{..._url}} (codificada en URL) y {{..._json}} (con escape JSON), para que los valores se mantengan seguros en cualquier contexto.

Integración con AbuseIPDB

The Honeypot includes a dedicated {{abuseipdb_categories}} marcador de posición específico que traduce las categorías de amenazas de ReportedIP (ID 1–30) a los ID de categoría de AbuseIPDB más cercanos. Esto hace que un informe directo a la API v2 de AbuseIPDB se reduzca a una plantilla de cuerpo de una sola línea:

text
POST https://api.abuseipdb.com/api/v2/report
Header:  Key: <your-abuseipdb-api-key>
Body (form):  ip={{ip}}&categories={{abuseipdb_categories}}&comment={{comment_url}}

Configuraciones predefinidas

No es necesario configurarlo manualmente. Los ajustes preestablecidos integrados para AbuseIPDB, Slack, Discord y un destino JSON genérico rellenan automáticamente el método, los encabezados y el cuerpo: elige uno, introduce tu clave o URL y envía una prueba.

Pruebas seguras: los envíos de prueba utilizan la IP de bucle cerrado 127.0.0.1, por lo que la verificación de un Webhook de AbuseIPDB o de terceros nunca envía un informe real contra una dirección activa.

Repositorio de GitHub

El Honeypot Server es totalmente de código abierto. Se agradecen las contribuciones, los informes de errores y las solicitudes de nuevas funciones .

Código abierto: github.com/reportedIP/Honeypot Server — Marca el repositorio con una estrella, informa de problemas o contribuye con analizadores para ayudar a proteger a la comunidad.

Última actualización: · Gestionado por el equipo de reportedIP

Security Focused
GDPR Compliant
Made in Germany
Volver a Docs