Opi Linux-järjestelmän tarkastus Auditd-työkalulla CentOS/RHEL: llä


Järjestelmän auditoinnilla tarkoitetaan yksinkertaisesti tietyn kohdennetun järjestelmän perusteellista analysointia: tarkastus koostuu järjestelmän sisältävien eri osien tarkastelusta ja kriittisestä arvioinnista (ja tarvittaessa testauksesta) eri kiinnostavilla alueilla.

Yksi RHEL/CentOS: n kriittisistä alijärjestelmistä Linux-auditointijärjestelmässä, joka tunnetaan yleisesti nimellä auditd. Se toteuttaa keinon seurata turvallisuuden kannalta merkityksellistä tietoa järjestelmässä: se käyttää ennalta määritettyjä sääntöjä kerätäkseen valtavia määriä tietoa järjestelmässä tapahtuvista tapahtumista ja tallentaa ne lokitiedostoon, mikä luo tarkastuskokeilun.

Se voi tallentaa tietoja, kuten päivämäärän ja kellonajan, tyypin ja tapahtuman tuloksen; käyttäjät, jotka aiheuttivat tapahtuman, kaikki tiedostoihin/tietokantoihin tehdyt muutokset; järjestelmän todennusmekanismien, kuten PAM, LDAP, SSH ja muut, käyttö.

Auditd rekisteröi myös kaikki tarkastuskokoonpanotiedostoihin tehdyt muutokset tai yritykset käyttää tarkastuslokitiedostoja, sekä pyrkimykset tuoda tai viedä tietoja järjestelmään tai sieltä sekä paljon muuta turvallisuuteen liittyvää tietoa.

  1. Se ei vaadi ulkoisia ohjelmia tai prosesseja toimimaan järjestelmässä, mikä tekee siitä itsenäisen.
  2. Se on erittäin konfiguroitavissa, joten sen avulla voit tarkastella kaikkia haluamiasi järjestelmän toimintoja.
  3. Se auttaa havaitsemaan tai analysoimaan järjestelmän mahdollisia kompromisseja.
  4. Se pystyy toimimaan itsenäisenä ilmaisujärjestelmänä.
  5. Se voi toimia tunkeutumisen havaitsemisjärjestelmien kanssa tunkeutumisen havaitsemisen mahdollistamiseksi.
  6. Se on tärkeä väline rikosteknisten tutkimusten tarkastuksessa.

Tarkastusjärjestelmässä on kaksi pääkomponenttia, nimittäin:

  • käyttäjä-avaruusohjelmat ja apuohjelmat/työkalut ja
  • ytimen puolella olevan järjestelmän puhelukäsittely - tämä hyväksyy järjestelmäpuhelut käyttäjä-avaruusohjelmista ja siirtää ne kolmen tyyppisten suodattimien läpi: käyttäjä, tehtävä, poistuminen tai poissulkeminen.

Tärkein osa on käyttäjä-tilan tarkastusdemon (auditd), joka kerää tietoja ytimestä ennalta määritettyjen sääntöjen perusteella ja tuottaa merkinnät lokitiedostoon: oletusloki on /var/log/audit/audit.log.

Lisäksi audispd (audit dispatcher daemon) on tapahtumakanava, joka on vuorovaikutuksessa auditd: n kanssa ja lähettää tapahtumia muille ohjelmille, jotka haluavat suorittaa reaaliaikaisen tapahtumakäsittelyn.

On olemassa useita käyttäjän välitystyökaluja tietojen hallintaan ja noutamiseen valvontajärjestelmästä:

  • auditctl - apuohjelma ytimen tarkastusjärjestelmän hallitsemiseksi.
  • ausearch - apuohjelma tarkastuslokitiedostojen etsimiseen tietyille tapahtumille.
  • aureport - apuohjelma tallennettujen tapahtumien raporttien luomiseen.

Kuinka tarkastustyökalu asennetaan ja määritetään RHEL/CentOS/Fedorassa

Varmista ensin, että tarkastustyökalu on asennettu järjestelmään grep-apuohjelman avulla seuraavasti:

# rpm -qa | grep audit

Jos yllä olevia paketteja ei ole asennettu, suorita tämä komento pääkäyttäjänä asentaaksesi ne.

# yum install audit

Tarkista seuraavaksi, onko auditd käytössä ja käynnissä, anna alla olevat systemctl-komennot päätelaitteessa.

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

Nyt näemme kuinka auditd määritetään pääasetustiedostolla /etc/audit/auditd.conf. Tässä olevien parametrien avulla voit hallita palvelun toimintaa, kuten lokitiedoston sijainnin, lokitiedostojen enimmäismäärän, lokin muodon, täydellisten levyjen käsittelyn, lokin kierron ja monia muita vaihtoehtoja.

# vi /etc/audit/auditd.conf

Alla olevasta näytelähdöstä parametrit ovat itsestään selviä.

Tarkastussääntöjen ymmärtäminen

Kuten aiemmin mainitsimme, auditd käyttää sääntöjä kerätäksesi tietoja ytimestä. Nämä säännöt ovat pohjimmiltaan auditctl-asetuksia (katso man-sivu), jotka voit määrittää valmiiksi sääntöihin tiedostoon /etc/audit/rules.d/audit.rules (käytä CentOS 6: ssa tiedostoa /etc/audit/audit.rules) , niin että ne ladataan käynnistyksen yhteydessä.

Voit määrittää kolmenlaisia tarkastussääntöjä:

  • Valvontasäännöt - nämä mahdollistavat auditointijärjestelmän käyttäytymisen ja muutamien sen kokoonpanojen muuttamisen.
  • Tiedostojärjestelmän säännöt (joita kutsutaan myös tiedostojen katseluksi) - mahdollistavat tietyn tiedoston tai hakemiston käytön tarkastamisen.
  • Järjestelmäkutsusäännöt - sallii minkä tahansa ohjelman soittamien järjestelmäkutsujen kirjaamisen.

Avaa nyt pääasetustiedosto muokkausta varten:

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

Huomaa, että tämän tiedoston ensimmäisen osan on sisällettävä ohjaussäännöt. Lisää sitten tarkastussäännöt (tiedostojen kellot ja järjestelmäkutsusäännöt) keskiosaan, ja viimeinen osa sisältää muuttumattomuusasetukset, jotka ovat myös ohjaussääntöjä.

-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

Voit määrittää tiedostokellot tällä syntaksilla:

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

Missä vaihtoehto:

  • w - käytetään määrittämään tiedosto tai hakemisto, jota valvotaan.
  • p - kirjattavat oikeudet, r - lukuoikeudet, w - kirjoitusoikeudet, x - käyttöoikeudet ja a - tiedoston tai ohjaimen määritteen muuttaminen.
  • -k - voit asettaa valinnaisen merkkijonon tunnistamaan, mikä sääntö (tai sääntöjoukko) loi tietyn lokimerkinnän.

Näiden sääntöjen avulla tilintarkastus voi seurata tapahtumia, jotka tekevät muutoksia näihin kriittisiin järjestelmätiedostoihin.

-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

Voit asettaa järjestelmäkutsusäännön alla olevalla lomakkeella:

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

missä:

  • toiminta - sillä on kaksi mahdollista arvoa: aina tai ei koskaan.
  • suodatin - määrittää ytimen sääntöjen vastaavan suodattimen (tehtävä, poistuminen, käyttäjä ja poissulkeminen), jota käytetään tapahtumaan.
  • järjestelmäkutsu - järjestelmän kutsunimi.
  • kenttä - määrittää lisäasetukset, kuten arkkitehtuurin, PID, GID jne. säännön muokkaamiseksi.

Tässä on joitain sääntöjä, jotka voit määrittää.

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

Lisää sitten lopuksi muuttumattomuusasetukset tiedoston loppuun, esimerkiksi:

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

Kuinka asettaa Auditd-säännöt käyttämällä auditctl-apuohjelmaa

Vaihtoehtoisesti voit lähettää vaihtoehdot auditd: lle sen ollessa käynnissä käyttämällä auditctl: tä kuten seuraavissa esimerkeissä. Nämä komennot voivat ohittaa määritystiedoston säännöt.

Jos haluat luetella kaikki ladatut tarkastussäännöt, välitä -l -lippu:

# auditctl -l

Yritä seuraavaksi lisätä muutama sääntö:

# 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

Kaikki tarkastusviestit tallennetaan oletusarvoisesti /var/log/audit/audit.log-tiedostoon. Lokimerkintämuodon ymmärtämiseksi lataamme säännön ja tarkistamme sääntöä vastaavan tapahtuman jälkeen luodun lokimerkinnän.

Olettaen, että meillä on salainen varmuuskopiohakemisto, tämä tarkastussääntö kirjaa kaikki yritykset käyttää tai muokata hakemistoa:

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

Yritä nyt käyttää toista järjestelmätiliä yllä olevaan hakemistoon ja suorita komento ls:

$ cd /backups/secret_files/
$ ls

Lokimerkintä näyttää tältä.

Edellä mainittu tapahtuma koostuu kolmen tyyppisistä tarkastustiedoista. Ensimmäinen on tyyppi = 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"

Toinen on tyyppi = CWD.

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

Ja viimeinen on tyyppi = 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

Löydät täydellisen luettelon kaikista tapahtumakentistä (kuten msg, arch, ses jne.) Ja niiden merkityksestä tarkastusjärjestelmän viitteestä.

Tässä kaikki tältä erää. Seuraavassa artikkelissa tarkastellaan, miten ausearchin avulla voidaan kysellä tarkastuslokitiedostoja: selitämme, miten etsitään tarkkoja tietoja tarkastuslokeista. Jos sinulla on kysyttävää, ota meihin yhteyttä alla olevan kommenttiosan kautta.