Como instalar a ferramenta de monitoramento de segurança de rede Zeek no Debian 12
Zeek (anteriormente Bro) é uma plataforma gratuita e de código aberto para monitoramento de segurança de rede. É um poderoso analisador de tráfego de rede passivo para investigar atividades suspeitas ou maliciosas. Zeek pode ser usado como monitor de segurança de rede (NSM) e oferece suporte a uma ampla gama de análises de tráfego, desde o domínio de segurança até medição de desempenho e solução de problemas.
Neste guia, mostrarei como instalar o Zeek Network Security Monitoring no servidor Debian 12 passo a passo. Você instalará o Zeek e configurará o Zeek no modo cluster e aprenderá como analisar o formato de log do Zeek TSV por meio da linha de comando zeek-cut. Além disso, você aprenderá como configurar a saída do log Zeek como JSON e analisar o log JSON do Zeek por meio da linha de comando jq.
Pré-requisitos
Antes de começar, confirme se você tem o seguinte:
- Um servidor Debian 12.
- Um usuário não root com privilégios de administrador.
Adicionando Repositório
O Zeek pode ser instalado no sistema Linux compilando-o manualmente ou usando um repositório de terceiros. Neste guia, você instalará o Zeek usando um repositório de terceiros via APT.
Primeiro, execute o seguinte comando para adicionar a chave GPG e o repositório do pacote Zeek.
curl -fsSL https://download.opensuse.org/repositories/security:zeek/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null
echo 'deb http://download.opensuse.org/repositories/security:/zeek/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list
Agora atualize e atualize seu repositório Debian executando o seguinte comando apt update.
sudo apt update
Instalando Zeek
Depois de adicionar o repositório Zeek, agora você pode iniciar a instalação do Zeek em sua máquina Debian. Na etapa seguinte, você instalará o Zeek e adicionará o diretório de instalação do Zeek ao PATH do sistema.
Execute o comando apt install abaixo para instalar o Zeek em sua máquina Debian. Existem várias versões do Zeek disponíveis, como o lançamento mais recente, LTS e noturno. Neste exemplo, você instalará o zeek-lts.
sudo apt install zeek-lts
Digite y para prosseguir com a instalação.
Após a instalação do zeek, que por padrão é o diretório de destino /opt/zeek. Execute o seguinte comando para adicionar o diretório /opt/zeek/bin ao PATH do sistema por meio do arquivo ~/.bashrc.
echo "export PATH=$PATH:/opt/zeek/bin" >> ~/.bashrc
Em seguida, recarregue o arquivo ~/.bashrc e verifique a variável PATH do sistema usando o seguinte comando. Você deverá ver o diretório /opt/zeek/bin dentro do PATH do sistema.
source ~/.bashrc
echo $PATH
Por último, verifique o Zeek executando o seguinte comando. Com isso, você verificará a localização do arquivo binário Zeek, verificará a versão do Zeek e imprimirá a mensagem de ajuda do Zeek.
which zeek
zeek --version
zeek --help
Na saída a seguir, você verá que o zeek 5.0 está instalado em /usr/zeek/bin/zeek. Além disso, você deve opções para o comando Zeek.
Configurando Zeek
Agora que o Zeek está instalado, a próxima etapa é configurar a instalação do Zeek. Você pode executar o Zeek em vários modos, como modo de linha de comando, modo autônomo e modo cluster.
No exemplo a seguir, você aprenderá como executar o Zeek em modo cluster usando um único servidor.
Antes de configurar o Zeek, execute o seguinte comando para verificar suas interfaces de rede e endereço IP.
ip a
Você deve listar as interfaces disponíveis em seu sistema com informações detalhadas sobre o endereço IP de um servidor como o seguinte:
Abra a configuração de rede do Zeek /opt/zeek/etc/networks.cfg usando o seguinte comando do editor nano.
sudo nano /opt/zeek/etc/networks.cfg
Insira sua sub-rede de rede interna como mostrado a seguir. Você também pode adicionar várias sub-redes a ele.
10.0.0.0/8 Private IP space
172.16.0.0/12 Private IP space
192.168.0.0/16 Private IP space
Salve o arquivo e saia do editor quando terminar.
Agora abra a configuração do zeek /opt/zeek/etc/node.cfg usando o comando do editor nano abaixo.
sudo nano /opt/zeek/etc/node.cfg
Por padrão, o Zeek está rodando em modo autônomo. Adicione o # para desativar o modo autônomo do Zeek.
#[zeek]
#type=standalone
#host=localhost
#interface=eth0
Insira a seguinte configuração para executar o Zeek no modo cluster com um único servidor. Certifique-se de alterar o endereço IP do servidor com suas informações.
Com a configuração a seguir, você executará o Zeek em modo cluster, que possui vários componentes, como zeek-logger, zeek-manager, zeek-proxy e zeek-worker.
# logger
[zeek-logger]
type=logger
host=192.168.10.15
# manager
[zeek-manager]
type=manager
host=192.168.10.15
# proxy
[zeek-proxy]
type=proxy
host=192.168.10.15
# worker
[zeek-worker]
type=worker
host=192.168.10.15
interface=eth0
# worker localhost
[zeek-worker-lo]
type=worker
host=localhost
interface=lo
Salve e feche a multa quando terminar.
Em seguida, execute o seguinte comando para acessar o shell de controle Zeek.
zeekctl
Execute o comando check para validar sua configuração Zeek.
check
Se tudo correr bem, você verá que cada componente do script Zeek está ok:
Em seguida, execute o comando deploy para iniciar e executar o Zeek em sua máquina. O comando deploy é equivalente ao comando install e start no Zeek.
deploy
Você deverá ver que cada componente do cluster Zeek está iniciando:
Por último, verifique cada componente do seu cluster Zeek executando o comando de status abaixo.
status
Se a instalação for bem-sucedida, você verá que cada um dos componentes do cluster Zeek está em execução.
Digite exit para sair do shell de controle Zeek.
Neste ponto, o cluster Zeek está em execução. Ele também monitora a interface de rede e a sub-rede de destino e gera arquivos de log no diretório /opt/zeek/logs.
Guia para registros Zeek
Após configurar o Zeek, o próximo passo é explorar os arquivos de log gerados pelo Zeek, que estão localizados no diretório /opt/zeek/logs/current. Por padrão, zeek gera arquivos de log com o formato TSV (valores separados por tabulação).
Quando o Zeek estiver em execução, ele monitorará a interface de rede de destino em seu sistema e gerará arquivos de log no diretório /opt/zeek/logs/current/.
Mova seu diretório de trabalho para o diretório /opt/zeek/logs/current/ e execute o comando ls abaixo.
cd /opt/zeek/logs/current/
ls -ah
Você deverá ver vários arquivos de log gerados pelo Zeek. Você pode ver que alguns arquivos de log estão faltando em seu sistema porque o serviço de destino não está disponível.
Abaixo estão alguns dos arquivos de log importantes que você deve conhecer:
- conn.log: o log de conexão para TCP e UDP. Este arquivo de log fornece as informações mais úteis, como carimbo de data/hora, duração da conexão, serviço e muito mais.
- dns.log: O log do DNS (Sistema de Nomes de Domínio).
- http.log: o log do Protocolo de Transferência de Hipertexto (HTTP).
- ssh.log: o log Secure Shell (SSH) para rastrear conexões SSH.
- ssl.log: o log Secure Socket Layer (SSL) que também contém o log HTTPS.
Analisando Zeek Logs TSV (valores separados por tabulação) via Zeek-cut
Por padrão, zeek gera arquivos de log com formato TSV (valores separados por tabulação). Na etapa seguinte, você analisará os arquivos de log do Zeek com formato TSV por meio da linha de comando zeek-cut.
Execute o comando cat abaixo para visualizar o arquivo de log dns.log.
cat dns.log
Na saída a seguir, você deverá ver vários campos, como ts, uid, id.orig_p, id.resp_h, id.resp_p, proto e muitos mais.
Em seguida, execute o seguinte comando para analisar o formato de log Zeek TSV. Com isso, você enviará a saída via pipe "|" ao comando zeek-cut.
Neste exemplo, você terá três campos do arquivo de log, como id.orig_h, consulta, erespostas.
cat dns.log | zeek-cut id.orig_h query answers
cat dns.log | zeek-cut query answers id.orig_h
Você deverá ver uma saída semelhante à seguinte:
Você também pode usar o símbolo de redirecionamento para processar o arquivo de log TSV via zeek-cut como o comando a seguir.
zeek-cut id.orig_h query answers < dns.log
A saída deve ser semelhante.
Configurando arquivos de log Zeek para JSON
Na etapa seguinte, você configurará o Zeek para gerar arquivos de log de saída com formato JSON. Para conseguir isso, você deve modificar o arquivo local.zeek e carregar o script zeek tuning/json-logs em sua instalação zeek.
Abra o arquivo /opt/zeek/share/zeek/site/local.zeek usando o seguinte comando do editor nano.
sudo nano /opt/zeek/share/zeek/site/local.zeek
Insira a seguinte configuração no final da linha.
@load tuning/json-logs
Salve e feche o arquivo quando terminar.
Agora execute o comando zeekctl abaixo para reimplantar sua instalação zeek.
zeekctl deploy
Você deverá ver que o zeek está reinstalando agora. Assim que o processo for concluído, zeek irá gerar arquivos de log JSON.
Antes de analisar o formato de log JSON, instale o jq em sua máquina executando o seguinte comando apt.
sudo apt install jq -y
Depois que o jq estiver instalado, vá para o diretório /opt/zeek/logs/current/. O diretório /opt/zeek/logs/current contém arquivos de log zeek em formato JSON e é gerado automaticamente pelo zeek.
cd /opt/zeek/logs/current/
Execute o comando cat abaixo para visualizar o arquivo de log DNS.
cat dns.log
A saída JSON será exibida na tela do seu terminal.
Em seguida, execute o comando jq abaixo para processar o log JSON dns.log.
jq . dns.log
Ou você pode exibir o formato compacto através da opção -c como a seguir.
jq . -c dns.log
Por último, execute o seguinte comando para exibir uma chave/valor específico do arquivo JSON dns.log.
jq -c '[."id.orig_h", ."query", ."answers"]' dns.log
Você deverá ver a saída como a seguir.
Conclusão
Parabéns! Agora você instalou com sucesso a ferramenta de monitoramento de rede Zeek no servidor Debian 12. Você instalou o Zeek, executou o Zeek no modo cluster, aprendeu alguns arquivos de log do zeek e também aprendeu como analisar arquivos de log do zeek com formato TSV via zeek-cut. Além disso, você também alterou o log zeek para JSON e aprendeu como analisar o formato JSON do log Zeek por meio de linhas de comando jq.