auditctl - 協助控制核心審計系統的實用程式
概要
auditctl[options]
描述
auditctl程式用于控制行為,擷取狀态,以及在2.6核心的審計系統中添加或删除規則。
選項
-bbacklog
設定允許的未完成審計緩沖區的最大數量(核心預設值= 64)如果所有緩沖區都已滿,則查詢故障标志
由核心采取行動。
-e[0..2]
設定啟用标志。當通過0時,可以暫時禁用審計。當1作為參數傳遞時,它會
啟用稽核。要鎖定審計配置以使其不能更改,請傳遞2作為參數。鎖定配置 -
意圖是任何人希望此功能處于活動狀态的audit.rules中的最後一個指令。任何嘗試改變
此模式下的配置将被審計和拒絕。隻能通過重新啟動機器來更改配置。
-f[0..2]
設定故障标志0 =silent 1 = printk 2 = panic。此選項允許您确定您希望核心如何處理關鍵錯誤。
咨詢此标志的示例條件包括:到使用者空間審計守護程式的傳輸錯誤,積壓限制
超出,超出核心記憶體,并超過速率限制。預設值為1.安全環境可能需要設定
這到2。
-h幫助
-i從檔案讀取規則時忽略錯誤
-l每行列出所有規則1。這可以采取一個關鍵選項(-k)。
-kkey在稽核規則上設定過濾器鍵。過濾器鍵是可以長達31個位元組長的任意文本字元串。它可以
唯一辨別由規則生成的稽核記錄。典型的用法是當你有幾個規則一起滿足a
安全要求。可以使用ausearch搜尋鍵值,以便無論哪個規則觸發了事件,您都可以
找到它的結果。該鍵還可以用于删除全部(-D)和清單規則(-l)以選擇具有特定鍵的規則。你可以
如果您希望能夠以多種方式搜尋記錄的事件,或者如果您有audispd,則對規則有多個鍵
插件使用一個鍵來幫助其分析。
-m文本
将使用者空間消息發送到審計系統。這隻能由root使用者完成。
-p[r | w | x | a]
為檔案系統監視設定權限過濾器。 r =讀,w =寫,x =執行,a =屬性更改。這些權限不是
标準檔案權限,而是那種可以做這種事情的系統調用。讀寫系統調用是省略 -
從這一套,因為他們會壓倒原木。但是對于讀或寫,打開的标志看看什麼
請求權限。
-q裝載點,子樹
如果你有一個現有的目錄監視和綁定或移動挂載另一個子樹在被監視的子樹,你需要告訴
核心使子樹被裝載等同于被監視的目錄。如果子樹已經挂載在
時間發出目錄監視,子樹被自動标記為觀看。請注意兩者之間的逗号分隔
值。省略它會導緻錯誤。
-r速率
設定限制在消息/秒(0 =無)。如果該速率不為零并且被超過,則核心查詢失敗标志
行動。預設值為0。
-R檔案
從檔案中讀取規則。規則必須是每行一個,并且按照它們要執行的順序。規則檔案必須是
由root擁有,其他使用者不可讀,否則将被拒絕。規則檔案可以通過啟動嵌入注釋
行以'#'字元。從檔案讀取的規則與在指令行上輸入的規則相同,但它們除外
不在前面加上auditctl(因為auditctl是執行檔案的那個)。
-s報告狀态。請注意,pid為0表示審計守護程式未在運作。
-t在安裝指令後修剪子樹。
- 清單,行動
使用操作将規則附加到清單的結尾。請注意分隔兩個值的逗号。省略它會導緻錯誤。的
以下描述有效的清單名稱:
任務向每個任務清單添加規則。此規則清單僅在建立任務時使用 - 當fork()或
clone()由父任務調用。當使用此清單時,您應該隻使用在任務cre-
例如uid,gid等。
entry在syscall條目清單中添加規則。此清單在進入系統調用時使用,以确定是否發生審計事件
應該建立。
exit将規則添加到系統調用退出清單。此清單在退出系統調用時使用,以确定是否發生審計事件
user向使用者消息過濾器清單中添加規則。此清單由核心用于過濾源自使用者的事件
空間,然後将它們轉發到審計守護程式。應該注意,唯一有效的字段是:uid,
auid,gid和pid。所有其他字段将被視為不比對。
exclude将規則添加到事件類型排除篩選器清單。此清單用于過濾不希望看到的事件。
例如,如果您不想看到任何avc消息,您将使用此清單來記錄。消息類型
你不希望看到的是msgtype字段。
以下描述規則的有效操作:
從不會生成稽核記錄。這可以用于抑制事件生成。一般來說,
位于清單頂部而不是底部的sions。這是因為事件觸發第一個比對規則。
總是配置設定一個審計上下文,總是在syscall入口時間填充它,并且總是在syscall出口寫出一條記錄
時間。
- 清單,動作
使用操作将規則添加到開始清單。
-dlist,action
使用操作從清單中删除規則。僅當該規則與系統調用名稱和字段名完全比對時,才會删除該規則。
-D删除所有規則和手表。這可以采取一個關鍵選項(-k)。
-S[Syscall名稱或号碼| all]
可以使用任何系統調用名稱或數字。也可以使用“全部”這個詞。如果這個系統調用是由一個程式,然後啟動一個
審計記錄。如果給定字段規則并且未指定系統調用,則它将預設為所有系統調用。您還可以指定mul-
通過在同一規則中使用多個-S選項,可以在同一規則中調整系統調用。這樣做可以提高性能,因為規則較少
需要進行評估。如果你在一個雙拱系統,如x86_64,你應該知道,auditctl隻是采取的文本,
查找本機arch(在這種情況下為b64),并将該規則發送到核心。如果沒有附加拱形導向件,
它将适用于32和64位的SYSCALLS。這可能有不良影響,因為不能保證
例如,打開的系統調用在32位和64位接口上具有相同的編号。你可能想要控制這個和寫2個規則,
一個與拱等于b32和一個與b64,以確定核心找到您打算的事件。
-F[n = v | n!= v | n <v | n> v | n <= v | n> = v | n&v | n&amp; v]
建構規則字段:名稱,操作,值。您最多可以在單個指令行上傳遞64個字段。每個人都必須開始
與-F。每個場方程彼此聯合以觸發審計記錄。支援8個運算符 - 相等,不是
等于,小于,大于,小于或等于和大于或等于位掩碼和位測試。位測試
将“和”的值并檢查它們是否相等,位掩碼隻是“ands”的值。可以改為使用使用者ID的字段
有使用者名;程式會将名稱轉換為使用者ID。組名也是如此。有效字段為:
a0,a1,a2,a3
分别是系統調用的前4個參數。請注意,不支援字元串參數。這是因為
核心被傳遞一個指向字元串的指針。觸發指針位址值不太可能工作。是以,什麼時候
使用這個,你應該隻使用數字值。這很可能在複用的平台上使用
套接字或IPC操作。
arch系統調用的CPU體系結構。拱可以發現做'uname-m'。如果你不知道你的弓
機器,但是你想使用32位系統調用表和你的機器支援32位,你也可以使用b32為
拱。同樣适用于64位系統調用表,可以使用b64。這樣,你可以編寫規則
有些拱獨立,因為家庭類型将被自動檢測。但是,系統調用可以是特定的和
什麼在x86_64可用,可能不可用在ppc。 arch指令應該在-S選項前面
auditctl知道使用哪個内部表來查找系統調用号。
auid使用者登入的原始ID。它的審計uid的縮寫。有時它被稱為loginuid。
可以使用文本或數字。
devmajor裝置主要編号
devminor裝置少數
dir要觀看的目錄的完整路徑。這将在目錄及其整個子樹上放置一個遞歸監視。應該
隻能在退出清單中使用。請參見“-w”。
egid有效組ID
euid有效使用者ID
exit從系統調用退出值。如果退出代碼是一個errno,你也可以使用文本表示。
fsgid檔案系統組ID
fsuid檔案系統使用者ID
filetype目标檔案的類型。可以是file,dir,socket,symlink,char,block或者fifo。
gid組ID
inodeInode編号
key這是另一種設定過濾器鍵的方法。請參閱上面關于-k選項的讨論。
msgtype這用于比對消息類型編号。它應該隻在排除過濾器清單上使用。
obj_user資源的SE Linux使用者
obj_role資源的SE Linux角色
obj_type資源的SE Linux類型
obj_lev_low資源的SE Linux低級
obj_lev_high
資源的SE Linux進階
path要觀察的檔案的完整路徑。隻應在退出清單中使用。
perm檔案操作的權限過濾器。請參見“-p”。隻應在退出清單中使用。你可以使用這個沒有speci-
fying一個系統調用,核心将選擇滿足請求的權限的系統調用。
persOS個性号
pid程序ID
ppid父程序ID
subj_user程式的SE Linux使用者
subj_role程式的SE Linux角色
subj_type程式的SE Linux類型
subj_sen程式的SE Linux靈敏度
subj_clr程式的SE Linux清除
sgid儲存的組ID。請參閱getresgid(2)手冊頁。
success如果退出值> = 0,則為true / yes,否則為false /no。在編寫規則時,使用1表示true / yes和a
0表示假/否
suid儲存的使用者ID。請參閱getresuid(2)手冊頁。
uid使用者ID
-w路徑
在路徑中插入檔案系統對象的監視。您不能将表插入頂級目錄。這是被禁止的
核心。通配符也不受支援,并将生成警告。手表的工作方式是跟蹤inode
内部。如果對檔案進行觀察,則與在系統調用規則上使用-F路徑選項相同。如果你戴上手表
一個目錄,它與在系統調用規則上使用-F dir選項相同。書寫表的-w形式是向後相容的,
可行性和基于系統調用的形式更具表達性。與大多數系統調用審計規則不同,手表不會影響性能
基于發送到核心的規則的數量。使用手表時,唯一有效的選項是-p和-k。如果你需要
任何花哨像審計特定使用者通路檔案,然後使用syscall審計表單與path或dir字段。看到
示例“部分中的将一種形式轉換為另一種形式的示例。
-W路徑
在路徑中删除檔案系統對象的監視。
性能提示
每個程式的每個系統調用評估Syscall規則。如果你有10個系統調用規則,你的系統上的每個程式都會延遲
在審計系統期間系統調用每個。太多的系統調用規則會損害性能。嘗試結合多達
您可以在過濾器,操作,鍵和字段相同時使用。例如:
auditctl-a exit,always -S打開-F成功= 0
auditctl-a exit,always -S truncate -F success = 0
可以重寫為一條規則:
auditctl-a exit,always -S open -S truncate -F success = 0
此外,盡量在可行的情況下使用檔案系統審計。這提高了性能。例如,如果你想捕獲所有
失敗的打開和截斷像上面,但隻關心/ etc中的檔案,并不關心/ usr或/ sbin,它可能
使用此規則:
auditctl-a exit,always -S open -S truncate -F dir = / etc -F success = 0
這将是更高的性能,因為核心不會評估它每個和每個系統調用。它将由檔案系統處理
審計代碼并且僅檢查與檔案系統相關的系統調用。
例子
檢視特定程式所産生的所有系統調用:
auditctl-a entry,always -S all -F pid = 1005
檢視特定使用者打開的檔案:
auditctl-a exit,always -S打開-F auid = 510
要檢視未成功的打開電話:
觀看檔案以進行更改(2種表達方式):
auditctl-w / etc / shadow -p wa
auditctl-a exit,always -F path = / etc / shadow -F perm = wa
要遞歸地觀察目錄以進行更改(2種表達方式):
auditctl-w / etc / -p wa
auditctl-a exit,always -F dir = / etc / -F perm = wa
檔案
/etc/audit/audit.rules