CÓDIGO DA DISCIPLINA: DEE345
Departamento de Engenharias e Exatas - UFPR/Palotina
Docente de Segurança da Informação
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
.
Auditoria e monitoramento são pilares da segurança cibernética, permitindo:
/var/log/apache2/access.log
).
cat /var/log/apache2/access.log | grep "POST.*login"
Explicação: Filtra requisições POST para endpoints de login, detectando explorações.
/var/log/auth.log
).
journalctl -u sshd --since "2025-06-10" | grep "Failed"
Explicação: Lista falhas de login SSH desde uma data específica.
/var/log/kern.log
ou dmesg
.
dmesg --level=err,crit | grep -i "segfault"
Explicação: Detecta erros críticos do kernel, como falhas de segmentação.
tcpdump
).
tcpdump -i eth0 port 80 -w web_traffic.pcap
Explicação: Captura tráfego HTTP para análise posterior.
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.
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
.
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.
# 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
fail2ban
ou via firewall.
zgrep
: Busca em logs comprimidos.
zgrep "error" /var/log/syslog*.gz
Explicação: Analisa logs antigos comprimidos.
journalctl
: Logs do systemd.
journalctl -p 3 -u apache2 --since "1 hour ago"
Explicação: Lista erros do Apache na última hora.
sort | uniq -c
: Conta eventos.
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c
Explicação: Conta tentativas de login falhas por IP.
docker run -d -p 9000:9000 -p 12201:12201/udp graylog/graylog
Explicação: Centraliza logs com interface web para análise.
# 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.
# 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.
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.
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.
git clone https://github.com/cowrie/cowrie.git
cd cowrie
pip install -r requirements.txt
bin/cowrie start
# Configuração (cowrie.cfg)
[ssh]
port = 2222
# Analisar logs
cat /var/log/cowrie/cowrie.json | jq '.eventid == "cowrie.session.connect"'
Explicação: Simula SSH e registra conexões de atacantes.
sudo apt install dionaea
sudo systemctl start dionaea
# Verificar downloads
cat /var/log/dionaea/dionaea.log | grep "download"
Explicação: Captura malware via serviços vulneráveis simulados.
docker run -d -p 64294:64294 tpot
Explicação: Combina múltiplos honeypots com interface web.
sudo curl -s https://packages.wazuh.com/4.x/apt/deb/wazuh-agent_4.5.2-1_amd64.deb -o wazuh-agent.deb
sudo dpkg -i wazuh-agent.deb
sudo WAZUH_MANAGER="192.168.1.100" /var/ossec/bin/wazuh-control start
Explicação: Monitora endpoints com agentes leves.
# Filebeat (filebeat.yml)
filebeat.inputs:
- type: log
paths:
- /var/log/nginx/access.log
output.elasticsearch:
hosts: ["localhost:9200"]
Explicação: Envia logs para análise no Kibana.
playbook:
name: Incident Response
steps:
- name: check_malware
action: scan_file
args:
file_path: "{{ incident.file_path }}"
- name: block_ip
action: firewall_block
args:
ip: "{{ incident.src_ip }}"
Explicação: Automatiza resposta a incidentes.
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
.
xpack.security.enabled: true
sourcetype=auth_log "Failed password" | stats count by src_ip
Explicação: Conta tentativas de login falhas por IP.
/opt/nessus/bin/nessuscli scan -t 192.168.1.0/24 --policy "Advanced Scan"
Explicação: Varre vulnerabilidades em sub-rede.
nmap -O 192.168.1.10
Explicação: Detecta SO e serviços do host.
tripwire --init
tripwire --update --twrfile /var/lib/tripwire/report/hostname-date.twr
Explicação: Monitora integridade de arquivos.
sudo apt install ossec-hids
sudo /var/ossec/bin/ossec-control start
# Regra (/var/ossec/rules/local_rules.xml)
<rule id="100001" level="10">
<if_sid>530</if_sid>
<match>root login from</match>
<description>Root login detectado</description>
</rule>
Explicação: Alerta logins como root.
sudo apt install rkhunter
rkhunter --check --skip-keypress --report-warnings-only
Explicação: Detecta rootkits.
sudo lynis audit system
Explicação: Audita configurações de segurança.
who -u
: Lista usuários logados.
Explicação: Detecta sessões suspeitas.
ss -tulnp | grep ":22"
: Mostra processos na porta 22.
Explicação: Identifica serviços SSH ativos.
iftop -i eth0
: Monitora banda.
Explicação: Detecta tráfego anômalo.
sudo dnsmasq --addn-hosts=/etc/dnsmasq.d/fake_hosts
Explicação: Simula ataque de DNS poisoning.
sudo ettercap -T -M arp /192.168.1.10// /192.168.1.1//
Explicação: Intercepta tráfego via ARP spoofing.
yara -r rules/malware.yar /var/www/html
Explicação: Detecta malware com regras YARA.
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.
curl -X POST "localhost:5601/api/saved_objects/_import" -H "kbn-xsrf: true" -F file=@dashboard.ndjson
Explicação: Importa dashboards Kibana.
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.
Visualização de tentativas de login falhas por IP:
docker run -d -p 80:80 nginx
nikto -h http://localhost
event.action: "scan"
/etc/rsyslog.conf
?imudp
habilita a recepção de logs via UDP na porta 514.
imudp
, não imuxsock
ou outros.
-p wa
monitora escrita (w) e acesso (a) no arquivo.
-p wa
.
dmesg --ctime | tail -n 50
mostra as últimas 50 mensagens do kernel com timestamps humanos.
dmesg --ctime | tail
para logs do kernel; as outras opções apontam para syslog ou journal.