
Moteur de corrélation d'événements de sécurité pour ELK stack
Dsiem est un moteur de corrélation d'événements de sécurité pour ELK stack, permettant d'utiliser la plateforme comme un système SIEM dédié et complet.
Dsiem fournit une corrélation de style OSSIM pour les journaux/événements normalisés, effectue des recherches/interrogations vers des sources de renseignements sur les menaces et d'informations sur les vulnérabilités, et produit des alarmes ajustées au risque.

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]
end
Sur le diagramme ci-dessus :
Les sources de journaux envoient leurs journaux à Syslog/Filebeat, qui les envoie ensuite à Logstash avec un champ d'identification unique. Logstash analyse ensuite les journaux à l'aide de différents filtres basés sur le type de source de journal, et envoie les résultats à Elasticsearch, créant généralement un seul modèle d'index pour chaque type de journal (par exemple suricata-* pour les journaux reçus de Suricata IDS, ssh-* pour les journaux SSH, etc.).
Dsiem utilise un fichier de configuration Logstash spécial pour cloner l'événement entrant des sources de journaux, juste après que logstash a terminé de l'analyser. Via le même fichier de configuration, le nouvel événement cloné est utilisé (indépendamment de l'événement d'origine) pour collecter les champs requis par Dsiem comme le Titre, l'IP source, l'IP de destination, etc.
Le résultat de l'étape ci-dessus est appelé Événement normalisé car il représente les journaux de plusieurs sources différentes dans un format unique comportant un ensemble de champs communs. Ces événements sont ensuite envoyés à Dsiem via le plugin de sortie HTTP de Logstash, et à Elasticsearch sous le modèle de nom d'index siem_events-*.
Dsiem corrèle les événements normalisés entrants en fonction des règles de directives configurées, effectue des recherches de renseignements sur les menaces et de vulnérabilités, puis génère une alarme si les conditions des règles sont remplies. L'alarme est ensuite écrite dans un fichier journal local, qui est collecté par un Filebeat local configuré pour envoyer son contenu à Logstash.
Du côté de Logstash, il y a un autre fichier de configuration spécial de Dsiem qui lit ces alarmes soumises et les pousse vers l'index final des alarmes SIEM dans Elasticsearch.
Le résultat final des processus ci-dessus est que nous pouvons désormais surveiller les nouvelles alarmes et les mises à jour d'une alarme existante simplement en surveillant un seul index Elasticsearch.
Vous pouvez utiliser Docker Compose ou les binaires de version pour installer Dsiem. Référez-vous au Guide d'installation pour plus de détails.
Alternativement, il existe également un environnement de démonstration basé sur Docker Compose ou une machine virtuelle que vous pouvez utiliser pour évaluer toute l'intégration de Dsiem depuis une interface web simple.
Les documents actuellement disponibles se trouvent ici.
Veuillez soumettre les rapports de bugs et de problèmes en ouvrant un nouveau issue Github. Les informations sensibles liées à la sécurité, comme les détails d'un potentiel bug de sécurité, peuvent également être envoyées à [email protected]. La clé publique GPG pour cette adresse peut être trouvée ici.
Les contributions sont les bienvenues ! Soumettez des PR pour des corrections de bugs et des tests supplémentaires, des gists pour les fichiers de configuration Logstash pour analyser les événements de périphériques, les règles de directives SIEM, ou un nouveau plugin de recherche de renseignements sur les menaces/vulnérabilités.
Si vous n'êtes pas sûr de quoi faire sur un sujet particulier, n'hésitez pas à ouvrir un issue et à discuter d'abord.
Le projet est sous licence GPLv3. Les contributeurs ne sont pas tenus de signer une quelconque forme de CAA/CLA ou équivalent : Nous considérons leur acceptation de cette clause des conditions d'utilisation de Github comme suffisante.