Zoeken op website

Leer Linux-systeemauditing met Auditd Tool op CentOS/RHEL


Systeemaudit verwijst eenvoudigweg naar een diepgaande analyse van een specifiek gericht systeem: een audit bestaat uit een onderzoek van de verschillende onderdelen waaruit dat systeem bestaat, met kritische beoordeling (en indien nodig testen) op verschillende interessegebieden.

Lees ook: Lynis – Beveiligingsaudit- en scantool voor Linux-systemen

Een van de kritische subsystemen op RHEL/CentOS is het Linux-auditsysteem dat algemeen bekend staat als auditd. Het implementeert een manier om veiligheidsrelevante informatie op een systeem bij te houden: het gebruikt vooraf geconfigureerde regels om enorme hoeveelheden informatie te verzamelen over gebeurtenissen die op het systeem plaatsvinden, en registreert deze in een logbestand, waardoor een auditproef ontstaat.

Het kan informatie vastleggen zoals datum en tijd, type en resultaat van een gebeurtenis; gebruikers die de gebeurtenis hebben veroorzaakt, eventuele wijzigingen in bestanden/databases; gebruik van systeemauthenticatiemechanismen, zoals PAM, LDAP, SSH en andere.

Auditd registreert ook alle wijzigingen die zijn aangebracht in de auditconfiguratiebestanden of alle pogingen om toegang te krijgen tot auditlogbestanden, en alle pogingen om informatie in of uit het systeem te importeren of exporteren, plus een heleboel andere beveiligingsgerelateerde informatie.

Waarom is het Linux-auditsysteem belangrijk?

  1. Er zijn geen externe programma's of processen nodig om op een systeem te draaien, waardoor het zelfredzaam is.
  2. Het is zeer configureerbaar en stelt u daarom in staat om elke gewenste systeembewerking(en) te bekijken.
  3. Het helpt bij het detecteren of analyseren van potentiële compromissen in een systeem.
  4. Het kan werken als een onafhankelijk detectiesysteem.
  5. Het kan samenwerken met inbraakdetectiesystemen om inbraakdetectie mogelijk te maken.
  6. Het is een essentieel hulpmiddel voor het auditeren van forensisch onderzoek.

De Linux-auditsysteemcomponenten

Het auditsysteem bestaat uit twee kerncomponenten, namelijk:

  • gebruikersruimtetoepassingen en hulpprogramma's/tools, en
  • verwerking van systeemaanroepen aan de kernelzijde – deze accepteert systeemaanroepen van applicaties in de gebruikersruimte en geeft deze door drie soorten filters, namelijk: gebruiker, taak, exit< of uitsluiten.

Het belangrijkste onderdeel is de user-space auditdaemon (auditd) die informatie verzamelt op basis van vooraf geconfigureerde regels uit de kernel en gegevens genereert in een logbestand: de standaardlogboek is /var/log/audit/audit.log.

Bovendien is de audispd (audit dispatcher daemon) een gebeurtenismultiplexor die samenwerkt met auditd en gebeurtenissen naar andere programma's verzendt die realtime willen uitvoeren verwerking van gebeurtenissen.

Er zijn een aantal user-space tools voor het beheren en ophalen van informatie uit het auditsysteem:

  • auditctl – een hulpprogramma voor het controleren van het auditsysteem van de kernel.
  • ausearch – een hulpprogramma voor het doorzoeken van auditlogbestanden op specifieke gebeurtenissen.
  • aureport – een hulpprogramma voor het maken van rapporten van opgenomen gebeurtenissen.

Hoe audittool te installeren en configureren in RHEL/CentOS/Fedora

Zorg er eerst voor dat u als volgt verifieert dat de audittool op uw systeem is geïnstalleerd met behulp van de rpm-opdracht en het grep-hulpprogramma:

rpm -qa | grep audit

Als u de bovenstaande pakketten niet hebt geïnstalleerd, voert u deze opdracht uit als rootgebruiker om ze te installeren.

yum install audit

Controleer vervolgens of auditd is ingeschakeld en actief is, en voer de onderstaande systemctl-opdrachten uit op de terminal.

--------------- On CentOS/RHEL 7 --------------- 
systemctl is-enabled auditd
systemctl status auditd
systemctl start auditd   [Start]
systemctl enable auditd  [Enable]

--------------- On CentOS/RHEL 6 --------------- 
service auditd status
service auditd start     [Start]
chkconfig auditd on      [Enable]

Nu zullen we zien hoe u auditd kunt configureren met behulp van het hoofdconfiguratiebestand /etc/audit/auditd.conf. Met de parameters hier kunt u bepalen hoe de service draait, zoals het definiëren van de locatie van het logbestand, het maximale aantal logbestanden, het logformaat, hoe om te gaan met volledige schijven, logrotatie en nog veel meer opties.

vi /etc/audit/auditd.conf

Uit de onderstaande voorbeelduitvoer spreken de parameters voor zich.

Auditregels begrijpen

Zoals we eerder vermeldden, gebruikt auditd regels om specifieke informatie uit de kernel te verzamelen. Deze regels zijn feitelijk auditctl opties (zie man-pagina) die u vooraf kunt configureren in het bestand /etc/audit/rules.d/audit.rules (op CentOS 6, gebruik het bestand /etc/audit/audit.rules), zodat deze bij het opstarten worden geladen.

Er zijn drie soorten auditregels die u kunt definiëren:

  • Controleregels – deze maken wijziging van het gedrag van het auditsysteem en enkele configuraties ervan mogelijk.
  • Bestandssysteemregels (ook wel bestandsbewaking genoemd) – maken controle van de toegang tot een bepaald bestand of een map mogelijk.
  • Systeemaanroepregels – maken het loggen van systeemaanroepen door elk programma mogelijk.

Open nu het hoofdconfiguratiebestand om te bewerken:

vi /etc/audit/rules.d/audit.rules

Houd er rekening mee dat het eerste gedeelte van dit bestand controleregels moet bevatten. Voeg vervolgens uw auditregels (bestandscontroles en systeemaanroepregels) toe in het middelste gedeelte, en tot slot bevat het laatste gedeelte onveranderlijkheidsinstellingen die ook controleregels zijn.

Voorbeelden van gecontroleerde controleregels

-D		#removes all previous rules
-b  3074	#define buffer size
-f 4		#panic on failure 
-r 120		#create at most 120 audit messages per second

Voorbeelden van gecontroleerde bestandssysteemregels

U kunt bestandsbewakingen definiëren met behulp van deze syntaxis:

-w /path/to/file/or/directory -p permissions -k key_name

Waar de optie:

  • w – wordt gebruikt om een bestand of map op te geven die bewaakt moet worden.
  • p – rechten om te loggen, r – voor leestoegang, w – voor schrijftoegang, x – voor toegang uitvoeren en a – voor het wijzigen van het bestands- of director-attribuut.
  • -k – hiermee kunt u een optionele tekenreeks instellen om te identificeren welke regel (of een reeks regels) een specifiek logboekitem heeft gemaakt.

Deze regels maken auditing mogelijk om gebeurtenissen te bekijken die wijzigingen aanbrengen in deze kritieke systeembestanden.

-w /etc/passwd -p wa -k passwd_changes
-w /etc/group -p wa -k group_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes

Voorbeelden van gecontroleerde systeemoproepregels

Met het onderstaande formulier kunt u een systeemoproepregel instellen:

-a action,filter -S system_call -F field=value -k key_name

waar :

  • actie – heeft twee mogelijke waarden: altijd of nooit.
  • filter – specificeert dat het kernelregel-matchfilter (taak, exit, gebruiker en uitsluiten) wordt toegepast op de gebeurtenis.
  • systeemoproep – naam van de systeemoproep.
  • veld – specificeert aanvullende opties zoals architectuur, PID, GID enz. om de regel te wijzigen.

Hier zijn enkele regels die u kunt definiëren.

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S sethostname -S setdomainname -k system_locale

Voeg vervolgens als laatste de onveranderlijkheidsinstellingen toe aan het einde van het bestand, bijvoorbeeld:

-e 1	#enable auditing
-e 2	#make the configuration immutable -- reboot is required to change audit rules
Voorbeeld van een configuratiebestand voor gecontroleerde regels

Auditd-regels instellen met behulp van het auditctl-hulpprogramma

U kunt ook de opties naar auditd sturen terwijl deze actief is, met behulp van auditctl, zoals in de volgende voorbeelden. Deze opdrachten kunnen regels in het configuratiebestand overschrijven.

Om alle momenteel geladen auditregels weer te geven, geeft u de vlag -l door:

auditctl -l

Probeer vervolgens een paar regels toe te voegen:

auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /etc/group -p wa -k group_changes
auditctl -w /etc/sudoers -p wa -k sudoers_changes
auditctl -l

Inzicht in gecontroleerde logbestanden

Alle auditberichten worden standaard opgenomen in het bestand /var/log/audit/audit.log. Om het formaat van de loginvoer te begrijpen, laden we een regel en controleren we de loginvoer die wordt gegenereerd na een gebeurtenis die aan de regel voldoet.

Ervan uitgaande dat we een geheime map voor back-ups hebben, registreert deze auditregel alle pogingen om toegang te krijgen tot deze map of deze te wijzigen:

auditctl -w /backups/secret_files/ -p rwa -k secret_backup

Probeer nu met een ander systeemaccount naar de bovenstaande map te gaan en voer de opdracht ls uit:

cd /backups/secret_files/
ls

De logvermelding ziet er zo uit.

De bovenstaande gebeurtenis bestaat uit drie soorten auditrecords. De eerste is type=SYSCALL:

type=SYSCALL msg=audit(1505784331.849:444): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=8ad5c0 a2=90800 a3=0 items=1 ppid=2191 pid=2680 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts1 ses=3 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="secret_backup"

De tweede is type=CWD.

type=CWD msg=audit(1505784331.849:444):  cwd="/backups/secret_files"

En de laatste is type=PATH:

type=PATH msg=audit(1505784331.849:444): item=0 name="." inode=261635 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:default_t:s0 objtype=NORMAL

Een volledige lijst van alle gebeurtenisvelden (zoals msg, arch, ses enz.) en hun betekenis vindt u in de Audit System Reference.

Dat is het voor nu. In het volgende artikel zullen we bekijken hoe u ausearch kunt gebruiken om auditlogbestanden op te vragen: we leggen uit hoe u naar specifieke informatie in de auditlogboeken kunt zoeken. Als u vragen heeft, kunt u ons bereiken via het opmerkingengedeelte hieronder.