
Supporto di Zeek per l'hashing dei flussi Community ID.
Questo pacchetto Zeek fornisce supporto per l'hashing dei flussi Community ID, un modo standardizzato di etichettare i flussi di traffico nei monitor di rete. Una volta caricato, il pacchetto aggiunge un campo stringa community_id al conn.log.
Nota
Zeek 6 e versioni successive includono il supporto per Community ID. Non hai più bisogno di questo pacchetto quando usi queste versioni di Zeek. Fai riferimento alla documentazione per i dettagli.
Questo pacchetto implementa un BiF per realizzare la logica di hashing e richiede pertanto la compilazione binaria, quindi è anche un plugin Zeek. Ecco un esempio di conn.log risultante:
#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
Il pacchetto supporta Community ID nel notice.log di Zeek per le notice con un contesto di connessione. Se desideri utilizzare questa funzionalità, inserisci la seguente riga nel tuo local.zeek o in una configurazione locale simile:
@load zeek-community-id/notice
Questa riga non ha alcun effetto quando il pacchetto Community ID stesso non è caricato. Questo approccio basato su uno script aggiuntivo garantisce che gli utenti che non vogliono l'ID nel loro notice.log non abbiano quel log ingombrato da una colonna aggiuntiva sempre inutilizzata.
La specifica Community ID prevede attualmente il supporto per una serie di combinazioni di protocolli per le quali Zeek non traccia lo stato a livello di flusso, poiché i suoi analizzatori non saprebbero cosa fare con il traffico. Per tali flussi Zeek non attiva mai gli eventi correlati alla connessione usati dal pacchetto, quindi non ci sarà comunque alcun output nel conn.log. (Se ci fossero protocolli che Zeek traccia a livello di flusso ma che il plugin non supporta, l'ID riportato sarebbe vuoto.) Supportiamo attualmente TCP e UDP su IPv4 o IPv6, oltre a ICMPv4 e ICMPv6. Non supportiamo invece altri protocolli di livello trasporto (come SCTP), né flussi generici di coppie di indirizzi IP per protocolli di trasporto non supportati.
Il nome del pacchetto è zeek-community-id; il nome del plugin è Corelight::CommunityID. Puoi vedere le opzioni di configurazione del pacchetto nel relativo script Zeek.
Il pacchetto Community ID funziona con qualsiasi versione di Zeek a partire dalla 2.6.4. Poiché il codebase di Zeek ha subito modifiche sostanziali da allora, il pacchetto fornisce branch di compatibilità che supportano specifici intervalli di versioni di Zeek, trovando un equilibrio tra codice leggibile e facilità di installazione e gestione dei branch.
Sui branch zeek/x.y e master, i tag git etichettano le release di Community ID. Ad esempio, 3.1.0 è la prima release sul branch zeek/3.1 e funziona con qualsiasi Zeek della serie 3.1. La prossima release di Community ID per la serie Zeek 3.1 si chiamerà 3.1.1 e vivrà anch'essa su questo branch, seguita da 3.1.2, ecc. (Quindi questa non è versionamento semantico.)
Ogni branch dichiara inoltre una finestra di compatibilità con le versioni di Zeek in zkg.meta, quindi non si installerà se abbinato a una versione di Zeek incompatibile. Ad esempio, il branch master richiede attualmente almeno Zeek 3.2.0, senza limite superiore.
Ecco un riepilogo di come si allineano le versioni di Zeek, i tag git e i branch git:
| Versione di Zeek | 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 |
Il pacchetto include btest che verificano il caricamento del plugin e processano i pcap di test inclusi tramite Zeek per controllare l'output della console Zeek di riferimento. Puoi eseguirli digitando btest -c btest.cfg nella directory dei test.
Per domande e feedback, contattaci tramite la mailing list di Zeek o lo Slack di Zeek. Le issue e le PR su Github sono benvenute.