Jifunze Ukaguzi wa Mfumo wa Linux ukitumia Auditd Tool kwenye CentOS/RHEL


Ukaguzi wa mfumo unarejelea tu uchanganuzi wa kina wa mfumo mahususi unaolengwa: ukaguzi unafanywa na uchunguzi wa sehemu mbalimbali zinazojumuisha mfumo huo, pamoja na tathmini muhimu (na kupima ikihitajika) katika maeneo tofauti ya maslahi.

Mojawapo ya mifumo ndogo muhimu kwenye RHEL/CentOS mfumo wa ukaguzi wa Linux unaojulikana kama auditd. Inatumia njia ya kufuatilia taarifa muhimu za usalama kwenye mfumo: hutumia sheria zilizosanidiwa awali kukusanya kiasi kikubwa cha taarifa kuhusu matukio yanayotokea kwenye mfumo, na kuzirekodi katika faili ya kumbukumbu, hivyo basi kuunda jaribio la ukaguzi.

Inaweza kurekodi taarifa kama vile tarehe na saa, aina na matokeo ya tukio; watumiaji ambao walisababisha tukio, marekebisho yoyote yaliyofanywa kwa faili/hifadhidata; matumizi ya mbinu za uthibitishaji wa mfumo, kama vile PAM, LDAP, SSH na nyinginezo.

Auditd pia husajili mabadiliko yoyote yaliyofanywa kwa faili za usanidi wa ukaguzi au majaribio yoyote ya kufikia faili za kumbukumbu za ukaguzi, na juhudi zozote za kuingiza au kuhamisha habari ndani au kutoka kwa mfumo pamoja na habari nyingine nyingi zinazohusiana na usalama.

  1. Hahitaji programu au michakato yoyote ya nje ili kuendeshwa kwenye mfumo unaoufanya ujitegemee.
  2. Ina usanidi wa hali ya juu kwa hivyo hukuwezesha kuona utendakazi wowote wa mfumo unaotaka.
  3. Inasaidia katika kugundua au kuchanganua uwezekano wa maelewano ya mfumo.
  4. Ina uwezo wa kufanya kazi kama mfumo huru wa utambuzi.
  5. Inaweza kufanya kazi na Mifumo ya Kugundua Uingilizi ili kuwezesha utambuzi wa uvamizi.
  6. Ni zana muhimu ya kukagua uchunguzi wa kitaalamu.

Mfumo wa ukaguzi una vipengele viwili vya msingi, ambavyo ni:

  • programu za nafasi ya mtumiaji na huduma/zana, na
  • uchakataji wa simu wa upande wa kernel - hii inakubali simu za mfumo kutoka kwa programu-tumizi za nafasi ya mtumiaji na kuzipitisha kupitia aina tatu za vichujio, ambazo ni: mtumiaji, kazi, kuondoka au kutenga.

Sehemu muhimu zaidi ni daemon ya ukaguzi wa nafasi ya mtumiaji (ukaguzi) ambayo hukusanya taarifa kulingana na sheria zilizosanidiwa awali, kutoka kwenye kernel na kuzalisha maingizo katika faili ya kumbukumbu: logi chaguo-msingi ni /var/log/audit/audit.log.

Zaidi ya hayo, audispd (daemon ya dispatcher ya ukaguzi) ni nyongeza ya tukio ambayo huingiliana na ukaguzi na kutuma matukio kwa programu zingine zinazotaka kufanya uchakataji wa tukio la wakati halisi.

Kuna zana kadhaa za nafasi ya mtumiaji za kudhibiti na kurejesha taarifa kutoka kwa mfumo wa ukaguzi:

  • auditctl - shirika la kudhibiti mfumo wa ukaguzi wa kernel.
  • ausearch - matumizi ya kutafuta faili za kumbukumbu za ukaguzi kwa matukio maalum.
  • aureport - shirika la kuunda ripoti za matukio yaliyorekodiwa.

Jinsi ya Kufunga na Kusanidi Zana ya Ukaguzi katika RHEL/CentOS/Fedora

Kwanza hakikisha umethibitisha kuwa zana ya ukaguzi imesakinishwa kwenye mfumo wako kwa kutumia matumizi ya grep kama ifuatavyo:

# rpm -qa | grep audit

Ikiwa huna vifurushi hapo juu vilivyosakinishwa, endesha amri hii kama mtumiaji wa mizizi ili kusakinisha.

# yum install audit

Ifuatayo, angalia ikiwa auditd imewezeshwa na inaendeshwa, toa amri za systemctl hapa chini kwenye 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]

Sasa tutaona jinsi ya kusanidi ukaguzi kwa kutumia faili kuu ya usanidi /etc/audit/auditd.conf. Vigezo hapa vinakuwezesha kudhibiti jinsi huduma inavyoendesha, kama vile kufafanua eneo la faili ya kumbukumbu, idadi ya juu ya faili za logi, muundo wa logi, jinsi ya kukabiliana na diski kamili, mzunguko wa logi na chaguzi nyingi zaidi.

# vi /etc/audit/auditd.conf

Kutoka kwa pato la sampuli hapa chini, vigezo vinajieleza.

Kuelewa Sheria za Ukaguzi

Kama tulivyosema hapo awali, auditd hutumia sheria kukusanya habari maalum kutoka kwa kernel. Sheria hizi kimsingi ni chaguzi za auditctl (tazama ukurasa wa mtu) ambazo unaweza kusanidi sheria mapema katika faili ya /etc/audit/rules.d/audit.rules (Kwenye CentOS 6, tumia /etc/audit/audit.rules faili) , ili zipakiwe wakati wa kuanza.

Kuna aina tatu za sheria za ukaguzi unazoweza kufafanua:

  • Sheria za udhibiti - hizi huwezesha urekebishaji wa tabia ya mfumo wa ukaguzi na usanidi wake chache.
  • Sheria za mfumo wa faili (pia hujulikana kama saa za faili) - wezesha ukaguzi wa ufikiaji wa faili fulani au saraka.
  • Sheria za simu za mfumo - huruhusu kuingia kwa simu za mfumo zinazopigwa na programu yoyote.

Sasa fungua faili kuu ya usanidi kwa uhariri:

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

Kumbuka kwamba sehemu ya kwanza ya faili hii lazima iwe na sheria za udhibiti. Kisha ongeza sheria zako za ukaguzi (saa za faili na sheria za simu za mfumo) katika sehemu ya kati, na hatimaye sehemu ya mwisho ina mipangilio ya kutoweza kubadilika ambayo pia ni sheria za udhibiti.

-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

Unaweza kufafanua saa za faili kwa kutumia syntax hii:

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

Ambapo chaguo:

  • w - inatumika kubainisha faili au saraka ya kutazama.
  • p - ruhusa za kurekodi, r - kwa ufikiaji wa kusoma, w - ufikiaji wa maandishi, x - kwa utekelezaji wa ufikiaji na - kwa kubadilisha faili au sifa ya mkurugenzi.
  • -k - hukuruhusu kuweka mfuatano wa hiari wa kutambua ni sheria ipi (au seti ya sheria) iliyounda ingizo mahususi la kumbukumbu.

Sheria hizi huruhusu ukaguzi kutazama matukio yanayofanya mabadiliko kwenye faili hizi muhimu za mfumo.

-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

Unaweza kuweka sheria ya simu ya mfumo kwa kutumia fomu iliyo hapa chini:

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

wapi:

  • kitendo - ina thamani mbili zinazowezekana: daima au kamwe.
  • chujio - hubainisha kichujio cha kulinganisha kanuni za kernel (kazi, kuondoka, mtumiaji na kutenga) kinatumika kwa tukio.
  • simu ya mfumo - jina la simu ya mfumo.
  • uga - hubainisha chaguo za ziada kama vile usanifu, PID, GID n.k ili kurekebisha sheria.

Hapa kuna baadhi ya sheria unazoweza kufafanua.

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

Kisha mwishowe ongeza mipangilio ya kutoweza kubadilika mwishoni mwa faili, kwa mfano:

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

Jinsi ya Kuweka Sheria za Ukaguzi kwa kutumia Utility ya auditctl

Vinginevyo, tuma chaguo kwa ukaguzi wakati inaendeshwa, kwa kutumia auditctl kama katika mifano ifuatayo. Amri hizi zinaweza kubatilisha sheria katika faili ya usanidi.

Ili kuorodhesha sheria zote za ukaguzi zilizopakiwa kwa sasa, pitisha alama ya -l:

# auditctl -l

Ifuatayo, jaribu kuongeza sheria chache:

# 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

Ujumbe wote wa ukaguzi hurekodiwa katika /var/log/audit/audit.log faili kwa chaguo-msingi. Ili kuelewa umbizo la ingizo la kumbukumbu, tutapakia sheria na kuangalia ingizo la kumbukumbu lililotolewa baada ya tukio linalolingana na sheria hiyo.

Ikizingatiwa kuwa tuna saraka ya siri ya chelezo, sheria hii ya ukaguzi itaweka majaribio yoyote ya kufikia au kurekebisha saraka hii:

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

Sasa, kwa kutumia akaunti nyingine ya mfumo, jaribu kuingia kwenye saraka hapo juu na uendeshe ls amri:

$ cd /backups/secret_files/
$ ls

Ingizo la logi litaonekana kama hivyo.

Tukio lililo hapo juu linajumuisha aina tatu za kumbukumbu za ukaguzi. Ya kwanza ni aina=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"

Ya pili ni aina=CWD.

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

Na ya mwisho ni 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

Unaweza kupata orodha kamili ya sehemu zote za tukio (kama vile msg, arch, ses n.k..) na maana zake katika Rejeleo la Mfumo wa Ukaguzi.

Hayo ni yote kwa sasa. Katika makala inayofuata, tutaangalia jinsi ya kutumia ausearch kuuliza faili za logi za ukaguzi: tutaelezea jinsi ya kutafuta taarifa maalum kutoka kwa kumbukumbu za ukaguzi. Ikiwa una maswali yoyote, tafadhali wasiliana nasi kupitia sehemu ya maoni hapa chini.