Ir al contenido principalIr al pie de página

Servidor «honeypot»

Un servidor honeypot de código abierto que detecta ataques y aporta automáticamente información sobre amenazas a la ReportedIP . Implántalo junto a tu infraestructura para interceptar 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 ninguna finalidad legítima; cualquier interacción con él es intrínsecamente sospechosa.

El servidor ReportedIP emula instalaciones de CMS vulnerables para identificar direcciones IP maliciosas. Cuando un atacante intenta un inicio de sesión por fuerza bruta, 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 envía automáticamente a la ReportedIP .

Emulación de CMS

El servidor honeypot simula páginas de inicio de sesión y paneles de administración de sistemas de gestión de contenidos populares. Los atacantes que intentan llevar a cabo ataques de fuerza bruta o de explotación son detectados y notificados de inmediato.

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

Analizadores de amenazas

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

Analizador Descripción
Detección de ataques de fuerza bruta Detecta los intentos repetidos de inicio de sesión desde la misma fuente
Inyección SQL Detecta cargas útiles de inyección SQL en parámetros y encabezados
Cargas útiles de XSS Detecta intentos de cross-site scripting en los datos de las solicitudes
Recorrido de rutas Identifica secuencias de recorrido de directorios (../, ..\\)
Firmas de vulnerabilidades conocidas Compara las solicitudes con una base de datos de vulnerabilidades CVE conocidas
Reutilización de credenciales Detecta pruebas automatizadas de credenciales con diferentes combinaciones de nombre de usuario y contraseña
Enumeración de directorios Detecta el escaneo sistemático de archivos y directorios confidenciales
Uso indebido de XML-RPC Detecta la amplificación de pingbacks y los ataques de fuerza bruta a través de XML-RPC

Informes automáticos

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

  • IP de origen: la dirección IP del atacante
  • Tipo de ataque: el patrón de ataque concreto detectado
  • ID de categoría: asignada a una de las 30 categorías de amenazas predefinidas
  • Marcas de tiempo: hora exacta de cada incidente de ataque
Mayor fiabilidad: los informes de los honeypots tienen mayor peso en el cálculo de la puntuación de fiabilidad. 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 atenuación temporal.

Repercusión en la puntuación de confianza

Los informes de honeypots tienen un peso especial en el sistema de reputación, ya que 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 de la puntuación de confianza básica.

Ventaja Detalle
Bonificación Honeypot Se añaden hasta 25 puntos a la puntuación de confianza
Reducción de la atenuación temporal Los informes mantienen su relevancia durante más tiempo; la proporción de honeypots reduce el factor de caducidad
Mayor ponderación de confianza Los informes de honeypot se multiplican por honeypot_report_weight_multiplier (por defecto: 2.0x)
Confianza mínima Si hay al menos dos informes de honeypot, se garantiza un nivel de confianza mínimo del 25 %.

Fórmula de bonificación Honeypot

texto
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 servidor «honeypot» es una aplicación PHP autónoma que no tiene dependencias externas de Composer. Almacena toda la información en una base de datos SQLite local, por lo que no se necesita ningún servidor de bases de datos independiente.

  • PHP 8.2+ con el pdo_sqlite, curl, y json extensiones
  • nginx o Apache redirigir todas las solicitudes a public/index.php
  • SQLite para el almacenamiento — no se necesita ningún servidor MySQL ni 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 clave API, la selección del CMS y las credenciales de administrador. Necesitas una clave ReportedIP para el paso de generación de informes; consulta «Autenticación y límites de tasa» para saber cómo crear una (se asignan, previa solicitud, claves específicas para honeypots con generación de informes ilimitada).

Configuración manual

Clona el repositorio y configura tu servidor web para que apunte al public/ directorio. Plantilla Las configuraciones 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 lo largo de las comprobaciones del sistema, la introducción de la clave API, la selección del CMS, las credenciales de administrador y la configuración opcional de OpenAI.

Configuración

El instalador web configura la mayoría de los parámetros la primera vez que se ejecuta. Estos se pueden modificar posteriormente en el panel de administración o en el archivo de configuración.

Configuración Por defecto Descripción
api_key Tu clave de acceso a ReportedIP (obligatoria). Utiliza una clave con el rol «Honeypot» para poder enviar informes sin límites; solicítala en [email protected].
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 fácil de adivinar para mantenerlo oculto.
trusted_proxies CIDR de Cloudflare Rangos de direcciones IP proxy utilizados para determinar la dirección IP real del cliente detrás de una CDN.
rate_limit_per_ip 10 Número máximo de entradas de registro almacenadas por dirección IP por minuto.
report_rate_limit 60 Número máximo de informes de la API enviados por minuto.
report_batch_size 10 Número de informes en cola transmitidos por lote de 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 opcional de OpenAI para contenido señuelo generado por IA.

Procesamiento de colas

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

  • Cron web (por defecto): 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: conjunto queue_mode a cron y programar tú mismo el proceso 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 que coincida a un punto final externo en tiempo real — dirigiendo los ataques directamente a tu SIEM, a una plataforma de registro, a una alerta de chat o a otra base de datos de amenazas. Los webhooks se incorporaron 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 punto final HTTP(S) que recibe una solicitud por cada detección con la que coincide. El envío 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 agrupan en un único envío (categorías fusionadas, mayor gravedad).

Configuración

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

  • Filtros de categoría: restringen la entrega a los ID de categorías de amenazas específicos.
  • Filtros del analizador — limitar la entrega a los motores de detección especificados (p. ej., SqlInjection).
  • Clave secreta: opcional; permite la firma de la carga útil mediante HMAC-SHA256.

Los filtros vacíos significan todos se envían las detecciones. Cuando ambos filtros están configurados, el webhook se activa cuando o bien coincide. Cada punto final se puede verificar desde el panel de administración mediante un envío de prueba, que incluye 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 configura un secreto

Carga útil

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
    }
  ]
}

Verificación de la firma

Cuando se configura 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 la entrega: El panel de administración registra el último resultado de la entrega, la marca de tiempo y un contador de fallos consecutivos por cada webhook, lo que te permite detectar de un vistazo un punto final que no funciona correctamente.

Enrutamiento a cualquier API

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

Opción por webhook Opciones Notas
Método HTTP POST, PUT, PATCH, GET Adáptate a lo que requiera la API de destino.
Encabezados personalizados Uno por línea Añade claves API 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. Entre los tokens confirmados se incluyen: {{ip}}, {{categories}}, {{severity}}, y {{timestamp}}; los demás campos de solicitud y detección que aparecen en la carga útil anterior también están disponibles. Cada token también tiene un {{..._url}} (codificado en URL) y {{..._json}} (con codificación JSON) para que los valores se mantengan seguros en cualquier contexto.

Integración con AbuseIPDB

El honeypot envía un {{abuseipdb_categories}} marcador de posición que traduce el Categorías de ReportedIP (ID 1–30) a los ID de categoría de AbuseIPDB más cercanos. De este modo, un informe directo a la API de AbuseIPDB v2 se reduce a una plantilla de cuerpo de una sola línea:

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

Ajustes predefinidos

No es necesario que lo configures 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 del mensaje: elige uno, introduce tu clave o URL y envía una prueba.

Pruebas seguras: Las entregas de prueba utilizan la dirección IP de bucle cerrado 127.0.0.1, por lo que la verificación de un AbuseIPDB o de un webhook de terceros nunca genera una denuncia real contra una dirección activa.

Repositorio de GitHub

El servidor honeypot es totalmente de código abierto. Se agradecen las contribuciones, los informes de errores y las sugerencias de nuevas funciones .

Código abierto: github.reportedip — Marca el repositorio como favorito, informa de problemas o contribuye con analizadores para ayudar a proteger a la comunidad.

Última actualización: · Gestionado por el ReportedIP

Centrado en la seguridad
Conforme al RGPD
Fabricado en Alemania
Volver a Docs