auditd (Linux Audit Daemon) és
el dimoni del sistema d’auditoria del kernel de Linux. Permet registrar
esdeveniments del sistema de manera detallada: accés a fitxers, crides
al sistema, canvis de privilegis, connexions de xarxa, modificacions de
configuració, etc.
És una eina fonamental per a:
- Seguretat: detectar intrusions i comportaments anòmals.
- Compliment normatiu: PCI-DSS, HIPAA, ISO 27001, SOX, GDPR.
- Investigació forense: reconstruir què va passar en un incident.
- Auditoria d’administració: saber qui va fer què i quan.
L’arquitectura es basa en dos components:
- Kernel: el subsistema d’auditoria intercepta esdeveniments i els envia al dimoni.
auditd: recull els esdeveniments del kernel i els escriu al log.
# Debian/Ubuntu
sudo apt install auditd audispd-plugins
# Fedora/RHEL/CentOS
sudo dnf install audit audit-libs
# Arch/Manjaro
sudo pacman -S auditsudo systemctl enable --now auditd
sudo systemctl status auditd
| Component | Descripció |
|---|---|
auditd |
Dimoni principal que recull i escriu els esdeveniments |
auditctl |
Eina per gestionar les regles d’auditoria en temps real |
ausearch |
Cerca i filtra esdeveniments als logs d’auditoria |
aureport |
Genera informes resumits dels logs |
autrace |
Traça les crides al sistema d’un procés (similar a strace) |
audispd |
Dispatcher: distribueix esdeveniments a connectors externs |
augenrules |
Compila les regles de /etc/audit/rules.d/ en un fitxer
únic |
/etc/audit/auditd.confConfiguració principal del dimoni:
# Fitxer de log
log_file = /var/log/audit/audit.log
log_format = RAW
log_group = root
# Mida màxima del log (MB)
max_log_file = 50
# Acció quan s'arriba a la mida màxima
# ROTATE, SYSLOG, SUSPEND, KEEP_LOGS, IGNORE
max_log_file_action = ROTATE
# Nombre de fitxers de log a conservar
num_logs = 10
# Acció quan l'espai en disc és baix
# SYSLOG, SUSPEND, SINGLE, HALT
space_left = 75
space_left_action = SYSLOG
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
# Flux d'esdeveniments per segon (0 = sense límit)
rate_limit = 0
# Mode de prioritat (0=normal, 1=alta, 2=temps real)
priority_boost = 4/etc/audit/audit.rules i /etc/audit/rules.d/Les regles d’auditoria es poden definir a:
/etc/audit/audit.rules: fitxer únic (generat peraugenrules)./etc/audit/rules.d/*.rules: fitxers individuals queaugenrulescompila.
Estructura recomanada a rules.d/:
/etc/audit/rules.d/
├── 10-base-config.rules
├── 20-dont-audit.rules
├── 30-stig.rules
├── 40-local.rules
├── 50-identity.rules
├── 70-system-local.rules
└── 99-finalize.rules| Tipus | Descripció |
|---|---|
| Regles de control | Configuren el comportament del subsistema d’auditoria |
| Regles de sistema de fitxers | Vigilen accés a fitxers i directoris (watches) |
| Regles de crides al sistema | Vigilen syscalls específiques |
auditctlauditctl [opcions]# Veure les regles actives
sudo auditctl -l
# Veure l'estat del subsistema
sudo auditctl -s
# Eliminar totes les regles
sudo auditctl -D
# Bloquejar les regles (immutable, requereix reinici per canviar)
sudo auditctl -e 2
# Activar/desactivar l'auditoria
sudo auditctl -e 1 # activar
sudo auditctl -e 0 # desactivar-w)# Sintaxi
auditctl -w RUTA -p PERMISOS -k CLAU
# Permisos:
# r = lectura
# w = escriptura
# x = execució
# a = canvi d'atributs
# Vigilar lectura i escriptura de /etc/passwd
sudo auditctl -w /etc/passwd -p rwa -k canvi_usuaris
# Vigilar el directori /etc/
sudo auditctl -w /etc/ -p wa -k canvi_configuracio
# Vigilar execució d'un binari
sudo auditctl -w /usr/bin/sudo -p x -k us_sudo
# Vigilar /var/log/
sudo auditctl -w /var/log/ -p wa -k canvi_logs-a)# Sintaxi
auditctl -a LLISTA,ACCIÓ -S SYSCALL [-F CAMP=VALOR] -k CLAU
# Llistes: task, exit, user, exclude
# Accions: always, never
# Auditar tots els intents d'obertura de fitxers fallits
sudo auditctl -a always,exit -F arch=b64 -S open -F exit=-EACCES -k acces_denegat
sudo auditctl -a always,exit -F arch=b32 -S open -F exit=-EACCES -k acces_denegat
# Auditar canvis de privilegis (setuid, setgid)
sudo auditctl -a always,exit -F arch=b64 -S setuid -S setgid -k canvi_privilegis
# Auditar creació i eliminació de fitxers
sudo auditctl -a always,exit -F arch=b64 -S creat -S unlink -S unlinkat -k gestio_fitxers
# Auditar modificacions del sistema de fitxers
sudo auditctl -a always,exit -F arch=b64 -S chmod -S chown -S fchmod -k canvi_permisos
# Auditar muntatge de sistemes de fitxers
sudo auditctl -a always,exit -F arch=b64 -S mount -S umount2 -k muntatge
# Auditar accions d'un usuari concret (uid=1000)
sudo auditctl -a always,exit -F arch=b64 -F uid=1000 -S all -k usuari_ramon
# Excloure esdeveniments d'un procés (reduir soroll)
sudo auditctl -a never,exit -F arch=b64 -F exe=/usr/sbin/crond-F)| Camp | Descripció | Exemple |
|---|---|---|
arch |
Arquitectura (b32/b64) | -F arch=b64 |
uid |
ID d’usuari | -F uid=1000 |
gid |
ID de grup | -F gid=0 |
euid |
UID efectiu | -F euid=0 |
auid |
UID d’auditoria (inici de sessió original) | -F auid=1000 |
pid |
ID de procés | -F pid=1234 |
ppid |
ID del procés pare | -F ppid=1 |
exe |
Ruta de l’executable | -F exe=/bin/bash |
path |
Ruta del fitxer afectat | -F path=/etc/passwd |
exit |
Codi de retorn de la syscall | -F exit=-EACCES |
success |
Èxit (1) o fallada (0) de la syscall | -F success=0 |
key |
Clau de filtratge | -F key=clau |
RHEL/Fedora i altres distribucions inclouen conjunts de regles predefinides:
# Localització habitual
ls /usr/share/audit/sample-rules/
ls /usr/share/doc/audit/
# Regles STIG (Security Technical Implementation Guide)
# Regles PCI-DSS
# Regles NISPOM/etc/audit/rules.d/40-local.rules)# Eliminar regles existents
-D
# Mida del buffer (esdeveniments pendents)
-b 8192
# Acció si el kernel no pot enviar esdeveniments (0=silent,1=printk,2=panic)
-f 1
# ── Identitat i autenticació ──────────────────────────
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/sudoers -p wa -k sudoers
-w /etc/sudoers.d/ -p wa -k sudoers
# ── SSH ───────────────────────────────────────────────
-w /etc/ssh/sshd_config -p wa -k sshd_config
# ── Fitxers de log ────────────────────────────────────
-w /var/log/wtmp -p wa -k session
-w /var/log/btmp -p wa -k session
-w /var/log/lastlog -p wa -k session
# ── Execució de sudo ──────────────────────────────────
-w /usr/bin/sudo -p x -k sudo_exec
-w /bin/su -p x -k su_exec
# ── Canvis de xarxa ───────────────────────────────────
-w /etc/hosts -p wa -k network
-w /etc/network/ -p wa -k network
-w /etc/sysconfig/network -p wa -k network
# ── Cron ─────────────────────────────────────────────
-w /etc/cron.d/ -p wa -k cron
-w /etc/cron.daily/ -p wa -k cron
-w /etc/cron.weekly/ -p wa -k cron
-w /var/spool/cron/ -p wa -k cron
# ── Mòduls del kernel ────────────────────────────────
-w /sbin/insmod -p x -k moduls_kernel
-w /sbin/rmmod -p x -k moduls_kernel
-w /sbin/modprobe -p x -k moduls_kernel
-a always,exit -F arch=b64 -S init_module -S delete_module -k moduls_kernel
# ── Syscalls de privilegis ────────────────────────────
-a always,exit -F arch=b64 -S setuid -S setgid -S seteuid -S setegid -k setuid
-a always,exit -F arch=b32 -S setuid -S setgid -S seteuid -S setegid -k setuid
# ── Accés denegat ─────────────────────────────────────
-a always,exit -F arch=b64 -S open -S openat -F exit=-EACCES -k acces_denegat
-a always,exit -F arch=b64 -S open -S openat -F exit=-EPERM -k acces_denegat
# ── Bloquejar regles (immutable) ──────────────────────
# -e 2Els esdeveniments es desen a /var/log/audit/audit.log en
format de text pla:
type=SYSCALL msg=audit(1717920000.123:456): arch=c000003e syscall=2 success=yes exit=3 a0=7f1234 a1=0 a2=1fffff a3=0 items=1 ppid=1234 pid=5678 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=1 comm="cat" exe="/usr/bin/cat" subj=unconfined_u:unconfined_r key="acces_fitxer"
type=CWD msg=audit(1717920000.123:456): cwd="/home/ramon"
type=PATH msg=audit(1717920000.123:456): item=0 name="/etc/passwd" inode=131073 dev=08:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:passwd_file_t nametype=NORMAL| Camp | Descripció |
|---|---|
type |
Tipus d’esdeveniment (SYSCALL, PATH, CWD, USER_AUTH…) |
msg |
Timestamp i número de sèrie de l’esdeveniment |
syscall |
Número de la crida al sistema |
success |
Si la syscall va tenir èxit |
pid |
PID del procés |
auid |
UID d’auditoria (usuari que va iniciar sessió) |
uid/gid |
UID/GID real del procés |
comm |
Nom del procés |
exe |
Ruta completa de l’executable |
key |
Clau de la regla que ha generat l’esdeveniment |
| Tipus | Descripció |
|---|---|
SYSCALL |
Crida al sistema |
PATH |
Fitxer o directori afectat |
CWD |
Directori de treball actual |
EXECVE |
Execució d’un programa |
USER_AUTH |
Intent d’autenticació |
USER_LOGIN |
Inici de sessió d’usuari |
USER_LOGOUT |
Tancament de sessió |
ADD_USER |
Creació d’un usuari |
DEL_USER |
Eliminació d’un usuari |
CRYPTO_KEY_USER |
Ús de claus criptogràfiques |
AVC |
Denegació de SELinux/AppArmor |
CONFIG_CHANGE |
Canvi de configuració de l’auditoria |
ausearch: cercar
esdeveniments# Cercar per clau
sudo ausearch -k identity
sudo ausearch -k sudo_exec
# Cercar per usuari
sudo ausearch -ua ramon
sudo ausearch -ui 1000 # Per UID
# Cercar per executable
sudo ausearch -x /usr/bin/sudo
# Cercar per tipus d'esdeveniment
sudo ausearch -m USER_LOGIN
sudo ausearch -m SYSCALL
# Cercar per interval de temps
sudo ausearch --start today
sudo ausearch --start yesterday --end today
sudo ausearch --start "06/09/2025 08:00:00" --end "06/09/2025 18:00:00"
# Cercar esdeveniments fallits
sudo ausearch --success no
# Cercar per PID
sudo ausearch -p 1234
# Format llegible
sudo ausearch -k identity -i # Interpreta UIDs, syscalls...
sudo ausearch -k identity --format text # Format text pla
# Combinar criteris
sudo ausearch -k sudoers -ua ramon --start today -iaureport: informes# Resum general
sudo aureport
# Informe d'autenticacions
sudo aureport -au
sudo aureport --auth
# Informe d'inicis de sessió
sudo aureport -l
sudo aureport --login
# Informe d'execucions
sudo aureport -x
sudo aureport --executable
# Informe de fitxers accedits
sudo aureport -f
sudo aureport --file
# Informe d'errors/fallades
sudo aureport --failed
# Informe d'anomalies
sudo aureport -a
sudo aureport --anomaly
# Informe per interval de temps
sudo aureport --start today
sudo aureport --start this-week
# Informe d'usuaris
sudo aureport -u
sudo aureport --user
# Informe de claus (keys)
sudo aureport -k
sudo aureport --key
# Informe resum (estadístiques)
sudo aureport --summaryExemple de sortida de aureport:
Summary Report
======================
Range of time in logs: 09/06/2025 00:00:01.000 - 09/06/2025 23:59:59.000
Selected time for report: 09/06/2025 00:00:01 - 09/06/2025 23:59:59.000
Number of changes in configuration: 4
Number of changes to accounts, groups, or roles: 0
Number of logins: 12
Number of failed logins: 3
Number of authentications: 18
Number of failed authentications: 5
Number of users: 3
Number of terminals: 4
Number of host names: 2
Number of executables: 35
Number of commands: 28
Number of files: 47
Number of AVC's: 0
Number of MAC events: 0
Number of failed syscalls: 8
Number of anomaly events: 0
Number of responses to anomaly events: 0
Number of crypto events: 2
Number of keys: 6
Number of process IDs: 124
Number of events: 892autrace: traçar un
procés# Traçar l'execució d'una ordre
sudo autrace /usr/bin/ls /etc
# Veure els resultats
sudo ausearch -p PID -i
# Netejar les regles temporals d'autrace
sudo autrace --stopsyslog i SIEMEditar /etc/audisp/plugins.d/syslog.conf (o /etc/audit/plugins.d/syslog.conf):
active = yes
direction = out
path = builtin_syslog
type = builtin
args = LOG_INFO
format = string# /etc/audisp/audisp-remote.conf
remote_server = 192.168.1.50
port = 60
transport = tcp# /etc/audisp/plugins.d/au-remote.conf
active = yes
direction = out
path = /sbin/audisp-remote
type = always
format = string-k) per
facilitar la cerca posterior./etc/audit/rules.d/ per organització.max_log_file, num_logs, max_log_file_action = ROTATE).aureport --summary.auditctl -e 2
en producció per evitar modificacions no autoritzades.never per a
processos de sistema molt actius (cron, auditd mateix)./var/log/auth.log, journalctl) per a
investigació forense./etc/passwdsudo auditctl -w /etc/passwd -p wa -k passwd_change
sudo ausearch -k passwd_change -isudosudo auditctl -w /usr/bin/sudo -p x -k sudo_exec
sudo ausearch -k sudo_exec -i --start todaysudo auditctl -a always,exit -F arch=b64 -S open,openat -F exit=-EACCES -k acces_denegat
sudo ausearch -k acces_denegat --success no -isudo aureport --auth --failed --start todaysudo ausearch -ua ramon --start today -i | less# Estat del subsistema
auditctl -s
# Llistar regles actives
auditctl -l
# Afegir vigilància de fitxer
auditctl -w /etc/passwd -p rwa -k passwd
# Afegir regla de syscall
auditctl -a always,exit -F arch=b64 -S execve -k exec
# Eliminar totes les regles
auditctl -D
# Cercar per clau
ausearch -k passwd -i
# Cercar per usuari avui
ausearch -ua usuari --start today -i
# Informe general
aureport --summary
# Informe d'autenticacions fallides
aureport --auth --failed
# Recarregar regles
augenrules --load
service auditd restart
man auditd— Manual del dimoniman auditctl— Manual de gestió de reglesman ausearch— Manual de cercaman aureport— Manual d’informesman audit.rules— Format dels fitxers de reglesman auditd.conf— Configuració del dimoni- Linux Audit Documentation
- Arch Wiki: Audit framework
- Red Hat: Auditing the system