🔍 Øvelse 27 – Audit af en fil for ændringer¶
ℹ️ Information¶
Formålet med denne øvelse er at introducere, hvordan audit-regler kan konfigureres med auditd.
Auditd giver mulighed for at overvåge kritiske systemfiler og registrere ændringer, som kan være relevante for både sikkerhed og compliance.
I øvelsen arbejdes der med:
- Midlertidige audit-regler
- Permanente audit-regler
- Analyse af audit-logs
📚 Baggrund¶
For at definere hvilke hændelser der skal logges af auditd, anvendes audit-regler.
Disse regler kan oprettes på to måder:
- Dynamisk via kommandoen auditctl
- Permanent via konfigurationsfiler i
/etc/audit/rules.d/
Audit-logs gemmes som standard i følgende fil: /var/log/audit/audit.log
⚙️ Auditd konfigurationsfiler¶
Auditd konfigureres primært gennem følgende filer og mapper:
-
/etc/audit/auditd.confIndeholder generelle indstillinger for auditd, fx logfilens placering og størrelse.
-
/etc/audit/rules.d/Mappe med konfigurationsfiler for audit-regler.
Her kan man definere permanente regler, som indlæses ved opstart. -
/etc/audit/audit.rulesSamlet fil med alle aktive regler.
Denne fil genereres automatisk ud fra indholdet irules.d.
💡 I praksis arbejder man typisk i rules.d, da det giver bedre struktur og overblik.
📦 Eksempel på community- og standardregler¶
I praksis starter man sjældent med at skrive alle audit-regler selv.
Et eksempel på community-udviklede regelsæt kan findes i Linux Audit-projektets rules/-mappe på GitHub.
Her findes både basisregler og mere avancerede profiler, fx:
10-base-config.rules30-stig.rules31-privileged.rules40-local.rules99-finalize.rules
Disse viser, hvordan auditd kan anvendes til fx:
- overvågning af systemændringer
- registrering af privilegerede handlinger
- compliance og hardening
🛡️ Compliance og best practice (CIS)¶
Der findes også standarder og benchmarks for, hvordan auditd bør konfigureres.
Et vigtigt eksempel er CIS Benchmark for Ubuntu Server, hvor:
- afsnit 4.1.3 indeholder konkrete anbefalinger til auditd-konfiguration
Disse anbefalinger bruges i praksis til at:
- sikre systemer mod kendte trusler
- opfylde compliance-krav
- etablere et baseline sikkerhedsniveau
💡 I dette forløb arbejder vi med simple regler for at forstå principperne, før vi ser på mere avancerede eller standardiserede regelsæt. I en senere øvelse skal der arbejdes med CIS benchmarks
🧭 Instruktioner¶
Husk at notere observationer og resultater i dit Linux cheat sheet.
⚠️ Brug af generative AI’er i undervisningen¶
Følgende tilgang må kun anvendes i undervisningssammenhæng (aldrig i en virksomhed).
Generative AI’er kan anvendes til at forklare output fra logs i en læringskontekst.
Hvis du er i tvivl om betydningen af et audit-log output, kan du stille følgende type spørgsmål:
Jeg brugte denne kommando:
<kommando>
Jeg fik dette output:<log output>
Kan du forklare, hvad dette betyder?
Vigtigt:
I en virksomhedsmæssig kontekst må interne logs eller følsomme data aldrig deles med generative AI-værktøjer, medmindre andet er anvist.
1️⃣ Tilføj auditregel med auditctl (midlertidig regel)¶
- Opret en auditregel, der overvåger ændringer og skrivninger til filen /etc/passwd:
auditctl -w /etc/passwd -p wa -k user_change
Forklaring:- w angiver hvilken fil der overvåges
- p definerer handlinger (w = write, a = attribute change)
- k tildeler en nøgle, som bruges til søgning i logs
- Udskriv en rapport over loggede hændelser:
aureport -i -k | grep user_change- i oversætter numeriske værdier til læsbare navne
- k filtrerer på nøgle
Der bør være en hændelse i loggen. Det er tilføjelsen af reglen.
- Opret en ny bruger.
- Udskriv rapporten igen og verificér, at der nu er to nye hændelser:
- Én for skrivning til filen (w)
- Én for ændring af metadata (a)
- Analysér hændelserne mere detaljeret med:
ausearch -i -k user_changeAureport giver hændelse rapportering, der viser en enkelt hændelse, udledt af aggregering af flere logs.
2️⃣ Permanente auditregler via konfigurationsfil¶
Auditctl-regler er ikke persistente og forsvinder ved genstart.
For at gøre regler permanente skal de gemmes i /etc/audit/rules.d/.
- Åbn filen
/etc/audit/audit.rules og gennemse indholdet.
Bemærk at filen autogenereres ud fra /etc/audit/rules.d/. - Gem de nuværende aktive regler i en ny fil:
sh -c "auditctl -l > /etc/audit/rules.d/custom.rules"
Tip: Kontrollér inden, at reglen stadig er aktiv:auditctl -l - Genstart auditd:
systemctl restart auditd - Udskriv
/etc/audit/audit.rulesog verificér, at reglen nu er indlæst. - Opret endnu en bruger og verificér, at ændringen logges.
- Slet filen
/etc/audit/rules.d/custom.rulesfor at fjerne den permanente regel og genstart auditd.
3️⃣ Overvågning af en almindelig tekstfil¶
Auditd kan også anvendes til overvågning af almindelige filer.
- Opret en testfil:
echo "Dette er en testfil" > testfil.txt - Opret en auditregel:
auditctl -w /path/to/testfil.txt -p wa -k textfile_watch - Tilføj en ny linje til filen:
echo "Ny linje tilføjet" >> testfil.txt - Verificér hændelsen:
ausearch -i -k textfile_watch - Verificer at hændelsen ikke (eller kun i begrænset omfang) bliver vist med aureport
Ændringen af filen bør kun være synlig igennem ausearch, og ikke aureport. aureport aggregerer audit-events til overskuelige rapporter (fx per executable eller hændelsestype) og viser derfor ikke nødvendigvis alle individuelle filevents. ausearch kan sammenlignes med et direkte kig i
/var/log/audit/audit.log. ofte omtales dette som forskel i granularitet
💡 Bemærk: Når en tekstfil ændres via shell (fx echo >> fil), vil ændringen typisk blive udført af shellen (bash). Dette gør, at hændelsen ikke fremstår som en tydelig applikationshændelse i aureport, men stadig logges korrekt i audit-loggen.
💡 Faglig pointe: Forskellen mellem aureport og ausearch illustrerer forskellen mellem aggregeret loganalyse og rå loganalyse, hvilket er centralt i både sikkerhedsovervågning og fejlsøgning.
🤔 Refleksion¶
Overvej følgende spørgsmål:
- Hvordan kan auditd hjælpe med at opdage uautoriserede ændringer?
- Hvilke filer eller systemområder bør overvåges på en produktionsserver?
- Hvordan kan auditd integreres med et SIEM-system som Wazuh?