Logo UFPR Logo Licenciatura em Computação

CÓDIGO DA DISCIPLINA: DEE345

SEGURANÇA DIGITAL - Aula 13

Professor Jéfer Benedett Dörr

Prof. Jéfer Benedett Dörr

Departamento de Engenharias e Exatas - UFPR/Palotina

Docente de Segurança da Informação

Aula 13: Auditoria, Monitoramento e Detecção de Intrusões

Objetivos de Aprendizagem

1. Conceito de Auditoria

Auditoria de segurança envolve coletar e analisar dados para identificar violações. Eventos críticos incluem:

Exemplo prático: Múltiplas falhas de login em /var/log/auth.log indicam ataque de força bruta, exigindo bloqueio via fail2ban.

Por que Auditoria e Detecção são Importantes?

Auditoria e monitoramento são pilares da segurança cibernética, permitindo:

2. Pontos de Coleta de Dados

Ferramenta Adicional: Zeek

sudo apt install zeek
zeek -i eth0 local
cat /usr/local/zeek/logs/current/conn.log

Explicação: Gera logs detalhados de conexões de rede, detectando tráfego anômalo.

3. Syslog (syslogd/rsyslog)

Configure em /etc/rsyslog.conf:

# Habilitar TCP
module(load="imtcp")
input(type="imtcp" port="514")

# Enviar logs para servidor remoto
*.* @@192.168.1.100:514

# Separar logs SSH
if $programname == 'sshd' then /var/log/sshd.log
& stop

Explicação: Recebe logs via TCP, envia para servidor remoto e isola logs SSH.

Teste com logger:

logger -p local0.alert -t TEST "Alerta de teste personalizado"

Explicação: Gera log personalizado no facility local0.

Ferramenta Adicional: Syslog-ng

sudo apt install syslog-ng
syslog-ng -F

Configuração: (/etc/syslog-ng/syslog-ng.conf)

source s_local { system(); internal(); };
destination d_auth { file("/var/log/auth.log"); };
filter f_auth { facility(auth); };
log { source(s_local); filter(f_auth); destination(d_auth); };

Explicação: Direciona logs de autenticação para arquivo específico.

4. Análise de Logs

Estudo de Caso: Detectando um Ataque Brute Force

# Logs de falha de autenticação no SSH
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

# Saída esperada (IPs suspeitos):
# 192.168.1.15: 203 tentativas
# 91.234.1.22: 47 tentativas
Ação recomendada: Bloquear IPs com fail2ban ou via firewall.

Ferramentas

Ferramenta Adicional: Graylog

docker run -d -p 9000:9000 -p 12201:12201/udp graylog/graylog

Explicação: Centraliza logs com interface web para análise.

5. IDS/IPS

5.1 Snort (NIDS)

# Instalar
sudo apt install snort

# Regra customizada (/etc/snort/rules/local.rules)
alert tcp any any -> any 445 (msg:"SMB exploit attempt"; content:"|FF|SMB"; sid:1000002; rev:1;)

# Modo IPS
sudo snort -c /etc/snort/snort.conf -i eth0 --daq afpacket --daq-mode inline -Q

Explicação: Detecta e bloqueia tentativas de exploração SMB.

5.2 Suricata

# Instalar
sudo apt install suricata
sudo suricata-update

# Regra customizada (/etc/suricata/rules/custom.rules)
alert http any any -> any any (msg:"Suspicious User-Agent"; content:"User-Agent: malicious"; sid:2000001; rev:1;)

# Analisar logs
cat /var/log/suricata/eve.json | jq '.event_type == "alert"'

Explicação: Detecta User-Agents maliciosos e filtra alertas JSON.

Snort vs. Suricata: Quando Usar?

Critério Snort Suricata
Performance Mais leve Multithread
Suporte a JSON Não Sim (Eve.json)

Recomendação: Use Snort para redes pequenas; Suricata para ambientes corporativos.

Ferramenta Adicional: Zeek

zeek -i eth0 scripts/detect-malicious.zeek

Script: (detect-malicious.zeek)

event http_header(c: connection, is_orig: bool, name: string, value: string) {
    if (name == "USER-AGENT" && /malicious/i in value)
        print fmt("Malicious User-Agent detected: %s", value);
}

Explicação: Detecta User-Agents maliciosos em tráfego HTTP.

6. Honeypots

7. EDR, XDR & SOAR

8. SIEM

Fluxo: Coleta (filebeat) → Ingestão (Elasticsearch) → Alertas (Kibana).

POST /_search
{
  "query": {
    "bool": {
      "filter": [
        {"term": {"host.name": "web01"}},
        {"range": {"@timestamp": {"gte": "now-1h"}}},
        {"match": {"event.severity": "high"}}
      ]
    }
  }
}

Explicação: Busca alertas graves no host web01.

Como os Dados Fluem em um SIEM Moderno

graph LR A[Endpoints] -->|Syslog/Beats| B(Elasticsearch) B --> C{Kibana} C --> D[Alertas] C --> E[Dashboards]

⚠️ Melhor Prática: Protegendo seu Elasticsearch

  • Nunca exponha o Elasticsearch diretamente na internet.
  • Use autenticação básica: xpack.security.enabled: true

Ferramenta Adicional: Splunk

sourcetype=auth_log "Failed password" | stats count by src_ip

Explicação: Conta tentativas de login falhas por IP.

9. Auditoria Preventiva

Verificador de Integridade: Tripwire

O Tripwire monitora alterações em arquivos críticos do sistema, comparando o estado atual com uma “linha de base” previamente criada. Qualquer modificação não autorizada (adicionar, remover ou modificar arquivos) gera um alerta.

10. Ferramentas de Linha de Comando

11. Extensões Avançadas

11.1 DNS Poisoning

sudo dnsmasq --addn-hosts=/etc/dnsmasq.d/fake_hosts

Explicação: Simula ataque de DNS poisoning.

11.2 IP & ARP Spoofing

sudo ettercap -T -M arp /192.168.1.10// /192.168.1.1//

Explicação: Intercepta tráfego via ARP spoofing.

11.3 Zero-Day e APTs

yara -r rules/malware.yar /var/www/html

Explicação: Detecta malware com regras YARA.

11.4 Modern Honey Network

docker run -d --name mhn -p 80:80 -p 8080:8087 honeyhunt/mhn
docker exec mhn /opt/mhn/scripts/install_hpfeeds.sh

Explicação: Centraliza dados de honeypots.

11.5 SIEM ELK + Filebeat

curl -X POST "localhost:5601/api/saved_objects/_import" -H "kbn-xsrf: true" -F file=@dashboard.ndjson

Explicação: Importa dashboards Kibana.

11.3.6 SOAR

playbook:
  name: Ransomware Response
  steps:
    - name: detect_ransomware
      action: scan_files
      args:
        pattern: "*.encrypted"
    - name: isolate_host
      action: isolate_endpoint
    - name: backup_restore
      action: restore_from_backup
      args:
        backup_id: "latest"

Explicação: Responde automaticamente a ransomwares.

12. Gráfico de Exemplo

Visualização de tentativas de login falhas por IP:

Desafio Prático: Simule um Ataque e Monitore

  1. Suba um servidor web com Docker: docker run -d -p 80:80 nginx
  2. Gere tráfego malicioso: nikto -h http://localhost
  3. Analise os logs no Kibana usando a query: event.action: "scan"

Recursos Recomendados

Quiz de Avaliação – Aula 13

1. Para receber logs via UDP no rsyslog, qual módulo deve ser carregado em /etc/rsyslog.conf?

2. Qual parâmetro do auditctl define que um arquivo será monitorado para eventos de escrita e acesso?

3. Qual modo do Snort ativa bloqueio de tráfego quando uma regra é acionada?

4. Qual comando exibe as últimas 50 entradas do kernel log no Linux?

5. Qual ferramenta open source core é usada para rodar um honeypot SSH/Telnet?

6. Qual comando netstat lista todas as conexões TCP estabelecidas com detalhes de PID?

7. Qual ferramenta HIDS monitora alterações de integridade de arquivos e possui modo de inicialização?

8. Qual plataforma centraliza logs, aplica correlação e gera alertas em tempo real?