implant audit

Configura auditd com baseline STIG-light (~12 rules cobrindo file integrity + privilege escalation + login/logout) + expõe events via CLI + integra como 9º collector no threat-status. Também expõe a trilha de conexões SSH (audit ssh).

Setup

sudo implant audit apply       # apt install auditd (se ausente) + write rules + restart
sudo implant audit status      # verifica

STIG-light ruleset

Rules em /etc/audit/rules.d/protocolo-implant.rules. Não editar — apply sobrescreve. Para customizar: crie outro arquivo em /etc/audit/rules.d/.

Key Watches/Syscalls Purpose
identity /etc/passwd, /etc/shadow, /etc/gshadow Tamper de credenciais
privilege /etc/sudoers, /etc/sudoers.d/ Modificação de sudoers
sshd_config /etc/ssh/sshd_config SSH config tamper
exec_priv execve com euid=0 vindo de user normal Privilege escalation
perm_mod chmod/chown críticos Permission manipulation
logins /var/log/wtmp, /var/log/btmp, /var/log/lastlog Login/logout

Events query

# Últimos 50 (default)
sudo implant audit events

# Por key
sudo implant audit events --key exec_priv

# Por user
sudo implant audit events --user alice

# Combinado
sudo implant audit events --since 1h --key privilege --user alice

Trilha de conexões SSH

# Últimas 24h (default), até 500 eventos
sudo implant audit ssh

# Janela custom, em JSON
sudo implant audit ssh --since "1 hour ago" --limit 100 -o json

Lê o journal do sshd (SYSLOG_IDENTIFIER=sshd e sshd-session, que é por onde o OpenSSH 9.x loga): logins Accepted/Failed com origem, usuário, método, fingerprint da chave (publickey) e invalid_user. Não depende do auditd. Em JSON devolve {total, accepted, failed, events[]}.

threat-status integration

implant threat-status ganha seção audit quando applied:

{
  "audit": {
    "severity": "warn",
    "counts_by_key": { "exec_priv": 3, "privilege": 4 },
    "window_minutes": 5,
    "auditd_running": true
  }
}

Severity thresholds (configuráveis em /etc/protocolo-implant/audit.yml):

  • crit: exec_priv > 5 em 5min
  • warn: privilege > 3 OU identity > 1
  • ok: caso contrário

Comandos

Comando Descrição
service status/start/stop/restart Wraps systemctl auditd
service logs [--lines N] journalctl -u auditd
apply Install pkg + write rules (STIG-light) + restart
revert Remove rules + restart
status applied, rules_count, auditd_running, recent_events
events [--last N] [--since X] [--key K] [--user U] Query auditd
ssh [--since X] [--limit N] Trilha de conexões SSH (journal do sshd)
config show/path Config

Todos com --output json.

Emergency-mode

audit é uma feature opt-in. emergency-mode enable chama audit revert (remove só nossas rules; auditd daemon continua se outros usam).