Elasticsearch e Fluentd
A Pilha EFK
Já analisamos a pilha ELK, mas como prometido no início da série, também queríamos apresentar uma alternativa ao Logstash. O Fluentd é mais leve e alguns administradores preferem usá-lo.
Assim como em nossos blogs anteriores, você pode configurar um ambiente de testes clonando nosso repositório Git e seguindo as instruções.
Por que EFK para Segurança?
A pilha EFK oferece várias vantagens para monitoramento de segurança. Como mencionamos antes, o Elasticsearch fornece capacidades de busca rápidas em conjuntos de dados massivos, tornando-o ideal para analisar logs de segurança de múltiplas fontes. O Fluentd, assim como o Logstash em nossos exemplos anteriores, atua como uma camada de registro unificada que pode analisar, transformar e direcionar dados de log de várias fontes para o Elasticsearch. O Kibana serve como a interface de visualização, enquanto o Elastic Security adiciona capacidades dedicadas de SIEM, incluindo caça a ameaças, gerenciamento de casos e regras de detecção automatizadas.
Nas próximas seções, discutiremos as principais diferenças entre Fluentd e Logstash.
Arquitetura e Desempenho
Logstash é construído em Java/JRuby e tende a ser mais intensivo em recursos, com maior uso de memória, mas excelente taxa de processamento. Ele utiliza uma arquitetura baseada em pipeline com estágios de entrada → filtro → saída, que é particularmente adequada para transformações complexas.
Fluentd é escrito em Ruby, com partes críticas de desempenho em C, tornando-o mais leve em uso de memória e mais eficiente para streaming de logs de alto volume. Ele utiliza um sistema de roteamento baseado em tags que pode ser mais flexível para cenários complexos de roteamento de logs.
Capacidades de Análise de Syslog
Logstash se destaca na análise de syslog com:
- Plugins de entrada syslog ricos e integrados que lidam com vários formatos RFC (RFC3164, RFC5424)
- Padrões grok poderosos para análise personalizada
- Suporte forte a regex para extração complexa de mensagens
- Excelente manuseio de dados estruturados dentro de mensagens syslog
Fluentd oferece:
- Bom suporte a syslog através de plugins como fluent-plugin-syslog
- Análise mais leve que é eficiente para cenários de alto throughput
- Mais adequado para cenários onde você precisa preservar a estrutura original da mensagem
- Configuração mais simples para ingestão básica de syslog
Configuração e Facilidade de Uso
Logstash utiliza uma linguagem específica de domínio que é intuitiva para o pensamento baseado em pipeline, mas pode se tornar complexa para regras de processamento intrincadas. A configuração é muito expressiva para transformação de dados.
Fluentd utiliza um formato de configuração mais direto que muitos acham mais fácil de entender e manter, especialmente para cenários com muito roteamento.
Ecossistema e Plugins
Logstash possui um ecossistema maduro com extensos plugins de filtro especificamente projetados para processamento e enriquecimento de logs. Ele se integra perfeitamente com a pilha Elastic mais ampla.
Fluentd possui um grande ecossistema de plugins e é mais neutro em relação a fornecedores, facilitando a integração com vários backends além do Elasticsearch.
Uso de Memória e Recursos
Para processamento de syslog especificamente, Fluentd normalmente utiliza menos memória e tem uma menor pegada, o que pode ser crucial em ambientes com recursos limitados ou ao processar volumes muito altos de dados syslog.
Logstash requer mais recursos, mas fornece mais poder de processamento para transformações e filtragens complexas.
Confiabilidade e Durabilidade dos Dados
Ambos lidam com syslog de forma confiável, mas Fluentd possui mecanismos de buffer e retry integrados que alguns consideram mais robustos para garantir a entrega de dados. Logstash requer configuração adicional para garantias de confiabilidade semelhantes.
Qual devo escolher?
Se você já está investido no ecossistema Elastic e requer capacidades avançadas de transformação de dados, o Logstash é uma escolha forte. Para aqueles que priorizam eficiência de recursos e configuração mais simples—especialmente para ingestão de syslog—o Fluentd pode ser a melhor opção.
Praticando com EFK
Configurando o Elastic Security
O Elastic Security é a base das capacidades SIEM da Elastic. Na próxima seção, usaremos nosso ambiente de testes EFK Docker Stack para explorá-lo na prática.
1. Clone o repositório Git: https://github.com/object1st/efk-stack.git
Nota: O repositório está organizado como mostrado abaixo. Mais tarde no processo de configuração, você precisará adicionar as senhas que criar aos arquivos de configuração fluentd.conf e kibana.yml.
2. Certifique-se de que você instalou o docker e o docker compose em sua VM de teste Ubuntu.Verifique nosso blog anterior para instruções sobre esse processo.
3. Acesse o diretório.
cd efk-stack
4. Execute este comando para iniciar o ambiente:
docker compose up -d
5. Verifique se todos os contêineres estão em execução:
docker ps
6. Verifique se os serviços estão em execução sem erros nos contêineres:
docker logs elasticseach
docker logs kibana
docker logs fluentd
Nota: Para Kibana e Fluentd, você verá um erro, pois ainda não configuramos a segurança.
Configurando Senhas e Integração de Segurança
Passo 1: Configurar Senhas para Elasticsearch
1. Para começar, você precisará criar senhas para os usuários integrados no Elasticsearch. Execute o seguinte comando:
docker exec -it elasticsearch bin/elasticsearch-setup-passwords interactive
2. Isso solicitará que você defina senhas para vários usuários. Você só precisa lembrar as senhas para os seguintes dois usuários:
- elastic
- kibana_system
3. Para os outros usuários, você pode inserir qualquer senha—elas não serão necessárias para este tutorial.
Passo 2: Adicionar Senhas aos Arquivos de Configuração
1. Depois de criar as senhas, adicione-as ao seu arquivo de configuração do Kibana:
Arquivo: kibana.yaml
2. Atualize ou adicione as seguintes linhas com as senhas que você definiu:
3. Certifique-se de substituir pela senha real que você criou.
Passo 3: Reiniciar Contêineres do Kibana
Após atualizar o arquivo kibana.yaml com a senha correta, reinicie o contêiner do Kibana para aplicar as alterações:
docker compose restart kibana
Passo 4: Atualizar Configuração do Fluentd
Em seguida, atualize seu arquivo fluentd.conf para incluir a senha do Elasticsearch que você criou anteriormente. Isso garante que o Fluentd possa se autenticar corretamente ao enviar logs para o Elasticsearch.
Nota: Certifique-se de que a senha esteja armazenada de forma segura e não exposta no controle de versão.
Passo 5: Reiniciar o Fluentd
Depois de atualizar a configuração, reinicie o contêiner do Fluentd:
docker compose restart fluentd
Passo 6: Verificar o Status do Contêiner
Para confirmar que tanto o Kibana quanto o Fluentd estão funcionando corretamente, verifique seus logs:
Logs do Fluentd:
docker logs fluentd
Logs do Kibana:
docker logs kibana
Procure por quaisquer erros ou avisos que possam indicar problemas com autenticação ou conectividade.
Passo 7: Acessar o Kibana
1. Você será recebido pela seguinte tela de login:
2. Faça login usando a senha que você criou para o usuário Elastic.
Ingestão de uma Mensagem de Syslog de Teste no Fluentd
Para testar sua configuração, você enviará uma mensagem de syslog de exemplo para o Fluentd, que a analisará e a encaminhará para o Elasticsearch. O Kibana então permitirá que você visualize os dados e crie alertas usando o Elastic Security.
Passo 1: Criar um Modelo de Índice
Antes de enviar dados, você precisa definir um modelo de índice que corresponda à estrutura dos logs que o Fluentd enviará.
- Navegue até a pasta Examples em seu repositório clonado.
- Abra o arquivo chamado create_index_template.txt.
- Substitua a senha de espaço reservado pela sua senha real do Elastic.
- Copie todo o conteúdo do arquivo.
- Cole no seu terminal e pressione “Enter” para executar o comando.
- Se bem-sucedido, você deve ver uma resposta como:
Isso confirma que o modelo de índice foi criado e está pronto para receber dados.
Passo 2: Enviar uma Mensagem de Syslog de Teste Veeam
Execute o seguinte comando no seu terminal para simular um alerta de ransomware Veeam:
echo '<14>1 2025-03-20T14:06:09.662307+02:00 VBRSRV01 Veeam_MP - - [origin enterpriseId="31023"] [categoryId=0 instanceId=41600 DetectionTimeUTC="03/20/2025 13:05:41" OibID="0e54d3bf-add8-48eb-9122-fad3ac1e8fb3" ActivityType="EncryptedData" UserName="TECH\user1" ObjectName="VM01" VbrHostName="vbrsrv01.tech.local" Description="Potential malware activity detected"]' | nc -u -q0 localhost 5514
Esta mensagem será capturada pelo Fluentd, analisada e enviada para o Elasticsearch.
Passo 3: Criar um Padrão de Índice no Kibana
1. No Kibana, vá para Gerenciamento de Stack → Padrões de Índice.
2. Clique em “Criar padrão de índice.”
3. No campo de nome do padrão de índice, insira:
veeam-logs-*
4. Selecione o campo de timestamp apropriado no menu suspenso.
5. Clique em “Criar padrão de índice.”
Agora você deve ver dados da mensagem de teste que acabou de enviar.
Construindo Regras de Detecção no Elastic Security
Com os dados fluindo para o Elasticsearch, você pode agora criar regras de detecção para identificar atividades suspeitas.
Passo 1: Criar uma Chave de API para Regras de Detecção
Execute o seguinte comando para gerar uma chave de API para o Elastic Security:
curl -u elastic:Yourelasticpassword -X POST "localhost:9200/_security/api_key" \
-H "Content-Type: application/json" \
-d'{
"name": "kibana-detection-rules",
"role_descriptors": {
"kibana_security": {
"cluster": ["manage_security", "monitor"],
"indices": [
{
"names": ["*"],
"privileges": ["read", "write", "create_index", "view_index_metadata"]
}
]
}
}
}'
Passo 2: Inicializar o Motor de Detecção
Execute este comando para inicializar o motor de detecção no Kibana:
curl -u elastic:YOURELASTICPASSWORD -X POST "localhost:5601/api/detection_engine/index" -H 'Content-Type: application/json' -H 'kbn-xsrf: true'
Passo 3: Criar uma Regra de Detecção Personalizada
1. No Kibana, vá para Segurança → Regras.
2. Clique em “Criar nova regra.”
3. Escolha “Consulta personalizada.”
4. Sob Padrões de índice, remova os padrões padrão e adicione:
veeam-logs-*
5. No campo de consulta personalizada, insira:
activity_type: "EncryptedData"
6. Preencha os detalhes da regra:
- Nome: Veeam Alerta de Ransomware
- Descrição: Detecta atividade potencial de ransomware a partir de alertas Veeam
- Severidade: Alta
- Pontuação de Risco: 75
7. Clique em “Continuar” e configure o agendamento:
- Para testes iniciais, considere definir um intervalo de agendamento curto—como a cada 20 segundos—para verificar rapidamente se os alertas estão sendo acionados conforme esperado. Você pode ajustar esse intervalo mais tarde com base nas suas necessidades operacionais.
8. Pule as ações da regra por enquanto (opcional). Não adicionaremos nenhuma ação de regra, mas você pode experimentar se quiser tentar abordagens diferentes.
9. Clique em “Criar & ativar regra.”
Passo 4: Acionar o Alerta Novamente
Envie outra mensagem de teste para acionar a regra:
echo '<14>1 2025-03-20T14:06:09.662307+02:00 VBRSRV01 Veeam_MP - - [origin enterpriseId="31023"] [categoryId=0 instanceId=41600 DetectionTimeUTC="03/20/2025 13:05:41" OibID="0e54d3bf-add8-48eb-9122-fad3ac1e8fb3" ActivityType="EncryptedData" UserName="TECH\user1" ObjectName="VM01" VbrHostName="vbrsrv01.tech.local" Description="Potential malware activity detected"]' | nc -u -q0 localhost 5514
Agora você deve ver o alerta aparecer na seção Segurança → Alertas. Você pode clicar no alerta para ver os detalhes e reconhecê-lo.
Criando Painéis de Segurança
Para construir um painel de segurança, vá para Análise → Painel e adicione estas visualizações:
- Tentativas de Autenticação Falhadas ao Longo do Tempo: Um gráfico de linha mostrando quando ocorrem falhas de login, ajudando você a identificar padrões de ataque e períodos de alta atividade.
- Principais IPs de Origem por Tentativas Falhadas: Uma tabela listando endereços IP com os maiores números de logins falhados, facilitando a identificação de infratores recorrentes.
- Distribuição Geográfica dos Ataques: Um mapa mostrando de onde vêm os ataques, proporcionando uma visão global das origens das ameaças.
- Relação de Sucesso vs Falha de Autenticação: Um gráfico de pizza comparando logins bem-sucedidos e falhados para destacar atividades incomuns.
- Linha do Tempo da Pontuação de Risco: Um histograma mostrando como as pontuações de risco mudam ao longo do tempo, ajudando você a detectar picos nos níveis de ameaça.
Recursos Avançados de Segurança
O Elastic Security oferece ferramentas para melhorar a detecção e análise de ameaças:
- Linha do Tempo: Permite que analistas revisem eventos de segurança em detalhes e entendam como os ataques se desenrolam.
- Ajuste de Regras de Detecção: Ajuda a reduzir alertas falsos enquanto mantém a detecção precisa. Ajuste regularmente as regras com base no comportamento normal do sistema. Use aprendizado de máquina para identificar atividades incomuns.
- Gerenciamento de Casos: Rastreia investigações e mantém registros de auditoria. Regras de detecção podem criar automaticamente casos com detalhes relevantes para acelerar a resposta.
Considerações de Produção
Para implantações seguras e confiáveis:
- Fortalecimento de Segurança: Use criptografia TLS, imponha autenticação e autorização, e aplique atualizações regulares. Implemente o Elasticsearch em um cluster para alta disponibilidade e configure backups.
- Planejamento de Recursos: O Elasticsearch precisa de memória suficiente e armazenamento rápido. Defina políticas de retenção de logs que equilibrem segurança e custo. Use gerenciamento do ciclo de vida do índice para lidar automaticamente com dados antigos.
- Segurança de Rede: Use firewalls para limitar o acesso aos componentes EFK. Segmente sua rede para manter o sistema de segurança separado de outras infraestruturas.
Conclusão
A pilha EFK com Elastic Security oferece uma base sólida para monitorar e detectar ameaças. Com essa configuração, você pode coletar, processar e analisar logs de segurança, detectar ameaças automaticamente e visualizar dados por meio de painéis.
À medida que seu sistema cresce, expanda suas fontes de log, crie regras de detecção personalizadas e conecte-se a feeds externos de inteligência de ameaças. O monitoramento de segurança eficaz requer atualizações regulares, ajustes e analistas qualificados. A pilha EFK fornece as ferramentas—o sucesso depende de como você as utiliza.