天天看點

CentOS7的審計配置

  通過auditd,系統稽核允許系統管理者監視其系統這樣他們就可以檢測到未經授權的資料通路或修改。

預設情況下,auditd将稽核SELinux AVC拒絕、系統登入、帳戶修改和身份驗證事件。事件将記錄到 /var/log/audit/audit.log

配置檔案:

  • /etc/audit/auditd.conf
  • /etc/audit/rules.d/audit.rules
  • /etc/audit/audit.rules     # 根據/etc/audit/rules.d/audit.rules自動生成

配置開機啟動

systemctl enable  auditd      

配置規則 (man auditctl)

規則類型可分為:

  1. 控制規則:控制audit系統的規則;
  2. 檔案系統規則:也可以認為是檔案監控,可以監控一個特定檔案或者一個路徑。
  3. 系統調用規則:可以記錄特定程式的系統調用。
1. 控制規則:

-b  設定在核心中audit緩沖空間的最大值。

-f   這個選項來決定核心如何處理critical erros:0=silent 1=printk 2=panic.預設值為1。

-e  設定使能标志,設定為0,為關閉了audit,設定為1,則開啟audit;當設定為2時,表示鎖定,一般在設定完其他規則後最後設定,防止其他人修改規則;任何修改規則的行為都會被拒絕,并且記錄審計日志,隻有當重新開機系統後,這個使能标志才可以被修改。

2. 檔案系統規則
auditctl -w path -p permissions -k key_name      
  • -w : 目錄或者檔案路徑
  • -p: 描述檔案系統監視将觸發的權限通路類型,r=讀取,w=寫入,x=執行,a=屬性更改。
  • -k:  設定稽核規則的篩選關鍵字
3. 系統調用規則
auditctl -a [list,action|action,list] -S [Syscall name or number|all] -F field=value -k key_name      
  • -a: action和list 明确一個事件被記錄。action可以為always或者never,list明确出對應的比對過濾,list可以為:task,exit,user,exclude,filesystem。
  • -S: system_call 明确出系統調用的名字,幾個系統調用可以寫在一個規則裡,如-S xxx -S xxx。系統調用的名字可以在/usr/include/asm/unistd_64.h檔案中找到。
  • -F:  field=value 作為附加選項,修改規則以比對特定架構、GroupID,ProcessID等的事件。具體有哪些字段,可以參考man linux  https://linux.die.net/man/8/auditctl

配置執行個體

記錄系統的日期和時間的修改

 vim + /etc/audit/rules.d/audit.rules

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time-change
-a always,exit -F arch=b32 -S adjtimex -S settimeofday -S stime -k timechange
-a always,exit -F arch=b64 -S clock_settime -k time-change
-a always,exit -F arch=b32 -S clock_settime -k time-change
-w /etc/localtime -p wa -k time-change      

記錄使用者群組的修改的事件

-w /etc/group -p wa -k identity
-w /etc/passwd -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/security/opasswd -p wa -k identity      

記錄網絡環境修改時間

-a always,exit -F arch=b64 -S sethostname -S setdomainname -k system-locale
-a always,exit -F arch=b32 -S sethostname -S setdomainname -k system-locale
-w /etc/issue -p wa -k system-locale
-w /etc/issue.net -p wa -k system-locale
-w /etc/hosts -p wa -k system-locale
-w /etc/sysconfig/network -p wa -k system-locale
-w /etc/sysconfig/network-scripts/ -p wa -k system-locale      

記錄登入和登出事件

-w /var/log/lastlog -p wa -k logins
-w /var/run/faillock/ -p wa -k logins      

記錄會話啟動事件

-w /var/run/utmp -p wa -k session
-w /var/log/wtmp -p wa -k logins
-w /var/log/btmp -p wa -k logins      

檔案/var/run/utmp跟蹤目前登入的所有使用者。所有審計記錄都将用辨別符“session”标記,  可以用who指令讀取

/var/log/wtmp檔案跟蹤登入、登出、關機和重新啟動事件。

檔案/var/log/btmp跟蹤失敗的登入嘗試,可以通過輸入指令 ‘/usr/bin/last-f  /var/log/btmp’ 讀取。所有稽核記錄都将被标記為辨別符“logins”

監視對檔案權限、屬性、所有權群組的更改

-a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod
-a always,exit -F arch=b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod      

在所有情況下,稽核記錄将隻為非系統使用者id(auid>=1000)并将忽略守護程序事件(auid=4294967295)。

所有審計記錄用辨別符“perm_mod”标記

記錄未授權檔案通路嘗試

-a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
-a always,exit -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access      

確定收集使用特權指令

監視特權程式(那些在執行時設定了setuid和/或setgid位的程式)以确定沒有權限的使用者是否正在運作這些指令。

通過下面指令

find / -xdev \( -perm -4000 -o -perm -2000 \) -type f | awk
'{print \
"-a always,exit -F path=" $1 " -F perm=x -F auid>=1000 -F auid!=4294967295 \
-k privileged" }'      

得到記錄

-a always,exit -F path=/usr/bin/wall -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/chfn -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/chsh -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/chage -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/gpasswd -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/mount -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/su -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/umount -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/write -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/crontab -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/ssh-agent -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/pkexec -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/bin/passwd -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/sbin/unix_chkpwd -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/sbin/pam_timestamp_check -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/sbin/netreport -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/sbin/usernetctl -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/sbin/postdrop -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/sbin/postqueue -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/lib/polkit-1/polkit-agent-helper-1 -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/libexec/utempter/utempter -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/libexec/dbus-1/dbus-daemon-launch-helper -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged
-a always,exit -F path=/usr/libexec/openssh/ssh-keysign -F perm=x -F auid>=1000 -F auid!=4294967295  -k privileged      

收內建功挂載磁盤事件

-a always,exit -F arch=b64 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts
-a always,exit -F arch=b32 -S mount -F auid>=1000 -F auid!=4294967295 -k mount      

確定收集使用者的檔案删除事件

-a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete
-a always,exit -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete      

確定收集對系統管理範圍(sudoers)的更改

-w /etc/sudoers -p wa -k scope
-w /etc/sudoers.d/ -p wa -k scope      

監視sudo日志檔案

如果系統已正确配置為禁用su指令并強制所有管理者必須先登入,然後使用sudo執行特權指令,

然後所有管理者指令将被記錄到/var/log/sudo.log檔案.

每當執行指令時,稽核事件将被觸發為/var/log/sudo.log檔案将打開檔案進行寫入,并執行管理指令将寫入日志。

-w /var/log/sudo.log -p wa -k actions      

確定收集核心子產品加載和解除安裝

-w /sbin/insmod -p x -k modules
-w /sbin/rmmod -p x -k modules
-w /sbin/modprobe -p x -k modules
-a always,exit -F arch=b64 -S init_module -S delete_module -k modules      

確定稽核配置是不可變的

稽核規則不能使用auditctl修改。設定标志“-e2“強制将稽核置于不可變模式。進行稽核更改隻能對系統重新啟動。

-e 2      

繼續閱讀