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