
Motor de correlación de eventos de seguridad para ELK stack
Dsiem es un motor de correlación de eventos de seguridad para ELK stack, que permite que la plataforma se utilice como un sistema SIEM dedicado y completo.
Dsiem proporciona correlación al estilo OSSIM para registros/eventos normalizados, realiza consultas a fuentes de inteligencia de amenazas e información de vulnerabilidades, y produce alarmas ajustadas al riesgo.

flowchart TB
l1 --> |Normalized Logs/Events| e1
l1 --> |Alarms|e1
l1 --> |Normalized Logs/Events| d1
f1 --> |Logs| l1
s1 --> |Logs| f1
s2 --> |Logs| f1
s3 --> |Logs| f1
d1 --> |Alarms| d2
d2 --> |Alarms| l1
d1 --> |Query| d3
subgraph Elasticsearch
e1[Elasticsearch]
end
subgraph Logstash
l1[Logstash]
end
subgraph Filebeat
f1[Syslog/Filebeat]
end
subgraph Log Sources
s1[IDS]
s2[Firewall]
s3[OS]
end
subgraph Dsiem
d1[Dsiem]
d2[Dsiem-filebeat]
d3[Threat-Intel/Vulnerability-Info-Sources]
endEn el diagrama anterior:
Las fuentes de registro envían sus registros a Syslog/Filebeat, que luego los envía a Logstash con un campo identificador único. Logstash luego analiza los registros utilizando diferentes filtros según el tipo de fuente de registro, y envía los resultados a Elasticsearch, creando típicamente un único patrón de índice para cada tipo de registro (por ejemplo, suricata-* para registros recibidos de Suricata IDS, ssh-* para registros SSH, etc.).
Dsiem utiliza un archivo de configuración de Logstash de propósito especial para clonar el evento entrante de las fuentes de registro, justo después de que Logstash haya terminado de analizarlo. A través del mismo archivo de configuración, el nuevo evento clonado se utiliza (independientemente del evento original) para recopilar los campos requeridos por Dsiem como Título, IP de origen, IP de destino, etc.
La salida del paso anterior se llama Evento Normalizado porque representa registros de múltiples fuentes diferentes en un único formato que tiene un conjunto de campos comunes. Esos eventos luego se envían a Dsiem a través del plugin de salida HTTP de Logstash, y a Elasticsearch bajo el patrón de nombre de índice siem_events-*.
Dsiem correlaciona los eventos normalizados entrantes basándose en las reglas de directiva configuradas, realiza consultas de inteligencia de amenazas y vulnerabilidades, y luego genera una alarma si se cumplen las condiciones de las reglas. La alarma se escribe luego en un archivo de registro local, que es recolectado por un Filebeat local configurado para enviar su contenido a Logstash.
En el lado de Logstash, hay otro archivo de configuración especial de Dsiem que lee esas alarmas enviadas y las envía al índice final de alarmas SIEM en Elasticsearch.
El resultado final de los procesos anteriores es que ahora podemos ver nuevas alarmas y actualizaciones de una existente simplemente monitoreando un único índice de Elasticsearch.
Puede usar Docker Compose o los binarios de lanzamiento para instalar Dsiem. Consulte la Guía de instalación para obtener detalles.
Alternativamente, también hay un entorno de demostración basado en Docker Compose o máquina virtual que puede usar para evaluar toda la integración de Dsiem desde una única interfaz web simple.
Los documentos actualmente disponibles se encuentran aquí.
Por favor, envíe informes de errores y problemas abriendo un nuevo issue en Github. La información sensible de seguridad, como los detalles de un posible error de seguridad, también se puede enviar a [email protected]. La clave pública GPG para esa dirección se puede encontrar aquí.
¡Las contribuciones son muy bienvenidas! Envíe PR para correcciones de errores y pruebas adicionales, gist para archivos de configuración de Logstash para analizar eventos de dispositivos, reglas de directivas SIEM, o un nuevo plugin de consulta de inteligencia de amenazas/vulnerabilidades.
Si no está seguro de qué hacer en un asunto en particular, no dude en abrir un issue y discutir primero.
El proyecto está licenciado bajo GPLv3. No se requiere que los contribuyentes firmen ninguna forma de CAA/CLA o similar: Consideramos que su aceptación de esta cláusula de los términos de servicio de Github es suficiente.