NovellŪ AppArmor 設定檔可提供個別程式例項或程序的安全性原則。設定檔可以套用至可執行程式中,但如果程式的某個部份所需要的存取許可權與其他部份不同,則程式可「變更 hats」 以使用不同的安全性內容,並與主程式的存取有明顯的不同。這通常稱為 hat 或子設定檔。
ChangeHat 可讓程式變更 Novell AppArmor 設定檔中的 hat。這可讓您定義較程序更高層級的安全性。
此功能需要每個應用程式都具備「changehat aware」的功能,這表示其必須能夠對 Novell AppArmor 模組提出要求,在應用程式執行期間的任何時間點上切換安全性領域。
設定檔可包含任意數量的子設定檔,但全部只分成兩種層級: 子設定檔並沒有更下層的子設定檔。子設定檔是寫成個別設定檔,以包含的設定檔命名,再加上子設定檔名稱並以 ^ 分隔。子設定檔必須儲存在與上層設定檔相同的檔案中。
![]() | 注 |
|---|---|
如需更多資訊,請參閱 | |
Novell AppArmor 為 Apache 程式提供了 mod-apparmor 模組。mod-apparmor 可在 SUSE Linux 上運作,使 Apache 網頁伺服器具備「ChangeHat aware」功能。系統上若有安裝 Apache,就會自動安裝該模組。
當 Apache 具備「ChangeHat-aware」功能時,它會依照接收每個 URI 的順序來檢查以下的自訂 Novell AppArmor 安全性設定檔。
URI 特定 hat (例如,^phpsysinfo-dev/templates/classic/images/bar_left.gif)
DEFAULT_URI
HANDLING_UNTRUSTED_INPUT
如果您已在系統上安裝必要的 Apache 2,mod-apparmor 會自動與 Novell AppArmor 一起安裝並新增至 Apache 組態。不支援 Apache 1.3。
![]() | 注 |
|---|---|
如果您安裝的 LoadModule change_hat_module modules/mod_change_hat.so | |
如同大部份的 Novell AppArmor 工具一樣,您可以使用兩種方法來管理 ChangeHat、YaST 或指令行介面。使用指令行管理 ChangeHat-aware 應用程式較具有彈性,但程序也比較複雜。兩種方法都可讓您管理應用程式的 hat,並在其中匯入設定檔項目。
在以下步驟中,我們將提供示範以引導您使用 YaST 將 hat 新增至 Apache 設定檔。在中,Novell AppArmor 建立設定檔公用程式會提示您為特定的 URI 要求建立新 hat。選擇建立新的 hat 可讓您為每個 URI 建立個別的設定檔。這可讓您為每個要求建立非常嚴格的規則。
如果處理的 URI 並不代表重要的程序或重大的安全性風險,可以放心選擇,在預設的 hat 中處理此 URI,這也是預設的安全性設定檔。
在示範中,我們為 URI phpsysinfo-dev 以及其後續存取建立一個新的 hat。我們會使用設定公用程式將新增的項目委託給這個新的 hat。產生的 hat 會變成高安全性的容器以包含伺服器上的所有處理程序,而這些程序是 phpsysinfo-dev URI 傳送至 Apache 網頁伺服器時產生的。
在此示範中,我們會產生一個應用程式 phpsysinfo 的設定檔 (請參閱 http://phpsysinfo.sourceforge.net 以取得更多資訊)。假設 phpsysinfo-dev 已安裝在全新安裝 Novell AppArmor 中的 /srv/www/htdocs/phpsysinfo-dev/ 之下。
在安裝 phpsysinfo-dev 之後,您就可以準備將 hat 新增至 Apache 設定檔中。從 Novell AppArmor GUI 中選擇。
![]() |
在中,輸入 httpd2-prefork。
按一下。會開啟 視窗。
![]() |
在終端機視窗中輸入 rcapache2 restart 以重新啟動 Apache。
![]() | 注 |
|---|---|
重新啟動您正在建立設定檔的程式。 | |
在網頁瀏覽器視窗中開啟 http://localhost/phpsysinfo-dev/。瀏覽器將會顯示網路使用量和系統資訊。
![]() | 注 |
|---|---|
若您要確定伺服器已處理此要求,且不在瀏覽器中檢閱快取資料,您必須重新整理頁面。要這樣做,請按一下按鈕以確定 Apache 會處理 | |
按一下。Novell AppArmor 會啟動 logprof 工具以掃描在上一個步驟中取得的所有資訊。它也會開始提示您設定檔問題。
在示範中,logprof 會提示 或,因為其發現 phpsysinfo-dev URI 已被存取。選擇。
![]() |
按一下。
在上一個步驟中選擇 將會在設定檔中建立一個新的 hat,並指定與程序檔動作有關的後續問題都會新增至新建立的 hat 中,而不是此應用程式所預設的 hat。
在下一個畫面中,Novell AppArmor 會顯示程序檔所執行的外部程式。您可以指定程式的執行是否受到 phpsysinfo-dev hat (選擇 ) 及個別設定檔 (選擇 ) 的限制,或者不受到任何限制或不包含任何安全性設定檔 (選擇 )。在 選項的情況中,系統會為不存在設定檔的程式建立一個新設定檔。
![]() | 注 |
|---|---|
選擇 將會產生重大的安全性漏洞,因此必須謹慎進行。 | |
![]() |
剩餘的問題會提示您產生新的 hat 並將項目新增至設定檔及其 hat 中。節 3.3.1, "使用精靈新增設定檔" (↑Novell AppArmor 2.0 管理指南) 一節中詳細說明了將項目新增至設定檔的程序。
在回答所有的設定問題之後,按一下以儲存變更並結束精靈。
以下為 phpsyinfo-dev 的範例。
範例 5.1. phpsysinfo-dev Hat 範例
^phpsysinfo {
#include <program-chunks/base-files>
/bin/df ix,
/bin/bash ix,
/dev/tty rw,
/etc/SuSE-release r,
/etc/fstab r,
/etc/hosts r,
/etc/mtab r,
/proc/** r,
/sbin/lspci ix,
/srv/www/htdocs/sysinfo/** r,
/sys/bus/pci/devices r,
/sys/devices/** r,
/usr/bin/who ix,
/usr/share/pci.ids r,
/var/log/apache2/{access,error}_log w,
/var/run/utmp r,
}
![]() | 注 |
|---|---|
| |
當您使用對話方塊 (請參閱「節 3.3.3, "編輯設定檔" (↑Novell AppArmor 2.0 管理指南)」中的說明),或使用新增新的設定檔時 (請參閱「節 3.3.2, "手動新增至設定檔" (↑Novell AppArmor 2.0 管理指南)」中的說明),就有選項可以讓您將 hat (子設定檔) 新增至 Novell AppArmor 設定檔。
您可以從 視窗中新增 ChangeHat 子設定檔。
![]() |
![]() | 注 |
|---|---|
如需 Novell AppArmor 設定檔範例,請參閱 範例 5.1, "phpsysinfo-dev Hat 範例" (↑Novell AppArmor 2.0 管理指南)。 | |