Cover
ابدأ الآن مجانًا LSS - Lecture VIIIb - Linux Auditing.pdf
Summary
# auditd voor gedetailleerde logging
Auditd is een daemon die zorgt voor gedetailleerde en manipulatief bestendige logging van systeemactiviteiten op Linux-systemen, voornamelijk gericht op het monitoren van systeemoproepen. Dit is van cruciaal belang voor forensische analyse na een beveiligingsincident, mits de logging voorafgaand aan het incident was ingeschakeld [3](#page=3).
### 1.1 Implementatie en componenten
De implementatie van auditd omvat verschillende componenten [4](#page=4):
* **Daemon:** `auditd` zelf is de achtergrondservice die verantwoordelijk is voor het vastleggen van gebeurtenissen.
* **Systemd service:** `auditd.service` is de systemd-unit die het beheer van de daemon regelt [5](#page=5).
* **Gebruikershulpprogramma's:** `auditctl` en andere tools worden gebruikt om interactie te hebben met het auditsysteem [4](#page=4).
* **Logbestand:** De auditgebeurtenissen worden opgeslagen in `/var/log/audit/audit.log` [4](#page=4).
* **Configuratiebestand:** De hoofdconfiguratie voor de `auditd` daemon bevindt zich in `/etc/audit/auditd.conf` [4](#page=4).
Op Debian-gebaseerde systemen is `auditd` niet standaard geïnstalleerd, terwijl het op RHEL-gebaseerde systemen standaard geïnstalleerd en actief is [4](#page=4).
### 1.2 Configuratie van auditd
Het configuratiebestand `/etc/audit/auditd.conf` bevat diverse instellingen die het gedrag van de auditdaemon bepalen. Belangrijke configuratieopties zijn onder meer [6](#page=6):
* Locatie van het logbestand.
* Rotatie van logbestanden.
* Monitoring van schijfruimte.
* Foutafhandeling.
* Externe logging.
* En meer [6](#page=6).
### 1.3 Auditregels
#### 1.3.1 Toon huidige regels
De momenteel geladen auditregels kunnen worden weergegeven met het commando `auditctl -l` [7](#page=7).
#### 1.3.2 Creëren van auditregels
Auditregels specificeren welke systeemactiviteiten moeten worden gelogd. Ze worden doorgaans aangemaakt met het `auditctl` commando.
**Voorbeeld:** Om schrijf- en attribuutwijzigingen voor het bestand `/etc/passwd` te monitoren, kan de volgende regel worden gebruikt [8](#page=8):
`auditctl -a always,exit -F path=/etc/passwd -F arch=b64 -F perm=wa -k passwd_monitoring`
Uitleg van de componenten van deze regel:
* `-a always,exit`: Voegt een regel toe die systeemoproepen monitort bij het verlaten (exit) van de oproep [8](#page=8).
* `-F`: Wordt gebruikt voor filters.
* `path=/etc/passwd`: Specificeert het te monitoren bestand [8](#page=8).
* `arch=b64`: Zorgt ervoor dat de regel alleen van toepassing is op 64-bit systeemoproepen [8](#page=8).
* `perm=wa`: Filtert specifiek op schrijf (`w`) en attribuutwijzigingen (`a`) [8](#page=8).
* `-k passwd_monitoring`: Dit is een sleutel (key) die zelf gedefinieerd moet worden om gebeurtenissen in het auditlogboek te taggen en te filteren. Er zijn geen vooraf gedefinieerde sleutels [8](#page=8).
* `-S`: Hiermee kan gefilterd worden op het type systeemoproep. Als dit niet gespecificeerd is, worden alle systeemoproepen meegenomen [8](#page=8).
Meer voorbeelden van auditregels zijn te vinden in de man-pagina van `auditctl` en in de directory `/usr/share/audit/sample-rules/` [9](#page=9).
#### 1.3.3 Persistentie van auditregels
Om auditregels persistent te maken zodat ze na een herstart van de systeembehoud, moeten ze worden opgeslagen in een `.rules` bestand in de directory `/etc/audit/rules.d/`. Het bestand `/etc/audit/audit.rules` wordt automatisch gegenereerd (door het `augenrules` binary) wanneer de `auditd` service herladen wordt, gebaseerd op de regels in de `.rules` bestanden [14](#page=14).
#### 1.3.4 Welke regels te gebruiken?
Er zijn best practices en aanbevolen configuraties beschikbaar. Een GIT-repository van Florian Roth biedt een basisconfiguratie die uit-de-doos werkt op de meeste grote Linux-distributies, geschikt is voor de meeste gebruiksscenario's, een redelijke hoeveelheid loggegevens produceert, beveiligingsrelevante activiteiten dekt en gemakkelijk te lezen is. Het voorbeeld wordt gegeven op: `https://github.com/Neo23x0/auditd/blob/master/audit.rules` [15](#page=15).
### 1.4 Auditgebeurtenissen
De vastgelegde gebeurtenissen worden opgeslagen in het bestand `/var/log/audit/audit.log`. Om deze gebeurtenissen te parsen en te doorzoeken op basis van ingestelde auditregels, wordt het hulpprogramma `ausearch` gebruikt [10](#page=10).
**Voorbeelden van `ausearch` gebruik:**
* Zoeken op zelf gedefinieerde 'sleutels':
`ausearch -k passwd_monitoring` [10](#page=10).
* Met enige interpretatie (zoals omzetten van epoch-tijd naar timestamps, uid naar gebruikersnaam, etc.):
`ausearch -k passwd_monitoring -i` [10](#page=10).
`ausearch` leest zijn configuratie uit `/var/log/audit/audit.conf`. De output van `ausearch` kan informatie bevatten zoals epoch-tijd, audit gebeurtenis-ID, etc. [12](#page=12).
**Voorbeeld van `ausearch` na het aanmaken van een gebruiker:**
Het toevoegen van een nieuwe gebruiker kan meerdere auditgebeurtenissen genereren voor `/etc/passwd`, zoals het aanmaken van een nieuw bestand, het verwijderen van het oude bestand, en het updaten van de directory-invoer [13](#page=13).
> **Tip:** De creatie van de auditregel zelf wordt ook gelogd [11](#page=11).
### 1.5 Meer dan expliciet gedefinieerde regels
Het is belangrijk te beseffen dat er meer wordt geaudit dan alleen wat expliciet is gedefinieerd in het `audit.rules` bestand. Dit omvat bijvoorbeeld [16](#page=16):
* SELinux / AppArmor denials.
* Gebruikersaanmeldingen.
* Kernelberichten.
* En meer [16](#page=16).
Het hulpprogramma `aureport` kan reeds enkele van deze gebeurtenissen aan het licht brengen [16](#page=16).
#### 1.5.1 Voorbeeld: SELinux
Wanneer SELinux in permissieve modus staat, worden gebeurtenissen die normaal geblokkeerd zouden worden, gelogd via `auditd`. Dit betreft vaak Access Vector Cache (AVC) meldingen [17](#page=17).
* Zoeken naar permissieve modus logs:
`grep permissive /var/log/audit/audit.log` [17](#page=17).
* Samenvatting van AVC-meldingen met `aureport`:
`aureport --avc` [17](#page=17).
* Zoeken naar specifieke AVC-meldingen met `ausearch`:
`ausearch -m avc` [17](#page=17).
Er zijn ook tools die de ontwikkeling van SELinux-beleid versnellen met behulp van auditlogs:
* `cat /var/log/audit/audit.log | audit2why` [17](#page=17).
* `cat /var/log/audit/audit.log | audit2allow` [17](#page=17).
### 1.6 Hulpprogramma's voor loganalyse
Naast `auditctl` en `ausearch` zijn er nog andere nuttige hulpprogramma's voor het analyseren van auditlogs:
#### 1.6.1 `aulast`
Het `aulast` commando (met de optie `--bad`) toont een lijst van de laatst ingelogde gebruikers of mislukte logins. Dit is vergelijkbaar met de commando's `last` en `lastb` uit de module 'Logging', maar haalt zijn informatie uit `/var/log/audit/audit.log` in plaats van `/var/log/wtmp` of `/var/log/btmp` [18](#page=18).
#### 1.6.2 `aulastlog`
Het `aulastlog` commando toont de laatste login voor alle gebruikers van de lokale machine. Dit is vergelijkbaar met het commando `lastlog`, maar haalt de informatie uit `/var/log/audit/audit.log` in plaats van `/var/log/lastlog` [19](#page=19).
---
# Sysmon voor Linux
Sysmon voor Linux is een systeemmonitor die, gebaseerd op de Windows-versie, gedetailleerde informatie verschaft over procescreaties en netwerkverbindingen, gebruikmakend van eBPF-technologie [21](#page=21).
### 2.1 Introductie en functionaliteit
Sysmon is oorspronkelijk ontwikkeld als een tool voor Windows door Microsoft Sysinternals. De Linux-versie is hiernaar geporteerd en biedt vergelijkbare functionaliteit. Het primaire doel is het gedetailleerd loggen van systeemactiviteiten, zoals procescreaties en netwerkverbindingen. De configuratie is gelijk aan die van Windows en maakt gebruik van XML-bestanden. De technologie achter Sysmon voor Linux maakt gebruik van Extended Berkeley Packet Filter (eBPF) voor het uitvoeren van aangepaste programma's binnen de kernel. Dit maakt het mogelijk om diepgaande inzichten te verkrijgen in systeemgebeurtenissen [21](#page=21).
### 2.2 Installatie
De installatie van Sysmon voor Linux verloopt doorgaans door het toevoegen van de Microsoft-repository en vervolgens het installeren via de package manager (apt of dnf). Na het downloaden van de benodigde bestanden, wordt de installatie gestart met het commando `sysmon -i`. Dit commando creëert automatisch een configuratiebestand en start een systemd-service. Gedetailleerde installatie-instructies zijn te vinden op GitHub [22](#page=22).
> **Tip:** Zorg ervoor dat je de officiële documentatie op GitHub volgt voor de meest actuele installatieprocedures [22](#page=22).
### 2.3 Configuratie
De configuratie van Sysmon voor Linux wordt beheerd via een XML-bestand, doorgaans te vinden op `/opt/sysmon/config.xml`. Dit bestand definieert de schema's voor welke gebeurtenissen gelogd moeten worden. Gebruikers kunnen de beschikbare configuratieopties bekijken met het commando `sysmon -? config` [23](#page=23) [24](#page=24).
### 2.4 Gebeurtenislogs
De gelogde gebeurtenissen worden opgeslagen in de systeemlogbestanden. Op Debian-gebaseerde systemen is dit doorgaans `/var/log/syslog`, terwijl op RHEL-gebaseerde systemen `/var/log/messages` wordt gebruikt. De logbestanden zijn opgemaakt in XML, wat verdere parsing en analyse vergemakkelijkt [25](#page=25).
> **Voorbeeld:** Een procescreatiegebeurtenis kan gedetailleerde informatie bevatten zoals de naam van het proces, de parent-ID, de command line argumenten en de gebruikerscontext waarin het proces is gestart.
### 2.5 Tools voor analyse
Voor het eenvoudig bekijken en parsen van de gegenereerde logbestanden is er de gebruikerslevel tool `sysmonLogView`. Deze tool kan, in combinatie met commando's zoals `tail -f` en `sudo`, real-time de logbestanden doorzoeken [26](#page=26).
> **Voorbeeld:** Het volgende commando toont de meest recente logregels van `/var/log/syslog` en pipe deze door naar `sysmonLogView` voor een overzichtelijke weergave:
> `sudo tail -f /var/log/syslog | sudo /opt/sysmon/sysmonLogView` [26](#page=26).
---
## Veelgemaakte fouten om te vermijden
- Bestudeer alle onderwerpen grondig voor examens
- Let op formules en belangrijke definities
- Oefen met de voorbeelden in elke sectie
- Memoriseer niet zonder de onderliggende concepten te begrijpen
Glossary
| Term | Definition |
|------|------------|
| auditd | Een daemon die een gedetailleerd en manipulatief bestendig loggingmechanisme biedt voor het identificeren van specifieke acties op een Linux-systeem, met focus op systeemoproepen om bij te houden wat, wie, wanneer en van waar acties zijn uitgevoerd. |
| Auditregels | Instructies die worden ingesteld met tools zoals `auditctl` om de `auditd` daemon te instrueren welke systeemoproepen of bestandspaden gemonitord moeten worden, inclusief filters voor architectuur en permissies, en sleutelwoorden voor latere filtering. |
| ausearch | Een command-line tool die wordt gebruikt om auditgebeurtenissen te parsen en te doorzoeken in het `/var/log/audit/audit.log` bestand, met de mogelijkheid om te filteren op specifieke sleutelwoorden, systeemaanroepen en tijdperken. |
| auditctl | Een gebruikersniveau-tool die wordt gebruikt om auditregels te laden, te inspecteren en te verwijderen in de auditd-daemon, essentieel voor het configureren van de monitoring van systeemactiviteiten. |
| Sysmon for Linux | Een systeemmonitor die gedetailleerde informatie biedt over procescreaties, netwerkverbindingen en andere systeemactiviteiten op Linux, gebaseerd op Microsoft Sysinternals en gebruikmakend van eBPF, met configuratie in XML-formaat. |
| eBPF (Extended Berkeley Packet Filter) | Een technologie die aangepaste programma's in de kernel van Linux laat uitvoeren, gebruikt door Sysmon for Linux om gedetailleerde informatie te verzamelen over systeemgebeurtenissen op een efficiënte manier. |
| XML (Extensible Markup Language) | Een markup-taal die wordt gebruikt voor het structureren en transporteren van gegevens, toegepast door Sysmon for Linux voor zijn configuratiebestanden en voor het formatteren van gelogde gebeurtenissen. |
| Systeemoproep (System Call) | Een interface waarmee een computerprogramma een dienst kan aanvragen bij de kernel van het besturingssysteem, wat de basis vormt voor veel auditmechanismen zoals `auditd`. |
| SELinux (Security-Enhanced Linux) | Een beveiligingsmechanisme dat toegangscontroles afdwingt op basis van beleidsregels, waarbij ontkenningen gelogd kunnen worden door `auditd` en geanalyseerd met tools zoals `audit2why` en `audit2allow`. |
| Logbestand | Een bestand waarin gebeurtenissen en informatie worden opgeslagen door software of het besturingssysteem, zoals `/var/log/audit/audit.log` voor `auditd` en `/var/log/syslog` of `/var/log/messages` voor Sysmon. |