NetLabel Linux 安全模組介面

Paul Moore, paul.moore@hp.com

2006年5月17日

概述

NetLabel 是一種能夠從網路資料包中設定和檢索安全屬性的機制。它旨在供 LSM 開發者使用,這些開發者希望為多種不同的資料包標記協議利用一個通用的程式碼庫。NetLabel 安全模組 API 定義在 'include/net/netlabel.h' 中,但下面給出了一個簡要概述。

NetLabel 安全屬性

由於 NetLabel 支援多種不同的資料包標記協議和 LSM,因此它使用安全屬性的概念來指代資料包的安全標籤。NetLabel 安全屬性由 NetLabel 標頭檔案中的 'netlbl_lsm_secattr' 結構定義。在內部,NetLabel 子系統根據 NetLabel 的構建時和執行時配置,將安全屬性轉換為正確的低階資料包標籤,並從中進行轉換。LSM 開發者負責將 NetLabel 安全屬性轉換為其特定 LSM 中使用的任何安全識別符號。

NetLabel LSM 協議操作

這些函式允許 LSM 開發者操作傳出資料包上的標籤,以及讀取傳入資料包上的標籤。存在直接操作套接字和 `sk_buffs` 的函式。這些高階函式根據管理員配置 NetLabel 子系統的方式,被轉換為低階協議操作。

NetLabel 標籤對映快取操作

根據具體配置,網路資料包標籤與內部 LSM 安全識別符號之間的轉換可能耗時。NetLabel 標籤對映快取是一種快取機制,一旦建立對映,就可以用來避免大部分此開銷。一旦 LSM 收到資料包,使用 NetLabel 解碼其安全屬性,並將安全屬性轉換為 LSM 內部識別符號,LSM 就可以使用 NetLabel 快取函式將 LSM 內部識別符號與網路資料包的標籤關聯起來。這意味著將來當傳入資料包匹配快取值時,不僅內部 NetLabel 轉換機制被繞過,LSM 轉換機制也同樣被繞過,這將顯著減少開銷。