
Prise en charge de Zeek pour le hachage de flux Community ID.
Ce package Zeek prend en charge le hachage de flux Community ID, une manière standardisée d'étiqueter les flux de trafic dans les moniteurs réseau. Une fois chargé, le package ajoute un champ de type chaîne community_id à conn.log.
Remarque
Zeek 6 et les versions ultérieures incluent la prise en charge de Community ID. Vous n'avez plus besoin de ce package lorsque vous utilisez ces versions de Zeek. Veuillez consulter la documentation pour plus de détails.
Ce package implémente une BiF pour la logique de hachage et nécessite donc une compilation binaire ; c'est donc aussi un plugin Zeek. Voici un exemple de conn.log obtenu :
#separator \x09
#set_separator ,
#empty_field (empty)
#unset_field -
#path conn
#open 2018-01-31-13-06-56
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p proto service duration orig_bytes resp_bytes conn_state local_orig local_resp missed_bytes history orig_pkts orig_ip_bytes resp_pkts resp_ip_bytes tunnel_parents community_id
#types time string addr port addr port enum string interval count count string bool bool count string count count count count set[string] string
1071580904.891921 CPcWB54kqKkvkdNEXe 128.232.110.120 34855 66.35.250.204 80 tcp - 0.311104 496 1731 SF - - 2227 ShADadfF 6 816 6 2051 - 1:LQU9qZlK+B5F3KDmev6m5PMibrg=
#close 2018-01-31-13-06-56
Le package prend en charge Community ID dans le notice.log de Zeek pour les notices avec un contexte de connexion. Si vous souhaitez utiliser cette fonctionnalité, placez la ligne suivante dans votre local.zeek ou une configuration site-local similaire :
@load zeek-community-id/notice
Cette ligne n'a aucun effet lorsque le package Community ID lui-même n'est pas chargé. Cette approche par script supplémentaire garantit que les utilisateurs qui ne veulent pas de l'ID dans leur notice.log ne voient pas leur journal encombré par une colonne supplémentaire toujours inutilisée.
La spécification Community ID envisage actuellement la prise en charge d'un certain nombre de constellations de protocoles pour lesquelles Zeek ne suit pas l'état des flux, car ses analyseurs ne sauraient pas quoi faire de ce trafic. Pour de tels flux, Zeek ne déclenche jamais les événements liés aux connexions utilisés par le package, il n'y aura donc de toute façon pas de sortie dans conn.log. (S'il existait des protocoles que Zeek suit au niveau du flux mais que le plugin ne prend pas en charge, l'ID rapporté serait vide.) Nous prenons actuellement en charge TCP et UDP sur IPv4 ou IPv6, ainsi qu'ICMPv4 et ICMPv6. Nous ne prenons pas en charge d'autres protocoles de niveau transport (comme SCTP), ni les flux généraux par paire d'adresses IP pour les protocoles de couche transport non pris en charge.
Le nom du package est zeek-community-id ; le nom du plugin est Corelight::CommunityID. Vous pouvez voir les options de configuration du package dans le script Zeek correspondant.
Le package Community ID fonctionne avec toute version de Zeek depuis 2.6.4. Étant donné que le code de Zeek a subi des changements substantiels depuis, le package fournit des branches de compatibilité qui prennent en charge des plages de versions Zeek spécifiques, en trouvant un équilibre entre lisibilité du code et facilité d'installation et de gestion des branches.
Sur les branches zeek/x.y et master, les tags Git étiquettent les versions de Community ID. Par exemple, 3.1.0 est la première version sur la branche zeek/3.1 et fonctionne avec tout Zeek de la série 3.1. La prochaine version de Community ID pour la série Zeek 3.1 s'appellera 3.1.1 et vivra également sur cette branche, suivie de 3.1.2, etc. (Il ne s'agit donc pas de versionnement sémantique.)
Chaque branche déclare également une fenêtre de compatibilité de version Zeek dans zkg.meta, elle ne s'installera donc pas si elle est associée à une version de Zeek incompatible. Par exemple, la branche master exige actuellement au moins Zeek 3.2.0, sans limite supérieure.
Voici un résumé de la correspondance entre les versions de Zeek, les tags Git et les branches Git :
| Zeek version | Git tag | Git branch |
|---|---|---|
| 2.6.4 - 3.0.x | 3.0.y | zeek/3.0 |
| 3.1.x | 3.1.y | zeek/3.1 |
| 3.2.x - master | 3.2.y | master |
Le package inclut des btests qui vérifient le chargement du plugin et traitent les pcaps de test inclus via Zeek pour contrôler la sortie console de Zeek de référence. Vous pouvez les exécuter en lançant btest -c btest.cfg dans le répertoire tests.
Pour toute question ou retour, veuillez nous contacter sur la liste de diffusion Zeek ou le Slack Zeek. Les issues et les PR GitHub sont les bienvenus.