AppArmor是一個對訪問權限進行控制的內(nèi)核應用辛友。但是在權限配置谐腰、撰寫apparmor的配置文件時胁黑,由于缺乏配置文檔僻澎,在配置時十分困難貌踏。后來在Ubuntu官網(wǎng)上找到配置說明,以此記錄以說明窟勃。
配置文件示例
#導入變量祖乳,目前AppArmor并不支持動態(tài)變量
#include <tunables/global>
/usr/sbin/tcpdump {
# 使用#include導入預設配置
#include <abstractions/base>
#include <abstractions/nameservice>
#include <abstractions/user-tmp>
# 用capability 進行系統(tǒng)權限配置
capability net_raw,
capability setuid,
capability setgid,
capability dac_override,
# 用network 進行網(wǎng)絡權限配置
network raw,
network packet,
# for -D
capability sys_module,
# 用@{PROC}表示/proc/
# 該變量通過tunables/global配置中導入的tunables/proc文件定義的
@{PROC}/bus/usb/ r,
@{PROC}/bus/usb/** r,
# for -F and -w
# 使用audit 對審計權限進行配置
# 用@{HOME}表示/home/*/ /root/
# 該變量通過tunables/global配置中導入的tunables/home文件定義的
audit deny @{HOME}/.* mrwkl,
audit deny @{HOME}/.*/ rw,
audit deny @{HOME}/.*/** mrwkl,
audit deny @{HOME}/bin/ rw,
audit deny @{HOME}/bin/** mrwkl,
@{HOME}/ r,
@{HOME}/** rw,
/usr/sbin/tcpdump r,
}
參數(shù)說明:
文件匹配可以支持一定語法的正則匹配,規(guī)則如下:
*: 匹配當前目錄下任意長度字符的文件秉氧、目錄眷昆。
該規(guī)則在通配符緊跟在目錄分隔符后時,不匹配以點開頭的目錄、文件
該規(guī)則在通配符緊跟在目錄分隔符后時,不匹配空名目錄。
等價于PCRE中寫法([ ^/\000 ]*)
**: 匹配當前目錄下及任意層子目錄下任意長度字符的文件祈餐、目錄理疙。
該規(guī)則在通配符緊跟在目錄分隔符后時,不匹配以點開頭的目錄焕毫、文件
等價于PCRE中寫法([ ^\000 ]*)
?: 匹配一個非"/"的字符。
等價于PCRE中寫法 [ ^/ ]
{ }: 可以匹配的替代字符串的逗號分隔列表。
等價于PCRE中寫法 ( | )
[ ]: 字符類弟灼。
與PCER語法相同
[ ^ ]: 反轉(zhuǎn)字符類。
與PCER語法相同
{ *^ }: 可以匹配被排除字符串的逗號分隔列表冒黑。
eg. /etc/{ *^shadow } 等價于除了/etc/shadow 以外/etc/* 所匹配的
eg. /etc/{ *^shadow, passwd } 等價于 /etc/* - /etc/{ shadow, passwd }
eg. /etc/{ *^*shadow } 等價于 /etc/* - /etc/*shadow
eg. /etc/{ **^shadow } 等價于 /etc/** matches - /etc/shadow
eg. /etc/{ **^shadow, passwd } 等價于 /etc/** - /etc/{shadow, passwd}
eg. /etc/{ **^*shadow } 等價于 /etc/** - /etc/*shadow
注意. 上述規(guī)則來源《AppArmor核心策略參考》田绑,創(chuàng)作于AppArmor的一個非常早的階段,該篇并未被塑造用于作參考手冊
以下參數(shù)代表對上述匹配文件有如下權限:
r: 讀
w: 寫
m: 存儲器映射,
k: 文件鎖定
l: 創(chuàng)建硬鏈接
ix: 執(zhí)行并繼承該安全配置
Px: 在清理環(huán)境之后抡爹,執(zhí)行并使用其他安全配置
Ux: 在清理環(huán)境之后掩驱,執(zhí)行不做限制
參考資料
AppArmor - Ubuntu Wiki
https://wiki.ubuntu.com/AppArmor
AppArmor Core Policy Reference - AppArmor
https://wiki.ubuntu.com/AppArmor