ຮຽນຮູ້ລະບົບການກວດສອບລະບົບ Linux ດ້ວຍເຄື່ອງມືກວດສອບໃນ CentOS/RHEL


ການກວດສອບລະບົບພຽງແຕ່ ໝາຍ ເຖິງການວິເຄາະຢ່າງເລິກເຊິ່ງກ່ຽວກັບລະບົບເປົ້າ ໝາຍ ສະເພາະ: ການກວດສອບແມ່ນປະກອບດ້ວຍການກວດສອບພາກສ່ວນຕ່າງໆທີ່ປະກອບດ້ວຍລະບົບນັ້ນ, ໂດຍມີການປະເມີນຜົນທີ່ ສຳ ຄັນ (ແລະການທົດສອບຖ້າ ຈຳ ເປັນ) ໃນຂົງເຂດທີ່ແຕກຕ່າງກັນ.

ໜຶ່ງ ໃນລະບົບຍ່ອຍທີ່ ສຳ ຄັນໃນລະບົບ RHEL/CentOS ລະບົບກວດສອບ Linux ທີ່ຮູ້ກັນທົ່ວໄປວ່າເປັນຜູ້ກວດສອບ. ມັນປະຕິບັດວິທີການເພື່ອຕິດຕາມຂໍ້ມູນທີ່ກ່ຽວຂ້ອງກັບຄວາມປອດໄພໃນລະບົບ: ມັນໃຊ້ກົດລະບຽບທີ່ໄດ້ ກຳ ນົດໄວ້ລ່ວງ ໜ້າ ເພື່ອເກັບ ກຳ ຂໍ້ມູນ ຈຳ ນວນຫຼວງຫຼາຍກ່ຽວກັບເຫດການທີ່ ກຳ ລັງເກີດຂື້ນໃນລະບົບ, ແລະບັນທຶກມັນໄວ້ໃນແຟ້ມບັນທຶກ, ດັ່ງນັ້ນຈຶ່ງສ້າງການທົດລອງກວດສອບ.

ມັນສາມາດບັນທຶກຂໍ້ມູນເຊັ່ນວັນແລະເວລາ, ປະເພດແລະຜົນຂອງເຫດການ; ຜູ້ໃຊ້ທີ່ກໍ່ໃຫ້ເກີດເຫດການ, ການດັດແປງໃດໆທີ່ເຮັດຕໍ່ແຟ້ມ/ຖານຂໍ້ມູນ; ການ ນຳ ໃຊ້ກົນໄກກວດສອບລະບົບ, ເຊັ່ນ PAM, LDAP, SSH, ແລະອື່ນໆ.

Auditd ຍັງລົງທະບຽນການປ່ຽນແປງໃດໆທີ່ເຮັດໃນເອກະສານການຕັ້ງຄ່າການກວດສອບຫລືຄວາມພະຍາຍາມໃດໆທີ່ຈະເຂົ້າເຖິງເອກະສານບັນທຶກການກວດສອບ, ແລະຄວາມພະຍາຍາມໃດໆທີ່ຈະ ນຳ ເຂົ້າຫຼືສົ່ງອອກຂໍ້ມູນເຂົ້າຫຼືອອກຈາກລະບົບບວກກັບຂໍ້ມູນອື່ນໆທີ່ກ່ຽວຂ້ອງກັບຄວາມປອດໄພ.

<

  • ມັນບໍ່ໄດ້ຮຽກຮ້ອງໃຫ້ມີໂປແກຼມຫຼືຂະບວນການພາຍນອກໃດໆ ດຳ ເນີນງານໃນລະບົບທີ່ເຮັດໃຫ້ມັນເພິ່ງຕົນເອງ.
  • ມັນມີການຕັ້ງຄ່າສູງດັ່ງນັ້ນຈຶ່ງຊ່ວຍໃຫ້ທ່ານສາມາດເບິ່ງການເຮັດວຽກຂອງລະບົບໃດກໍ່ຕາມທີ່ທ່ານຕ້ອງການ.
  • ມັນຊ່ວຍໃນການຊອກຄົ້ນຫາຫຼືວິເຄາະການປະນີປະນອມຂອງລະບົບ.
  • ມັນມີຄວາມສາມາດເຮັດວຽກເປັນລະບົບການຊອກຄົ້ນຫາແບບອິດສະຫຼະ.
  • ມັນສາມາດເຮັດວຽກຮ່ວມກັບລະບົບການຊອກຄົ້ນຫາການບຸກລຸກເພື່ອໃຫ້ສາມາດກວດພົບການບຸກລຸກ.
  • ມັນແມ່ນເຄື່ອງມືທີ່ ສຳ ຄັນ ສຳ ລັບການກວດສອບການສືບສວນດ້ານການວິນິດໄສ.
  • ລະບົບການກວດສອບມີສອງສ່ວນປະກອບຫຼັກຄື:

    • ການ ນຳ ໃຊ້ພື້ນທີ່ຂອງຜູ້ໃຊ້ແລະເຄື່ອງໃຊ້/ເຄື່ອງມື, ແລະ
    • ການປະມວນຜົນການໂທລະບົບ kernel-side ລະບົບ - ນີ້ຍອມຮັບການໂທລະບົບຈາກການ ນຳ ໃຊ້ພື້ນທີ່ຂອງຜູ້ໃຊ້ແລະສົ່ງຜ່ານສາມຕົວກອງຄື: ຜູ້ໃຊ້, ວຽກ, ອອກ, ຫລືຍົກເວັ້ນ.

    ສ່ວນທີ່ ສຳ ຄັນທີ່ສຸດແມ່ນ daemon-space audit daemon (auditd) ເຊິ່ງລວບລວມຂໍ້ມູນໂດຍອີງໃສ່ກົດລະບຽບທີ່ໄດ້ ກຳ ນົດໄວ້ກ່ອນ, ຈາກແກ່ນແລະສ້າງລາຍການເຂົ້າໃນແຟ້ມ log: log default ແມ່ນ /var/log/audit/audit.log.

    ນອກຈາກນັ້ນ, audispd (audit dispatcher daemon) ແມ່ນຕົວເຊື່ອມຕໍ່ເຫດການທີ່ມີການໂຕ້ຕອບກັບຜູ້ກວດສອບແລະສົ່ງເຫດການໄປຍັງໂປແກຼມອື່ນທີ່ຕ້ອງການ ດຳ ເນີນການປະມວນຜົນເຫດການໃນເວລາຈິງ.

    ມັນມີເຄື່ອງມືໃນການ ນຳ ໃຊ້ພື້ນທີ່ ສຳ ລັບການຄຸ້ມຄອງແລະດຶງເອົາຂໍ້ມູນຈາກລະບົບການກວດສອບ:

    • auditctl - ປະໂຫຍດ ສຳ ລັບການຄວບຄຸມລະບົບການກວດສອບຂອງ kernel.
    • ການຄົ້ນຫາ - ຜົນປະໂຫຍດ ສຳ ລັບການຊອກຫາເອກະສານບັນທຶກການກວດສອບ ສຳ ລັບເຫດການສະເພາະ.
    • aureport - ເປັນປະໂຫຍດໃນການສ້າງລາຍງານຂອງເຫດການທີ່ບັນທຶກໄວ້.

    ວິທີການຕິດຕັ້ງແລະຕັ້ງຄ່າເຄື່ອງມືກວດສອບໃນ RHEL/CentOS/Fedora

    ກ່ອນອື່ນ ໝົດ ຕ້ອງກວດສອບວ່າເຄື່ອງມືກວດສອບຖືກຕິດຕັ້ງຢູ່ໃນລະບົບຂອງທ່ານໂດຍໃຊ້ປະໂຫຍດ grep ດັ່ງຕໍ່ໄປນີ້:

    # rpm -qa | grep audit
    

    ຖ້າທ່ານບໍ່ໄດ້ຕິດຕັ້ງແພກເກດຂ້າງເທິງ, ໃຫ້ ດຳ ເນີນການ ຄຳ ສັ່ງນີ້ເປັນຜູ້ ນຳ ໃຊ້ຮາກເພື່ອຕິດຕັ້ງພວກມັນ.

    # yum install audit
    

    ຕໍ່ໄປ, ກວດເບິ່ງວ່າ auditd ຖືກເປີດໃຊ້ງານແລະເຮັດວຽກຢູ່ຫຼືບໍ່, ໃຫ້ອອກລະບົບ ຄຳ ສັ່ງ 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]
    

    ຕອນນີ້ພວກເຮົາຈະເຫັນວິທີການຕັ້ງຄ່າການກວດສອບໂດຍໃຊ້ເອກະສານການຕັ້ງຄ່າຕົ້ນຕໍ /etc/audit/auditd.conf. ຕົວກໍານົດການຢູ່ທີ່ນີ້ຊ່ວຍໃຫ້ທ່ານສາມາດຄວບຄຸມວິທີການບໍລິການເຮັດວຽກໄດ້ເຊັ່ນການ ກຳ ນົດສະຖານທີ່ຂອງເອກະສານບັນທຶກ, ຈຳ ນວນໄຟລ໌ບັນທຶກສູງສຸດ, ຮູບແບບການບັນທຶກ, ວິທີການຈັດການກັບແຜ່ນເຕັມ, ການ ໝູນ ວຽນ log ແລະຫຼາຍທາງເລືອກ.

    # vi /etc/audit/auditd.conf
    

    ຈາກຜົນໄດ້ຮັບຕົວຢ່າງຂ້າງລຸ່ມ, ຕົວກໍານົດການແມ່ນຄໍາອະທິບາຍດ້ວຍຕົນເອງ.

    ເຂົ້າໃຈກົດລະບຽບການກວດສອບ

    ດັ່ງທີ່ພວກເຮົາໄດ້ກ່າວມາກ່ອນ ໜ້າ ນີ້, ການກວດສອບແມ່ນໃຊ້ກົດລະບຽບເພື່ອເກັບ ກຳ ຂໍ້ມູນສະເພາະຈາກແກ່ນ. ກົດລະບຽບເຫຼົ່ານີ້ແມ່ນພື້ນຖານທາງເລືອກໃນການກວດສອບ auditctl (ເບິ່ງ ໜ້າ man) ທີ່ທ່ານສາມາດຕັ້ງຄ່າກົດລະບຽບລ່ວງ ໜ້າ ໃນເອກະສານ /etc/audit/rules.d/audit.rules (ໃນ CentOS 6, ໃຊ້ເອກະສານ /etc/audit/audit.rules) , ເພື່ອໃຫ້ພວກເຂົາຖືກໂຫລດໃນເວລາເລີ່ມຕົ້ນ.

    ມີກົດລະບຽບການກວດສອບສາມປະເພດທີ່ທ່ານສາມາດ ກຳ ນົດ:

    • ກົດລະບຽບຄວບຄຸມ - ສິ່ງເຫຼົ່ານີ້ຊ່ວຍໃຫ້ມີການດັດແປງພຶດຕິ ກຳ ຂອງລະບົບການກວດສອບແລະການຕັ້ງຄ່າເລັກນ້ອຍ.
    • ກົດລະບຽບຂອງລະບົບແຟ້ມເອກະສານ (ຍັງເອີ້ນວ່າໂມງເບິ່ງເອກະສານ) - ສາມາດກວດສອບການເຂົ້າເຖິງເອກະສານໃດ ໜຶ່ງ ຫຼືໄດເລກະທໍລີໃດ ໜຶ່ງ.
    • ລະບົບການໂທລະບົບ - ອະນຸຍາດການຕັດໄມ້ຂອງການໂທລະບົບທີ່ເຮັດໂດຍໂປແກຼມໃດ ໜຶ່ງ.

    ຕອນນີ້ເປີດເອກະສານການຕັ້ງຄ່າຫລັກ ສຳ ລັບການແກ້ໄຂ:

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

    ໃຫ້ສັງເກດວ່າສ່ວນ ທຳ ອິດຂອງເອກະສານນີ້ຕ້ອງມີກົດລະບຽບຄວບຄຸມ. ຫຼັງຈາກນັ້ນຕື່ມກົດລະບຽບການກວດສອບຂອງທ່ານ (ເບິ່ງເອກະສານແລະກົດລະບຽບການໂທລະບົບ) ໃນພາກກາງ, ແລະສຸດທ້າຍພາກສຸດທ້າຍມີການຕັ້ງຄ່າທີ່ບໍ່ສາມາດຄວບຄຸມໄດ້ເຊິ່ງເປັນກົດລະບຽບຄວບຄຸມເຊັ່ນກັນ.

    -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
    

    ທ່ານສາມາດ ກຳ ນົດໂມງແຟ້ມໂດຍໃຊ້ syntax ນີ້:

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

    ບ່ອນທີ່ທາງເລືອກ:

    • w - ແມ່ນໃຊ້ເພື່ອ ກຳ ນົດເອກະສານຫລືໄດເລກະທໍລີເພື່ອເບິ່ງແຍງ.
    • p - ການອະນຸຍາດທີ່ຈະເຂົ້າສູ່ລະບົບ, r - ສຳ ລັບການເຂົ້າເຖິງການອ່ານ, w - ສຳ ລັບການເຂົ້າເຖິງການຂຽນ, x - ສຳ ລັບການປະຕິບັດການເຂົ້າເຖິງແລະ - ສຳ ລັບການປ່ຽນຄຸນລັກສະນະຂອງເອກະສານຫຼືຜູ້ ກຳ ກັບ.
    • -k - ອະນຸຍາດໃຫ້ທ່ານສາມາດ ກຳ ນົດສະຕິງທາງເລືອກ ສຳ ລັບການ ກຳ ນົດວ່າກົດລະບຽບໃດ (ຫລືກົດເກນທີ່ ກຳ ນົດໄວ້) ໄດ້ສ້າງການບັນທຶກສະເພາະ.

    ກົດລະບຽບເຫຼົ່ານີ້ອະນຸຍາດໃຫ້ມີການກວດສອບເບິ່ງເຫດການຕ່າງໆທີ່ປ່ຽນແປງແຟ້ມລະບົບທີ່ ສຳ ຄັນເຫຼົ່ານີ້.

    -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
    

    ທ່ານສາມາດຕັ້ງກົດລະບຽບການໂທດ້ວຍລະບົບໂດຍໃຊ້ແບບຟອມລຸ່ມນີ້:

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

    ບ່ອນທີ່:

    • ການກະ ທຳ - ມີສອງຄຸນຄ່າທີ່ເປັນໄປໄດ້: ຕະຫຼອດເວລາຫຼືບໍ່.
    • filter - ລະບຸຕົວກອງທີ່ກົງກັບກົດລະບຽບຂອງ kernel (ໜ້າ ວຽກ, ອອກ, ຜູ້ໃຊ້ແລະຍົກເວັ້ນ) ຖືກ ນຳ ໃຊ້ກັບເຫດການ.
    • ລະບົບການໂທ - ຊື່ລະບົບ.
    • ພາກສະ ໜາມ - ລະບຸຕົວເລືອກເພີ່ມເຕີມເຊັ່ນ: ສະຖາປັດຕະຍະ ກຳ, PID, GID ແລະອື່ນໆເພື່ອດັດແປງກົດລະບຽບ.

    ນີ້ແມ່ນກົດລະບຽບບາງຢ່າງທີ່ທ່ານສາມາດ ກຳ ນົດໄດ້.

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

    ຫຼັງຈາກນັ້ນ, ສຸດທ້າຍເພີ່ມການຕັ້ງຄ່າທີ່ບໍ່ປ່ຽນແປງຢູ່ໃນຕອນທ້າຍຂອງເອກະສານ, ຍົກຕົວຢ່າງ:

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

    ວິທີການ ກຳ ນົດກົດລະບຽບການກວດສອບໂດຍ ນຳ ໃຊ້ປະໂຫຍດຂອງ auditctl

    ອີກທາງເລືອກ, ສົ່ງຕົວເລືອກຕ່າງໆໄປກວດສອບໃນຂະນະທີ່ມັນ ກຳ ລັງແລ່ນຢູ່, ໂດຍໃຊ້ auditctl ຄືກັບໃນຕົວຢ່າງຕໍ່ໄປນີ້. ຄຳ ສັ່ງເຫຼົ່ານີ້ສາມາດຂ້າມກົດລະບຽບໃນເອກະສານການຕັ້ງຄ່າ.

    ເພື່ອລົງທະບຽນກົດລະບຽບການກວດສອບທີ່ມີການໂຫຼດທັງ ໝົດ ໃນປະຈຸບັນ, ໃຫ້ ນຳ ໃຊ້ທຸງ -l :

    # auditctl -l
    

    ຕໍ່ໄປ, ພະຍາຍາມເພີ່ມກົດລະບຽບບໍ່ຫຼາຍປານໃດ:

    # 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
    

    ຂໍ້ຄວາມການກວດສອບທັງ ໝົດ ຖືກບັນທຶກໄວ້ໃນ /var/log/audit/audit.log ໂດຍໃຊ້ຄ່າເລີ່ມຕົ້ນ. ເພື່ອເຂົ້າໃຈຮູບແບບການເຂົ້າໄມ້ທ່ອນ, ພວກເຮົາຈະມີກົດລະບຽບແລະກວດສອບການເຂົ້າໄມ້ທ່ອນທີ່ສ້າງຂື້ນພາຍຫຼັງເຫດການທີ່ກົງກັບກົດລະບຽບ.

    ສົມມຸດວ່າພວກເຮົາມີລະບົບ ສຳ ຮອງ ສຳ ລັບຂໍ້ມູນລັບ, ກົດລະບຽບການກວດສອບນີ້ຈະເຂົ້າສູ່ລະບົບຄວາມພະຍາຍາມໃດໆທີ່ຈະເຂົ້າເຖິງຫລືດັດແປງໄດເລກະທໍລີນີ້:

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

    ຕອນນີ້, ການ ນຳ ໃຊ້ບັນຊີລະບົບອື່ນ, ພະຍາຍາມຍ້າຍເຂົ້າໄປໃນໄດເລກະທໍລີຂ້າງເທິງແລະ ດຳ ເນີນການ ຄຳ ສັ່ງ ls:

    $ cd /backups/secret_files/
    $ ls
    

    ການເຂົ້າສູ່ລະບົບຈະມີລັກສະນະຄືກັນ.

    ເຫດການຂ້າງເທິງແມ່ນປະກອບດ້ວຍສາມປະເພດຂອງການບັນທຶກການກວດສອບ. ທຳ ອິດແມ່ນປະເພດ = 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"
    

    ທີສອງແມ່ນປະເພດ = CWD.

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

    ແລະອັນສຸດທ້າຍແມ່ນປະເພດ = 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
    

    ທ່ານສາມາດຊອກຫາບັນຊີລາຍຊື່ເຕັມຂອງທຸກໆເຫດການ (ເຊັ່ນ: msg, arch, ses ແລະອື່ນໆ) ແລະຄວາມ ໝາຍ ຂອງມັນໃນເອກະສານອ້າງອີງຂອງລະບົບການກວດສອບ.

    ດຽວນີ້ ໝົດ ແລ້ວ. ໃນບົດຄວາມຕໍ່ໄປ, ພວກເຮົາຈະເບິ່ງວິທີການ ນຳ ໃຊ້ການຄົ້ນຫາເພື່ອຄົ້ນຫາເອກະສານບັນທຶກການກວດສອບ: ພວກເຮົາຈະອະທິບາຍວິທີການຄົ້ນຫາຂໍ້ມູນສະເພາະຈາກບັນທຶກການກວດສອບ. ຖ້າທ່ານມີ ຄຳ ຖາມ, ກະລຸນາຕິດຕໍ່ຫາພວກເຮົາຜ່ານພາກ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.