Forense Digital com Linux – Técnicas Práticas – Parte 18

Análise Forense com ELK Stack no Docker: Monitorando alterações na distro Rocky Linux 9

A análise forense digital em sistemas modernos exige ferramentas robustas para coletar, processar e visualizar grandes volumes de dados. O ELK Stack (Elasticsearch, Logstash e Kibana) é uma solução poderosa para monitorar e analisar logs e eventos em tempo real. Neste artigo, vamos explorar como configurar o ELK Stack no Docker em um sistema Rocky Linux 9 e utilizá-lo para identificar alterações suspeitas, como arquivos criados, deletados, modificações em diretórios e logs adulterados.

 

1. Introdução ao cenário

Imagine um servidor Rocky Linux 9 que está apresentando comportamentos anômalos, como alto uso de recursos, arquivos desconhecidos ou logs inconsistentes. O objetivo é utilizar o ELK Stack para:

  • Coletar logs do sistema e eventos de auditoria.

  • Identificar arquivos criados, modificados ou excluídos.

  • Monitorar alterações em diretórios críticos.

  • Visualizar e correlacionar eventos em tempo real.

 

2. Configuração do Docker no Rocky Linux 9

Antes de instalar o ELK Stack, é necessário configurar o Docker no Rocky Linux 9.

 

2.1. Instalação do Docker

Execute os seguintes comandos para instalar o Docker:

sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

2.2. Instalação do Docker Compose

O Docker Compose facilita a orquestração de contêineres. Instale-o com:

sudo dnf install docker-compose-plugin


3. Configuração do ELK Stack no Docker

O ELK Stack pode ser implantado rapidamente usando um arquivo docker-compose.yml.

 

3.1. Criando o Arquivo docker-compose.yml

Crie um arquivo chamado docker-compose.yml com o seguinte conteúdo:

version: '3.7'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.7.0
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms512m -Xmx512m
    ports:
      - "9200:9200"
    networks:
      - elk

  logstash:
    image: docker.elastic.co/logstash/logstash:8.7.0
    container_name: logstash
    volumes:
      - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
    ports:
      - "5044:5044"
    networks:
      - elk
    depends_on:
      - elasticsearch

  kibana:
    image: docker.elastic.co/kibana/kibana:8.7.0
    container_name: kibana
    ports:
      - "5601:5601"
    networks:
      - elk
    depends_on:
      - elasticsearch

networks:
  elk:
    driver: bridge

3.2. Configurando o Logstash

Crie um arquivo logstash.conf para definir o pipeline de coleta de logs:

 

input {
  file {
    path => "/var/log/audit/audit.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}

filter {
  if [path] =~ "audit" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{DATA:host} 
%{DATA:program}(?:\[%{POSINT:pid}\])?: %{GREEDYDATA:message}" } } } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "audit-logs-%{+YYYY.MM.dd}" } }

3.3. Iniciando o ELK Stack

Execute o seguinte comando para iniciar os contêineres:

sudo docker-compose up -d


4. Coletando e analisando logs de auditoria

O Rocky Linux 9 utiliza o auditd para registrar eventos do sistema. Vamos configurar o auditd para monitorar alterações em arquivos e diretórios.

 

4.1. Configurando regras de auditoria

Adicione regras para monitorar alterações em diretórios críticos:

sudo auditctl -w /etc -p wa -k etc_changes
sudo auditctl -w /var/log -p wa -k log_changes
sudo auditctl -w /home -p wa -k home_changes

  • -w: Define o diretório a ser monitorado.

  • -p wa: Monitora escritas (w) e alterações de atributos (a).

  • -k: Define uma chave para identificar a regra.

 

4.2. Visualizando Logs no Kibana

Acesse o Kibana em http://<IP_DO_SERVIDOR>:5601 e crie um índice para os logs de auditoria (audit-logs-*). Use o Discover para visualizar e filtrar eventos, como:

  • Arquivos criados ou modificados.

  • Exclusões de arquivos.

  • Acessos não autorizados.

 

5. Identificando alterações suspeitas

Com o ELK Stack configurado, é possível identificar padrões de atividade maliciosa.

 

5.1. Arquivos Criados ou Modificados

Filtre eventos com a chave etc_changes para identificar alterações em /etc:

event.action: “created” OR event.action: “modified”

5.2. Exclusões de arquivos

Busque eventos de exclusão em /var/log:

event.action: “deleted” AND key: “log_changes”

 

5.3. Acessos não autorizados

Identifique tentativas de acesso a diretórios restritos:

event.action: “accessed” AND key: “home_changes”
 
 

6. Visualizando dados no Kibana

O Kibana permite criar dashboards interativos para monitorar atividades em tempo real. Por exemplo:

  • Gráficos de eventos por hora.

  • Mapa de calor de diretórios monitorados.

  • Alertas para atividades suspeitas.

 

Conclusão

O ELK Stack é uma solução poderosa para análise forense, permitindo a coleta, processamento e visualização de logs em tempo real. Ao configurar o ELK Stack no Docker e integrá-lo com o auditd do Rocky Linux 9, é possível monitorar alterações suspeitas, como arquivos criados, modificados ou excluídos, e identificar atividades maliciosas de forma eficiente.

No entanto, a análise forense exige uma abordagem abrangente: valide sempre os resultados com múltiplas ferramentas e documente todas as evidências para garantir a integridade do processo.

 

Referências Bibliográficas

  • Elastic. (2023). Official Elasticsearch Documentation. Disponível em: https://www.elastic.co/guide.

  • Nikkel, B. (2021). Practical Linux Forensics: A Guide for Digital Investigators. No Starch Press.

  • Rocky Linux Documentation. (2023). Official Rocky Linux Documentation. Disponível em: https://docs.rockylinux.org.

 

Estas obras fornecem bases técnicas aprofundadas sobre o ELK Stack, análise forense e administração de sistemas Rocky Linux, complementando os exemplos práticos deste artigo.