內容目錄
本章節說明如何建立並管理 NovellŪ AppArmor 設定檔。當您選取要建立設定檔的程式之後,便可以開始建立 Novell AppArmor 設定檔。如需這項功能的相關說明,請參閱章 2, 選擇要以免疫保護的程式 (↑Novell AppArmor 2.0 管理指南)。
本節將詳細說明 Novell AppArmor 設定檔的語法和組成。如需這個語法的說明範例,請參閱節 3.1.1, "分析 Novell AppArmor 設定檔組成" (↑Novell AppArmor 2.0 管理指南)。
Novell AppArmor 設定檔元件稱為「Novell AppArmor 規則」。目前 Novell AppArmor 規則共有兩種主要類型,即路徑項目和功能項目。路徑項目會指定程序可以在檔案系統中存取哪些內容,而功能項目會提供更精細的方法,控制透過其他需要權限的系統呼叫可以執行哪些特定程序。Include 是一種中繼規則或指示詞,可拉進其他檔案的路徑項目和功能項目。
說明設定檔的組成、以及如何建立設定檔的最簡單方式,就是顯示範例設定檔的詳細資訊。讓我們以下面這個 /sbin/klogd 程式的設定檔作為說明範例:
# profile to confine klogd/sbin/klogd
{
#include <abstractions/base>
capability sys_admin,
/boot/* r
, /proc/kmsg r, /sbin/klogd r, /var/run/klogd.pid lw, }
如果是為程式建立設定檔,該程式就只能存取該設定檔所指定的檔案、模式和 POSIX 功能。這些是原始 Linux 存取控制項以外的限制。
範例: .
若要取得功能 CAP_CHOWN,該程式必須同時具有在傳統 Linux 存取控制權下 CAP_CHOWN 的存取權 (通常這是擁有 root 權限使用者的程序),以及在其設定檔中設定 chown 功能。同樣地,若要能夠寫入檔案 /foo/bar,這個程式必須擁有正確的使用者 ID 和在檔案屬性的模式位元集 (請參閱 chmod 和 chown man 頁面),並且在其設定檔中設定 /foo/bar w。
任何違反 Novell AppArmor 規定的嘗試都會記錄在 syslog 中。在許多情況下,Novell AppArmor 規則可以使必要檔案不被存取而防止在執行時受到攻擊;而在大多數時間,Novell AppArmor 限制可以限制攻擊者可對 Novell AppArmor 允許檔案集合所造成的破壞。
#include陳述式是一種指示詞,可用來拉進其他 Novell AppArmor 設定檔的元件,以便簡化設定檔。Include 檔案可取得程式的存取權限。使用 Include,您就可以讓程式存取其他程式也需要的目錄路徑或檔案。使用 Include 可減少設定檔的大小。
根據預設,#include陳述式會在路徑名稱開頭附加 /etc/apparmor.d/,這是它預期在其中找到 Include 檔案的檔案。不同於其他設定檔陳述式 (但與 C 程式類似),#include 行並不是以逗號作為結尾。
Novell AppArmor 提供了兩種類別的 #include、抽象和程式區塊,以便協助您為應用程式建立設定檔。
抽象是被分類為一般應用程式工作的 #include。這些工作包含驗證機制的存取、名稱服務常式的存取、一般圖形需求和系統統計等。列於這些抽象中的檔案是命名工作的特定檔案;需要其中一個檔案的程式,通常會需要一些列於抽象檔案中的其他檔案 (視本地組態和程式的特定需求而定)。您可以在 /etc/apparmor.d/abstractions/ 中找到抽象。
程式區塊為特定程式的存取控制,而系統管理員可根據本地網站原則來控制這些特定程式。每個區塊皆由單一程式所使用。這些區塊可簡化修改本地網站符合原則,並更新 Novell AppArmor 所提供的原則。管理員可依據自身需求來修改這些檔案中的原則,並保留程式設定檔不變,讓 Novell AppArmor 中的原則更新與各網站中的強制原則進行合併時能更為容易。
程式區塊中的存取限制通常並不嚴格,其原因主要是為了讓使用者以最低侵入性的方法來存取檔案,同時讓系統資源能夠受到保護。這個規則的唯一例外是程式區塊的 postfix* 系列。這些設定檔可用來抽取 postfix 二進位檔的位置。您可能並不想降低 postfix* 系列的許可權。您可以在 /etc/apparmor.d/program-chunks/ 中找到程式區塊。