Lær Linux System Auditing med Auditd Tool på CentOS/RHEL


Systemrevision henviser simpelthen til dybdegående analyse af et specifikt målrettet system: En revision består af en undersøgelse af de forskellige dele, der omfatter dette system, med kritisk vurdering (og test om nødvendigt) inden for forskellige områder af interesse.

Et af de kritiske undersystemer på RHEL/CentOS Linux-auditsystemet, almindeligvis kendt som auditd. Det implementerer et middel til at spore sikkerhedsrelevant information på et system: det bruger forudkonfigurerede regler til at indsamle store mængder information om begivenheder, der sker på systemet, og registrerer dem i en logfil og derved skabe et revisionsforsøg.

Det kan registrere oplysninger såsom dato og klokkeslæt, type og resultat af en begivenhed; brugere, der forårsagede begivenheden, eventuelle ændringer foretaget på filer/databaser anvendelser af systemgodkendelsesmekanismer, såsom PAM, LDAP, SSH og andre.

Auditd registrerer også ændringer foretaget i revisionskonfigurationsfilerne eller ethvert forsøg på at få adgang til revisionslogfiler og enhver indsats for at importere eller eksportere information til eller fra systemet plus en masse andre sikkerhedsrelaterede oplysninger.

  1. Det kræver ingen eksterne programmer eller processer for at køre på et system, der gør det selvstændigt.
  2. Det er meget konfigurerbart, så det giver dig mulighed for at se de systemhandlinger, du ønsker.
  3. Det hjælper med at opdage eller analysere potentielle kompromiser i et system.
  4. Det er i stand til at fungere som et uafhængigt detektionssystem.
  5. Det kan arbejde med indtrængningsregistreringssystemer for at muliggøre detektion af indtrængen.
  6. Det er et vigtigt redskab til revision af retsmedicinske undersøgelser.

Revisionssystemet har to centrale komponenter, nemlig:

  • applikationer og værktøjer/værktøjer til brugerrum og
  • behandling af systemopkald på kernesiden - dette accepterer systemopkald fra applikationer til brugerrum og sender dem gennem tre typer filtre, nemlig: bruger, opgave, afslut eller ekskluder.

Den vigtigste del er brugerdæmpningsrevisionsdemon (auditd), som samler information baseret på forudkonfigurerede regler fra kernen og genererer poster i en logfil: standardloggen er /var/log/audit/audit.log.

Derudover er audispd (audit dispatcher-dæmon) en hændelsesmultiplexor, der interagerer med auditd og sender begivenheder til andre programmer, der ønsker at udføre hændelsesbehandling i realtid.

Der findes et antal værktøjer til brugerrum til styring og hentning af oplysninger fra revisionssystemet:

  • auditctl - et hjælpeprogram til styring af kernens auditsystem.
  • ausearch - et værktøj til søgning i auditlogfiler efter specifikke begivenheder.
  • aureport - et værktøj til oprettelse af rapporter om registrerede begivenheder.

Sådan installeres og konfigureres revisionsværktøj i RHEL/CentOS/Fedora

Sørg først for at kontrollere, at revisionsværktøjet er installeret på dit system ved hjælp af grep-hjælpeprogrammet som følger:

# rpm -qa | grep audit

Hvis du ikke har ovenstående pakker installeret, skal du køre denne kommando som rodbruger for at installere dem.

# yum install audit

Tjek derefter, om auditd er aktiveret og kører, udsted systemctl-kommandoerne nedenfor på terminalen.

--------------- 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 vil vi se, hvordan du konfigurerer auditd ved hjælp af hovedkonfigurationsfilen /etc/audit/auditd.conf. Parametrene her giver dig mulighed for at kontrollere, hvordan tjenesten kører, såsom at definere placeringen af logfilen, maksimalt antal logfiler, logformat, hvordan man håndterer fulde diske, logrotation og mange flere muligheder.

# vi /etc/audit/auditd.conf

Fra nedenstående prøveoutput er parametrene selvforklarende.

Forståelse af revisionsregler

Som vi nævnte tidligere, bruger auditd regler til at indsamle specifik information fra kernen. Disse regler er grundlæggende auditctl-muligheder (se man-side), som du kan forudkonfigurere regler i /etc/audit/rules.d/audit.rules-filen (På CentOS 6 skal du bruge filen /etc/audit/audit.rules) , så de indlæses ved opstart.

Der er tre slags revisionsregler, du kan definere:

  • Kontrolregler - disse muliggør ændringer af revisionssystemets adfærd og nogle få af dets konfigurationer.
  • Filsystemregler (også kaldet filure) - muliggør revision af adgang til en bestemt fil eller et bibliotek.
  • Systemopkaldsregler - tillader logning af systemopkald foretaget af ethvert program.

Åbn nu hovedkonfigurationsfilen til redigering:

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

Bemærk, at det første afsnit i denne fil skal indeholde kontrolregler. Tilføj derefter dine revisionsregler (filure og systemopkaldsregler) i den midterste sektion, og til sidst indeholder den sidste sektion immutabilitetsindstillinger, som også er kontrolregler.

-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

Du kan definere filure ved hjælp af denne syntaks:

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

Hvor muligheden:

  • w - bruges til at specificere en fil eller mappe, der skal overvåges.
  • p - tilladelser, der skal logges, r - for læseadgang, w - for skriveadgang, x - for udførelse af adgang og a - for ændring af fil- eller instruktørattribut.
  • -k - giver dig mulighed for at indstille en valgfri streng til at identificere, hvilken regel (eller et sæt regler), der oprettede en bestemt logpost.

Disse regler tillader revision for at se begivenheder, der foretager ændringer i disse kritiske systemfiler.

-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

Du kan indstille en systemopkaldsregel ved hjælp af nedenstående formular:

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

hvor:

  • handling - har to mulige værdier: altid eller aldrig.
  • filter - angiver kerneregler-matchende filter (opgave, afslutning, bruger og ekskludering) anvendes til begivenheden.
  • systemopkald - systemopkaldsnavn.
  • felt - angiver yderligere indstillinger såsom arkitektur, PID, GID osv. for at ændre regel.

Her er nogle regler, du kan definere.

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

Derefter tilføj endelig indstillingerne for uforanderlighed i slutningen af filen, for eksempel:

-e 1	#enable auditing
-e 2	#make the configuration immutable -- reboot is required to change audit rules

Sådan indstilles Auditd-regler ved hjælp af auditctl Utility

Alternativt kan du sende indstillingerne til auditd, mens den kører, ved hjælp af auditctl som i de følgende eksempler. Disse kommandoer kan tilsidesætte regler i konfigurationsfilen.

For at vise alle aktuelt indlæste revisionsregler skal du sende -l -flaget:

# auditctl -l

Prøv derefter at tilføje et par regler:

# 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

Alle revisionsmeddelelser er som standard registreret i /var/log/audit/audit.log-filen. For at forstå formatet for logpost skal vi indlæse en regel og kontrollere den logpost, der er genereret efter en begivenhed, der matcher reglen.

Forudsat at vi har en hemmelig sikkerhedskopimappe, logger denne revisionsregel ethvert forsøg på at få adgang til eller ændre denne mappe:

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

Brug nu en anden systemkonto til at prøve at flytte til mappen ovenfor og køre kommandoen ls:

$ cd /backups/secret_files/
$ ls

Logposten vil se sådan ud.

Ovenstående begivenhed består af tre typer revisionsoptegnelser. Den første er 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"

Den anden er type = CWD.

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

Og den sidste er 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

Du kan finde en komplet liste over alle begivenhedsfelterne (såsom msg, arch, ses osv.) Og deres betydning i Audit System Reference.

Det er alt for nu. I den næste artikel vil vi se på, hvordan man bruger ausearch til at forespørge på logfilfiler: Vi forklarer, hvordan man søger efter specifik information fra auditlogfiler. Hvis du har spørgsmål, bedes du kontakte os via kommentarfeltet nedenfor.