Naučite se revizije sistema Linux z orodjem Auditd na CentOS/RHEL


Revizija sistema se preprosto nanaša na poglobljeno analizo določenega ciljnega sistema: revizijo sestavlja pregled različnih delov, ki sestavljajo ta sistem, s kritično oceno (in preskusom, če je potrebno) na različnih področjih, ki nas zanimajo.

Eden od kritičnih podsistemov v sistemu RHEL/CentOS za revizijski sistem Linux, splošno znan kot auditd. Izvaja način za sledenje varnostno pomembnim informacijam v sistemu: uporablja vnaprej konfigurirana pravila za zbiranje ogromne količine informacij o dogodkih, ki se dogajajo v sistemu, in jih beleži v datoteko dnevnika ter tako ustvari revizijsko preskušanje.

Zabeleži lahko podatke, kot so datum in čas, vrsta in rezultat dogodka; uporabniki, ki so povzročili dogodek, kakršne koli spremembe datotek/baz podatkov; uporabe sistemskih mehanizmov za preverjanje pristnosti, kot so PAM, LDAP, SSH in drugi.

Auditd prav tako beleži vse spremembe konfiguracijskih datotek revizije ali kakršne koli poskuse dostopa do datotek dnevnika revizije ter vsa prizadevanja za uvoz ali izvoz informacij v sistem ali iz njega ter veliko drugih informacij, povezanih z varnostjo.

  1. Za delovanje v sistemu ni potrebno nobenih zunanjih programov ali procesov, zaradi česar je samozavesten.
  2. Je zelo prilagodljiv, zato vam omogoča ogled vseh sistemskih operacij, ki jih želite.
  3. Pomaga pri odkrivanju ali analiziranju morebitnih kompromisov sistema.
  4. Sposoben je delovati kot neodvisen sistem za zaznavanje.
  5. Lahko deluje s sistemi za odkrivanje vdorov, da omogoči zaznavanje vdorov.
  6. Je bistveno orodje za revizijo forenzičnih preiskav.

Revizijski sistem ima dve bistveni komponenti, in sicer:

  • aplikacije in pripomočki/orodja v uporabniškem prostoru ter
  • obdelava sistemskih klicev na strani jedra-ta sprejema sistemske klice iz aplikacij v uporabniškem prostoru in jih posreduje skozi tri vrste filtrov, in sicer: uporabniški, opravilo, izhod ali izključitev.

Najpomembnejši del je demon nadzornega prostora uporabniškega prostora (auditd), ki iz jedra zbira informacije na podlagi vnaprej konfiguriranih pravil in generira vnose v dnevniški datoteki: privzeti dnevnik je /var/log/audit/audit.log.

Poleg tega je audispd (demon dispečerja revizije) multipleksor dogodkov, ki sodeluje z revizijo in pošilja dogodke drugim programom, ki želijo izvajati obdelavo dogodkov v realnem času.

Za upravljanje in pridobivanje informacij iz revizijskega sistema obstaja več orodij uporabniškega prostora:

  • auditctl - pripomoček za nadzor sistema jedra za nadzor.
  • ausearch - pripomoček za iskanje datotek dnevnika revizije za določene dogodke.
  • aureport - pripomoček za ustvarjanje poročil o posnetih dogodkih.

Kako namestiti in konfigurirati orodje za revizijo v RHEL/CentOS/Fedora

Najprej preverite, ali je orodje za nadzor nameščeno v vašem sistemu s pomočjo pripomočka grep, kot sledi:

# rpm -qa | grep audit

Če zgornjih paketov nimate nameščenih, zaženite ta ukaz kot korenski uporabnik, da jih namestite.

# yum install audit

Nato preverite, ali je auditd omogočen in se izvaja, na terminalu izdajte spodnje ukaze systemctl.

--------------- 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]

Zdaj bomo videli, kako nastaviti configd z glavno konfiguracijsko datoteko /etc/audit/auditd.conf. Tu vam parametri omogočajo nadzor nad delovanjem storitve, na primer določanje lokacije datoteke dnevnika, največje število datotek dnevnika, obliko zapisa dnevnika, kako ravnati s polnimi diski, vrtenje dnevnika in številne druge možnosti.

# vi /etc/audit/auditd.conf

Iz spodnjega vzorčnega izhoda so parametri samoumevni.

Razumevanje revizijskih pravil

Kot smo že omenili, auditd uporablja pravila za zbiranje določenih informacij iz jedra. Ta pravila so v osnovi revizijske možnosti (glejte stran s priročnikom), ki jih lahko vnaprej konfigurirate v datoteki /etc/audit/rules.d/audit.rules (v sistemu CentOS 6 uporabite datoteko /etc/audit/audit.rules) , tako da se naložijo ob zagonu.

Določite lahko tri vrste revizijskih pravil:

  • Pravila nadzora - ta omogočajo spreminjanje vedenja revizijskega sistema in nekaj njegovih konfiguracij.
  • Pravila datotečnega sistema (imenovana tudi ure ure) - omogočajo revizijo dostopa do določene datoteke ali imenika.
  • Pravila sistemskih klicev - dovoljuje beleženje sistemskih klicev katerega koli programa.

Zdaj odprite glavno konfiguracijsko datoteko za urejanje:

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

Upoštevajte, da mora prvi odsek te datoteke vsebovati nadzorna pravila. Nato v srednji del dodajte svoja revizijska pravila (ure datotek in pravila sistemskih klicev), zadnji del pa vsebuje nastavitve nespremenljivosti, ki so tudi pravila nadzora.

-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

Ure datotek lahko določite s to sintakso:

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

Kje je možnost:

  • w - uporablja se za določitev datoteke ali imenika, ki ga želite nadzorovati.
  • p - dovoljenja za beleženje, r - za dostop do branja, w - za dostop do pisanja, x - za dostop do izvrševanja in a - za spremembo atributa datoteke ali direktorja.
  • -k - omogoča nastavitev neobveznega niza za določitev, katero pravilo (ali niz pravil) je ustvarilo določen vnos v dnevnik.

Ta pravila omogočajo revizijo, da spremlja dogodke, ki spreminjajo te ključne sistemske datoteke.

-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

Sistemski klicni pravilnik lahko nastavite s spodnjim obrazcem:

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

kje:

  • dejanje - ima dve možni vrednosti: vedno ali nikoli.
  • filter-določa, da se za dogodek uporablja filter za ujemanje pravil jedra (opravilo, izhod, uporabnik in izključi).
  • sistemski klic - ime sistemskega klica.
  • polje - določa dodatne možnosti, kot so arhitektura, PID, GID itd. za spreminjanje pravila.

Tu je nekaj pravil, ki jih lahko določite.

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

Nato na koncu datoteke dodajte nastavitve nespremenljivosti, na primer:

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

Kako nastaviti pravila Auditd z uporabo pripomočka auditctl

Druga možnost je, da med revizijo pošljete možnosti revizije z uporabo auditctl, kot je v naslednjih primerih. Ti ukazi lahko preglasijo pravila v konfiguracijski datoteki.

Če želite našteti vsa trenutno naložena pravila revizije, podajte zastavico -l :

# auditctl -l

Nato poskusite dodati nekaj pravil:

# 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

Vsa revizijska sporočila so privzeto zabeležena v datoteki /var/log/audit/audit.log. Za razumevanje oblike vnosa v dnevnik bomo naložili pravilo in preverili vnos v dnevnik, ki je nastal po dogodku, ki se ujema s pravilom.

Ob predpostavki, da imamo skrivni imenik varnostnih kopij, bo to pravilo revizije beležilo vse poskuse dostopa do tega imenika ali spreminjanja:

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

Zdaj se z drugim sistemskim računom poskusite premakniti v zgornji imenik in zagnati ukaz ls:

$ cd /backups/secret_files/
$ ls

Vnos v dnevnik bo videti tako.

Zgornji dogodek je sestavljen iz treh vrst revizijskih zapisov. Prvi je 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"

Drugi je tip = CWD.

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

In zadnji je 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

Celoten seznam vseh polj dogodkov (na primer sporočilo, lok, ses itd.) In njihov pomen najdete v Referenčnem sistemu revizijskega sistema.

To je vse za zdaj. V naslednjem članku bomo preučili, kako uporabiti ausearch za poizvedovanje po datotekah dnevnika revizije: razložili bomo, kako iskati določene informacije iz revizijskih dnevnikov. Če imate kakršna koli vprašanja, nas kontaktirajte v spodnjem oddelku za komentarje.