
Suporte do Zeek para hashing de fluxos Community ID.
Este pacote Zeek fornece suporte para hash de fluxo Community ID, uma forma padronizada de rotular fluxos de tráfego em monitores de rede. Quando carregado, o pacote adiciona um campo de string community_id ao conn.log.
Nota
Zeek 6 e versões posteriores incluem suporte a Community ID. Você não precisa mais deste pacote ao usar essas versões do Zeek. Consulte a documentação para obter detalhes.
Este pacote implementa um BiF para implementar a lógica de hash e, portanto, precisa de compilação binária, sendo também um plugin Zeek. Aqui está um exemplo de um conn.log resultante:
#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
O pacote suporta Community ID no notice.log do Zeek para notificações com contexto de conexão. Se você quiser usar essa funcionalidade, coloque a seguinte linha no seu local.zeek ou em configuração local semelhante:
@load zeek-community-id/notice
Essa linha não tem efeito quando o próprio pacote Community ID não está carregado. Essa abordagem de script extra garante que usuários que não desejam o ID no notice.log não tenham esse log poluído com uma coluna adicional que nunca é usada.
A especificação do Community ID atualmente prevê suporte a uma série de combinações de protocolos para as quais o Zeek não rastreia estado no nível de fluxo, porque seus analisadores não saberiam o que fazer com o tráfego. Para esses fluxos, o Zeek nunca aciona os eventos relacionados a conexões usados pelo pacote, portanto não haverá saída no conn.log de qualquer forma. (Se houvesse protocolos que o Zeek rastreia no nível de fluxo mas o plugin não suporta, o ID relatado seria vazio.) Atualmente suportamos TCP e UDP sobre IPv4 ou IPv6, bem como ICMPv4 e ICMPv6. Não suportamos outros protocolos de nível de transporte (como SCTP), nem fluxos genéricos de pares de endereços IP para protocolos de camada de transporte não suportados.
O nome do pacote é zeek-community-id; o nome do plugin é Corelight::CommunityID. Você pode ver as opções de configuração do pacote no script Zeek correspondente.
O pacote Community ID funciona com qualquer versão do Zeek desde a 2.6.4. Como a base de código do Zeek passou por mudanças substanciais desde então, o pacote oferece branches de compatibilidade que suportam faixas específicas de versões do Zeek, equilibrando código legível versus facilidade de instalação e gerenciamento de branches.
Nos branches zeek/x.y e master, as tags do git identificam os lançamentos do Community ID. Por exemplo, 3.1.0 é o primeiro lançamento no branch zeek/3.1 e funciona com qualquer Zeek da série 3.1. O próximo lançamento do Community ID para a série Zeek 3.1 será chamado de 3.1.1 e também estará neste branch, seguido por 3.1.2, etc. (Portanto, isso não é versionamento semântico.)
Cada branch também declara uma janela de compatibilidade de versão do Zeek em zkg.meta, portanto não será instalado se emparelhado com uma versão incompatível do Zeek. Por exemplo, o branch master atualmente requer pelo menos Zeek 3.2.0, sem limite superior.
Aqui está um resumo de como as versões do Zeek, as tags do Git e os branches do Git se alinham:
| Versão do Zeek | Tag do Git | Branch do Git |
|---|---|---|
| 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 |
O pacote inclui btests que verificam o carregamento do plugin e processam os pcaps de teste incluídos por meio do Zeek para verificar a saída de referência do console do Zeek. Você pode executá-los digitando btest -c btest.cfg no diretório de testes.
Para dúvidas e comentários, entre em contato pela lista de e-mails do Zeek ou pelo Slack do Zeek. Issues e PRs no Github são bem-vindos.