Prática Prática com a Pilha ELK
SIEM & Série de Blogs de Monitoramento: ELK Stack
Nesta segunda parte de nossa mini-série sobre ELK Stack dentro da mais ampla Série de Blogs de SIEM & Monitoramento, mudamos de conceitos fundamentais para a implementação prática. Este post orienta você na configuração de um ambiente de teste ELK funcional usando Docker em uma máquina virtual Ubuntu, proporcionando um espaço para explorar como Elasticsearch, Logstash e Kibana trabalham juntos para processar e visualizar dados.
Se você é um administrador de backup ou um profissional de TI, este guia oferece um laboratório personalizável onde você pode experimentar a análise de mensagens Syslog de Veeam Backup & Replication e encaminhá-las para sua pilha ELK. O objetivo é fornecer um ambiente seguro e flexível para aprendizado e testes, não para implantação em produção.
Configuração do Docker
Requisitos: Você precisará de uma VM de servidor Ubuntu.
1. Primeiro, vamos instalar o docker:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
2. Faça logout e faça login novamente para verificar se o Docker foi instalado com sucesso.
docker --version
docker compose version

Configuração do ELK
1. Execute os seguintes comandos na sua VM Ubuntu:
mkdir elk-stack
cd elk-stack
mkdir -p logstash/pipeline
mkdir -p elasticsearch
2. Crie o arquivo de configuração do Elasticsearch:
cat > elasticsearch/elasticsearch.yml << 'EOF'
cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.type: single-node
xpack.security.enabled: false
xpack.monitoring.collection.enabled: true
EOF
3. Crie arquivos de configuração para o Logstash.
4. Na linha de comando, cole este comando para criar o arquivo de configuração do Logstash:
cat > logstash/pipeline/logstash.conf << 'EOF'
input {
tcp { port => 5000 codec => json_lines tags => ["tcp"] } syslog { port => 5514 tags => ["syslog"] } }
filter { if "syslog" in [tags] { if [program] =~ /Veeam/ { mutate { add_field => { "source_type" => "veeam" } add_field => { "category" => "backup" }
add_field => { "vendor" => "veeam" } } if [message] =~ /Job \[/ { grok { match => { "message" => "Job \[%{DATA:job_name}\]" } } } if [message] =~ /Success/ { mutate { add_field => { "backup_status" => "success" } } } else if [message] =~ /Warning/ { mutate { add_field => { "backup_status" => "warning" } } } else if [message] =~ /Error|Failed/ { mutate { add_field => { "backup_status" => "error" } } } } }
mutate { add_field => { "processed_by" => "logstash" } } }
output { if [source_type] == "veeam" { elasticsearch { hosts => ["http://elasticsearch:9200"] index => "veeam-logs-%{+YYYY.MM.dd}" } } else { elasticsearch { hosts => ["http://elasticsearch:9200"] index => "logs-%{+YYYY.MM.dd}" } } } EOF
5. Aqui criaremos nosso arquivo docker-compose.yml que terá todos os componentes necessários para a configuração do nosso laboratório de testes.
cat > docker-compose.yml << 'EOF'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- cluster.name=docker-cluster
- network.host=0.0.0.0
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ports:
- "9200:9200"
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
redes:
- elk
logstash:
imagem: docker.elastic.co/logstash/logstash:7.17.0
nome_do_container: logstash
portas:
- "5044:5044"
- "5000:5000/tcp"
- "5514:5514/udp"
- "9600:9600"
volumes:
- ./logstash/pipeline:/usr/share/logstash/pipeline:ro
ambiente:
- "LS_JAVA_OPTS=-Xmx256m -Xms256m"
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
depende_de:
- elasticsearch
redes:
- elk
kibana:
imagem: docker.elastic.co/kibana/kibana:7.17.0
nome_do_container: kibana
portas:
- "5601:5601"
ambiente:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- SERVER_HOST=0.0.0.0
depends_on:
- elasticsearch
networks:
- elk
volumes:
elasticsearch_data:
networks:
elk:
driver: bridge
EOF
6. Agora inicie os contêineres:
- docker compose up -d
Acessando o Kibana no Seu Navegador
Agora que tudo está configurado, você pode abrir o Kibana no seu navegador. Por padrão, o Kibana roda na porta 5601, então você precisará navegar até a URL apropriada com base em onde seu ambiente Docker está hospedado.
Por exemplo, se sua configuração Docker estiver rodando em uma VM chamada docker01, você deve ir para:
Se sua VM tiver um nome DNS personalizado como geoffsvm, então a URL seria: http://geoffsvm:5601
Alternativamente, se você não tiver um nome DNS configurado, pode usar o endereço IP da VM:
http://[seu-ip-da-vm]:5601
No final, apenas certifique-se de que você está apontando para o host correto e usando a porta 5601, que é a padrão para o Kibana.

Nota: Se a qualquer momento você quiser começar do zero, então execute os seguintes passos para apagar a configuração:
Para remover todos os contêineres, redes e volumes, execute os seguintes comandos:
docker compose down --volumes --remove-orphans
docker system prune -a --volumes -f
Configurando o Veeam VBR para Enviar Dados Syslog para ELK
Para ingerir logs em nossa configuração e ver como está funcionando, configuraremos o Veeam VBR para encaminhar suas mensagens syslog para o ELK:
1. Vá ao menu suspenso no canto superior esquerdo e clique em “Opções.”

2. Em seguida, clique na “Aba de Encaminhamento de Eventos.”

3. Aqui, adicionaremos o servidor syslog que criamos no Docker.
Clique em “Adicionar” e digite os detalhes.
Em seguida, clique em:
- “Aplicar” para salvar e fechar a janela.
- “OK” para salvar e manter a janela aberta.


Uma vez que você pressione aplicar ou ok, o Veeam enviará sua primeira mensagem de teste syslog para o Elasticsearch.
VERIFICAR Descoberta de Log no Kibana
4. Navegue de volta para a interface do Kibana.
5. No menu suspenso no canto superior esquerdo, clique em “Descobrir.” Lá você será apresentado a um convite para criar uma nova visualização de dados, incluindo uma visualização dos dados de syslog por campo:

6. Clique em “Criar visualização de dados.”

Você pode ver que nosso servidor Elasticsearch já recebeu algumas mensagens de syslog do Veeam. Quando você configura as configurações do servidor syslog no Veeam, ele envia automaticamente uma mensagem de teste. Isso permite que você verifique se seu sistema de monitoramento ou SIEM está recebendo os logs corretamente.
Vamos nomear nossa visualização de dados como Veeam_Logs e usar um padrão de índice que corresponda aos logs já ingeridos.

7. Clique em “Salvar visualização de dados no Kibana.”
8. Pressione "Descobrir" no menu do lado esquerdo da página para ver as mensagens de log do VBR.


Conclusão
Com seu laboratório ELK em funcionamento, você deu um grande passo em direção à construção de um ambiente SIEM funcional. Neste post, percorremos a configuração de contêineres Docker para Elasticsearch, Logstash e Kibana, configuramos um pipeline Logstash para mensagens de syslog do Veeam e exploramos esses logs no Kibana. Agora você tem uma base sólida para ingerir e visualizar dados de log em um ambiente de teste controlado.
No post final desta mini-série no próximo mês, construiremos sobre essa base mergulhando no ElasticSecurity e explorando como ele aprimora a detecção de ameaças e alertas dentro do ecossistema ELK. Também apresentaremos o Fluentd como uma alternativa ao Logstash, comparando as duas ferramentas e mostrando como configurar o Fluentd para encaminhar logs para o Elasticsearch. Se você está interessado em casos de uso de monitoramento de segurança, criação de painéis e otimização de seu pipeline de logs, você não vai querer perder o que vem a seguir.