Qu'est-ce que le format CEF?
Le CEF est un moyen normalisé d'enregistrer et de recevoir des journaux de sécurité (syslog). Parce que le CEF est normalisée, vous pouvez l'utiliser pour collecter et traiter des données provenant de nombreuses sources différentes.
Trapster utilise le format CEF pour transmettre les événements via SYSLOG. Il est également possible de traiter les événements provenant de votre tableau de bord via des webhooks, qui peuvent s'intégrer dans des systèmes déjà en place.
CEF vous permet d’analyser l’origine des attaques ou les systèmes cibles par les attaquants, ainsi que de corréler les évènements entres les machines pour mieux comprendre comment une attaque s'est propagée.
Cet article présente comment intégrer Trapster sur ELK, en utilisant SYSLOG et le format CEF.
Les journaux typique d’CEF utilisant le format suivant :
CEF:Version | Device Vendor | Device Product | Device Version | deviceEventClassId |Name | Severity | Extension
-
CEF: Version ~ La version de CEF peut être 0 ou 1
Device Vendor (ici Ballpoint)
Device Product ~ le produit vendu - donc ici c’est Trapster
Device Version ~ La version actuelle du produit
DeviceEventClassId ~ un identifiant unique pour chaque type d'évènement : On mettre ici le Protocol avec lequel l’attaquant a interagi, comme VNC ou FTP
Name ~ une phrase lisible par l'homme pour décrire l'événement donc ici vous pouvez voir le type d’attaque comme ‘login’
Severity: la sévérité est toujours un chiffre entre 0 et 10 ou un mot comme low, medium, high, et Very-high
Extention: Ici, nous pouvons inclure toute autre information pertinente comme la source ip, un message plus clair pour décrire l'évènement, ou le modèle d’os que vous avez choisi pour votre Trapster
Pour mieux comprendre, voici un exemple de ce que vous pourriez voir de la part de Trapster, y compris d'où vient l'attaque, le protocole utilisé, et le type d'attaque. Vous verrez les mêmes informations que sur votre dashboard :<128> CEF:1|Ballpoint|Trapster|v1.0|VNC|login|10|src=157.171.84.63 dst=122.251.101.180 msg=Login attempt on VNC
Intégration avec ELK (Elasticsearch, Logstash, Kibana)
ELK intégre les briques Elasticsearch, Kibana, Beats et Logstash pour traiter vos journaux syslog CEF. Il est très largement utilisé car il permet de collecter et de visualiser facilement des données.
Le tableau de bord Trapster peut envoyer des journaux via Syslog en UDP ou en TCP. Il suffit de nous transmettre l’adresse IP et le port de votre installation ELK.
Format CEF
Il faut ajouter le plugin CEF afin de traiter les journaux sur ELK. Vous pouvez trouver le plugin open source ici: https://github.com/logstash-plugins/logstash-codec-cef
Si votre logstash se trouve dans un container docker, vous pouvez installer ce plugin via Dockerfile. Ajouter la ligne “RUN logstash-plugin install logstash-codec-cef" a votre fichier dans docker-elk > logstash > Dockerfile pour l’installer et redémarrer votre docker.
Maintenant que vous avez le plugin vous pouvez specifier le formatage de logstash. Allez dans docker-elk > logstash > pipeline > logstash.conf et ajouter la configuration suivante :
-
Codec : Pour filtrer correctement les journaux CEF
-
Port : pour spécifier le port ouvert, ici vous devez mettre votre port que vous avez décidé avant, mais vous pouvez utiliser le même port pour UDP et TCP
Configuration de Kibana
Sur votre page Kibana, vous devez maintenant voir les journaux capturés. Sur votre page de paramètres sur Trapster, vous pouvez envoyer un message de test pour vous assurer que tout fonctionne. Si non, assurez-vous que votre réseau est correctement configuré pour que Logstash puisse recevoir des évènements.
Cependant, vous pouvez voir que les données ne sont pas correctement traitées au format CEF dans kibana, parce que kibana ne sait pas qu’il est au format CEF.
Pour indiquer à kibana comment analyser les données il faut créer un data view. En ligne, vous pouvez voir beaucoup de références aux "index patterns", l’ancien nom des "data views".
Dans "Management > Kibana > Data Views" vous pouvez créer un data view avec le nom que vous voulez.
Sélectionner le index pattern comme avec le nom cef-logs-* correspondant au format que vous avez donné plus tôt dans logstash.conf pour indexer vos données
Après dans "Analytics > Discover", vous pouvez désormais sélectionner votre "data view". Avec kibana, vous pouvez facilement visualiser les données et créer des "charts" pour voir lequel de vos trapsters reçoit le plus de trafique.
Ou encore, d’où les attaques proviennent : Vous pouvez aussi créer des alertes pour des évènements spécifique dans "Security > Alerts".
Ici vous pouvez décider de recevoir des alertes s'il y a un évènement avec une certaine IP ou avec un niveau de sévérité supérieur a un certain montant.