[Linux] 使用 auditctl 監控檔案的建立、存取與刪除

[Linux] 使用 auditctl 監控檔案的建立、存取與刪除

最近在找一個問題,Linux 上有檔案莫名其妙被砍掉了,

不過因為這問題不容易發生,所以也還不太容易找到…

找了一下,Linux 上面有 auditctl 可以用來記錄檔案的動作,

因此如果之後檔案有被刪掉,理論上可以從 audit log 裡面找出來原兇是誰…

 

auditctl 比較簡單的用法是直接用 -w 指定要監控的路徑,

例如我想要監控目錄 /test 下的所有活動:

auditctl -w /test/

 

-l 選項則可以秀出目前已經監控的路徑(其實是列出所有的規則):

auditctl -l

 

執行結果如下: 

audit1  

 

當你對檔案做了一些動作之後,就可以用 ausearch 來觀察 audit log:

ausearch -f /test

 

執行結果如下~

就可以看出來 /bin/bash 有處理過 test1.txt,

而 vi 的動作就比較複雜,會產生一些暫存檔如 .test2.txt.swp, .test2.txt.swx 等等~ 

audit2    

 

如果想要比較人性化的輸出的話,可以加上 -i 的選項,如 ausearch -i -f /test

當監測完畢時,用 auditctl -D 就可以刪除掉所有的規則囉~

 


附註:這些 audit 檔案預設是存在 /var/log/audit 目錄下面:

audit3  

 

如果需要修改一些設定像是紀錄檔的個數與大小的話,可以修改 /etc/audit/auditd.conf,

像 num_logs 代表檔案個數,max_log_file 是檔案大小(MB):

#
# This file controls the configuration of the audit daemon
#

log_file = /var/log/audit/audit.log
log_format = RAW
log_group = root
priority_boost = 4
flush = INCREMENTAL
freq = 20
num_logs = 50
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NONE
##name = mydomain
max_log_file = 10
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
##tcp_listen_port =
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
enable_krb5 = no
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
 

xxx

(本頁面已被瀏覽過 2,786 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料