Linux 安全模組

作者:

Casey Schaufler

日期:

2023 年 7 月

Linux 安全模組 (LSM) 提供了一種機制,用於對 Linux 安全策略實施額外的訪問控制。

各種安全模組可能支援以下任何屬性

LSM_ATTR_CURRENT 是程序的當前活動安全上下文。proc 檔案系統在 /proc/self/attr/current 中提供此值。SELinux、Smack 和 AppArmor 安全模組支援此功能。Smack 也在 /proc/self/attr/smack/current 中提供此值。AppArmor 也在 /proc/self/attr/apparmor/current 中提供此值。

LSM_ATTR_EXEC 是當前映象執行時程序的安全上下文。proc 檔案系統在 /proc/self/attr/exec 中提供此值。SELinux 和 AppArmor 安全模組支援此功能。AppArmor 也在 /proc/self/attr/apparmor/exec 中提供此值。

LSM_ATTR_FSCREATE 是建立檔案系統物件時使用的程序的安全上下文。proc 檔案系統在 /proc/self/attr/fscreate 中提供此值。SELinux 安全模組支援此功能。

LSM_ATTR_KEYCREATE 是建立金鑰物件時使用的程序的安全上下文。proc 檔案系統在 /proc/self/attr/keycreate 中提供此值。SELinux 安全模組支援此功能。

LSM_ATTR_PREV 是設定當前安全上下文時程序的安全上下文。proc 檔案系統在 /proc/self/attr/prev 中提供此值。SELinux 和 AppArmor 安全模組支援此功能。AppArmor 也在 /proc/self/attr/apparmor/prev 中提供此值。

LSM_ATTR_SOCKCREATE 是建立套接字物件時使用的程序的安全上下文。proc 檔案系統在 /proc/self/attr/sockcreate 中提供此值。SELinux 安全模組支援此功能。

核心介面

設定當前程序的安全屬性

long sys_lsm_set_self_attr(unsigned int attr, struct lsm_ctx __user *ctx, u32 size, u32 flags)

設定當前任務的安全模組屬性

引數

unsigned int attr

要設定哪個屬性

struct lsm_ctx __user * ctx

LSM 上下文

u32 size

ctx 的大小

u32 flags

保留供將來使用

描述

設定呼叫任務的 LSM 上下文。成功後,此函式返回 0。如果指定的屬性無法設定,則返回一個負值,指示錯誤的原因。

獲取當前程序的指定安全屬性

long sys_lsm_get_self_attr(unsigned int attr, struct lsm_ctx __user *ctx, u32 __user *size, u32 flags)

返回當前任務的安全模組屬性

引數

unsigned int attr

要返回哪個屬性

struct lsm_ctx __user * ctx

用於儲存資訊的使用者空間目標,或 NULL

u32 __user * size

指向可用於接收資料的空間大小的指標

u32 flags

特殊處理選項。LSM_FLAG_SINGLE 指示僅報告與傳入的 ctx 中標識的 LSM 關聯的屬性。

描述

返回呼叫任務的 LSM 上下文。成功後,此函式返回 ctx 陣列元素的數量。如果沒有分配 LSM 上下文,則此值可能為零。如果 size 不足以包含返回的資料,則返回 -E2BIG 並且 size 設定為最小所需大小。在所有其他情況下,返回指示錯誤的負值。

long sys_lsm_list_modules(u64 __user *ids, u32 __user *size, u32 flags)

返回活動安全模組的列表

引數

u64 __user * ids

LSM 模組 ID

u32 __user * size

指向 ids 大小的指標,返回時更新

u32 flags

保留供將來使用,必須為零

描述

返回活動 LSM ID 的列表。成功後,此函式返回 ids 陣列元素的數量。如果沒有活動的 LSM,則此值可能為零。如果 size 不足以包含返回的資料,則返回 -E2BIG 並且 size 設定為最小所需大小。在所有其他情況下,返回指示錯誤的負值。

其他文件