[Centos7] audit 服務

URL Link //n.sfs.tw/12243

2018-03-10 14:58:02 By 張○○

Linux 的 audit 服務是什麼?以前我也不會去注意,直到有一天系統 crash,不知道為什麼,打開 Monitor,只出現一堆這樣的訊息:

audit: audit_backlog=326 > audit_backlog_limit=320
audit: audit_lost=39095317 audit_rate_limit=0 audit_backlog_limit=320
audit: backlog limit exceeded

這也許不是 crash 的主因,但crash引發audit log 淹沒我的記錄寫入才引起我的注意,因此來研究一下 audit。

 

什麼是 audit

Linux 系統中已經 syslog 了,syslog 會記錄系統狀態、如硬體的警告或應用軟體的記錄等。但是syslog屬於應用層,且僅只於此一應用而已,沒辦法記錄太多資訊,同時也無法確知應用程式是否能正確的寫入,例如因為權限問題無法執行應用程式時,audit可以替我們寫下這些記錄。因此,audit 誕生以彌補 syslog 的不足,也能來記錄1核心層的事件:檔案的讀寫、系統呼叫、權限的狀態、2開啟audit記錄的使用者事件等。並把log寫在下面這個檔案中:

/var/log/audit/audit.log

 

audit 運作的流程

當觸即核心的運作時,audit就會把記錄寫下來,例如開啟 /etc/shadow、觸碰sellinux等等。

(圖片取自參考資料4)

Audit Daemon 運作和一般的daemon 一樣,運作時也得適用selinux的規則。

 

安裝及啟動

CENTOS7原本就內建有這項服務,可檢查是否有安裝

# rpm -qa  |grep 'audit'

audit-2.6.5-3.el7_3.1.x86_64
audit-libs-2.6.5-3.el7_3.1.x86_64

安裝/更新

# yum install audit audit-libs

# yum update audit

啟動/停止/重啟

# service auditd stop

# service auditd start

# service auditd restart

查看運作狀態

systemctl status auditd.service

 

操作

audit 有三個操作的工具:

auditctl - 控制 kernel audit system,能取得狀態,增或刪除rules、設定某個檔案的「檢視」(watch)。
ausearch - 用來查詢 audit logs 的工具。
aureport - 產生 audit 系統簡報的工具。

建立監看目錄

# auditctl -w /root

建立監看目錄,給定索引標籤 touch

# auditctl -w /root -k touch

查看已指定監看的目錄

# auditctl -l

移除監看的目錄

# auditctl -W /root

移除全部規則和監看

# auditctl -D

設定每秒最大筆數 20

# auditctl -r 20

顯示目前的設定參數和狀態

# auditctl -s

 

檢查今天檔案及系統的簡報狀態

# aureport --start today --event --summary -i

查看今日的報告

# aureport

Summary Report
======================
Range of time in logs: 西元2018年04月06日 08:55:33.201 - 西元2018年04月06日 15:09:02.743
Selected time for report: 西元2018年04月06日 08:55:33 - 西元2018年04月06日 15:09:02.743
Number of changes in configuration: 11
Number of changes to accounts, groups, or roles: 0
Number of logins: 1
Number of failed logins: 3850
Number of authentications: 2
Number of failed authentications: 10451
Number of users: 2
Number of terminals: 7
Number of host names: 81
Number of executables: 11
Number of commands: 9
Number of files: 667
Number of AVC's: 28004
Number of MAC events: 1
Number of failed syscalls: 27224
Number of anomaly events: 0
Number of responses to anomaly events: 0
Number of crypto events: 38789
Number of integrity events: 0
Number of virt events: 0
Number of keys: 2
Number of process IDs: 8381
Number of events: 84484

查看主機的活動統計

# aureport -h --summary
Host Summary Report
===========================
total  host
===========================
27799  84.46.7.8
13034  46.59.222.82
6329  42.7.26.60
2314  port-1793.pppoe.wtnet.de
1086  port-56731.pppoe.wtnet.de
828  218.29.188.109
679  139.217.15.94
390  103.99.0.120
78  170.210.83.114
55  ?
52  103.99.3.161
44  18.221.91.21
39  202.97.205.78
29  103.207.36.56
27  5.188.10.182
27  181.214.87.4
26  103.207.39.211
25  153.124.169.17
25  95.140.124.171
22  121.18.231.66
22  122.226.181.166
22  221.194.44.211
22  121.18.238.39

 

查看監看的目錄(或檔案)

只要有讀寫的都會被記錄下來

# ausearch -f /root

 

查看今天的記錄

# ausearch -ts today

利用 -ts 指定日期 -hn 指定存取的來源位址

# ausearch -ts 4/6/18 -hn 46.59.222.82

上面代表查詢 2018年4月6日,IP來自46.59.222.82的記錄

-ui 來指定 user name (UID),例如找出  (uid 506) 的操作

# ausearch -ui 506

讀取具有標籤的監看

# ausearch -i -f /root -k touch

 

設定檔

audit 的寫入的規則在這個檔案中
/etc/audit/rules.d/audit.rules

寫完規則會建立規則檔 /etc/audit/audit.rules,主要分為三種類別:

  1. 基本 audit 指令 Basic audit system parameters
  2. 檔案或目錄監看 File and directory watches
  3. 系統呼叫 System call audits

1.基本 audit 指令

audit.rules

# 刪除舊記錄
-D
# buffer大小,預設256,改為8192
-b 8192
# 失敗控制旗標 0:silent, 1:印出錯誤,預設, 2: panic 把系統關閉—非正常關閉,造成資料遺失
# 生失效,0為失效,1為生效(預設)
-e 1
# 每秒建立資料最大筆數20,如不限制可設為0
-r 20

2.,檔案或目錄監看

和前面介紹的 auditctl 參數相同,只是寫在設定檔

# 觀察 /home/note 給定索引 note
-w /home/note -k note
# 觀查檔案 /etc/auditd.conf,-p 設定權限為rxw及a修改等屬性變更
-w /etc/auditd.conf -p rxwa


3.系統呼叫


-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=500 -F auid!=4294967295 -k delete
-a always,exit -F path=/etc/shadow -F perm=wa

系統呼叫的部分我比較陌生,在官網[5]上有一些範例說得並不是很清楚,留待看倌有需要自己去研究

 

其他說明

• 目錄觀察的詳細度比檔案觀察低
• 無法使用任何的萬用字元,如?或*
• 只能設定已存在的檔案,若設定觀察目錄而有新增檔案,新檔案只會在下次 audit 重啟後才會加入

 

參考資料

[1] http://puremonkey2010.blogspot.tw/2014/02/linux-auditctl.html

[2] 檢查誰修改檔的動作 http://www.cyberciti.biz/tips/linux-audit-files-to-see-who-made-changes-to-a-file.html

[3] Linux Audit Quick Start SUSE Linux Enterprise 10 SP1 http://www.novell.com/documentation/sled10/pdfdoc/auditqs_sp2/auditqs_sp2.pdf

[4] The Linux Audit Subsystem Deep Dive http://linuxvm.org/present/SHARE113/S9203sw.pdf

[5] https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security_guide/sec-Defining_Audit_Rules_and_Controls#sec-Defining_Audit_Rules_with_the_auditctl_utility


重編修原文2010-09-01 11:39:25