設定應用程式入門

在系統上準備一個成功的 Novell AppArmor 部署,並謹慎考慮以下項目:

  1. 決定要設定的應用程式。請參閱第 48.3.1 節「選擇要建立設定檔的應用程式」以深入瞭解相關資訊。

  2. 依照 第 48.3.2 節「建立與修改設定檔」 中概述的說明建立需要的設定檔。檢查結果並視需要調整設定檔。

  3. 執行 AppArmor 報告以追蹤系統上發生的問題並處理安全性事件。請參閱 第 48.3.3 節「設定 Novell AppArmor 事件通知報告」

  4. 當環境改變,或者當您需要回應 AppArmor 報告工具所記錄的安全性事件時,請更新設定檔。請參閱 第 48.3.4 節「更新設定檔」

選擇要建立設定檔的應用程式

您只需要保護容易在特殊設定中遭受攻擊的程式,因此只需使用實際執行的應用程式設定檔。請使用以下的清單來決定最有可能的選項:

網路代辦程式

程式 (伺服器和用戶端) 具有開啟的網路埠。使用者用戶端 (如郵件用戶端和網頁瀏覽器) 擁有調解權限。這些程式執行時具有寫入使用者主目錄的權限,而且它們所處理的輸入來自有潛在風險的遠端來源,例如具潛在風險的網站和以電子郵件傳遞的惡意程式碼。

Web 應用程式

您可以透過網頁瀏覽器來呼叫 CGI Perl 程序檔、PHP 網頁和其他更複雜的網頁應用程式。

Cron 工作

cron 精靈定期執行的程式會從各種來源讀取輸入。

若想知道目前有哪些程序透過開啟的網路連接埠執行,而且需要設定檔來加以限制時,請以 root 身份登入,執行 aa-unconfined 指令。

範例 48.1. aa-unconfined 的輸出

19848 /usr/sbin/cupsd not confined
19887 /usr/sbin/sshd not confined
19947 /usr/lib/postfix/master not confined
29205 /usr/sbin/sshd confined by '/usr/sbin/sshd (enforce)'

以上範例中每個標示 not confined 的程序可能都需要自定設定檔來加以限制。標示 confined by 的程序則已受到 AppArmor 的保護。

[Tip]如需更多資訊

如需更多關於選擇正確應用程式以建立設定檔的資訊,請參閱第 1.2 節「Determining Programs to Immunize」 (第 1 章「Immunizing Programs」, ↑Novell AppArmor Administration Guide)。

建立與修改設定檔

SUSE Linux Enterprise 平台的 Novell AppArmor 中也提供了預先設定的設定檔集,適用於大多數的重要應用程式。此外,您也可以使用 AppArmor 來為任何應用程式組建立您自己的設定檔。

共有兩種管理設定檔的方法。一種是使用 YaST Novell AppArmor 模組所提供的圖形前端,另一種是使用 Novell AppArmor 套件本身所提供的指令行工具。基本上兩種方法的運作方式都相同。

依照第 48.3.1 節「選擇要建立設定檔的應用程式」中的說明執行 aa-unconfined,以辨識需要設定檔使其在安全模式中執行的應用程式清單。

請為每個應用程式執行以下步驟來建立設定檔:

  1. root 身份執行 aa-genprof programname 來讓 AppArmor 建立應用程式的設定檔大綱。

    執行YaST+Novell AppArmor+新增設定檔精靈,並指定要建立設定檔的應用程式完整路徑,進而建立基本設定檔的大綱。

    系統會列出基本設定檔,並將 AppArmor 置於學習模式,這表示它會記錄您執行的任何程式活動,但還不會進行任何限制。

  2. 執行完整的應用程式動作讓 AppArmor 能夠充分瞭解這些活動的運作。

  3. 在 aa-genprof 中輸入 s,讓 AppArmor 分析步驟 2中產生的記錄檔案。

    新增設定檔精靈中,按一下掃描 AppArmor 事件的系統記錄,並依照精靈提供的指示完成設定檔,來分析記錄。

    AppArmor 會掃描在應用程式執行期間所進行的記錄,並要求您為每個記錄的事件設定存取權限。為每個檔案進行設定或使用 globbing。

  4. 視您應用程式的複雜度而定,可能有必要重複執行步驟 2步驟 3。對應用程式進行限制,讓它在限制的條件下執行,並處理所有記錄事件。若要適當地限制應用程式功能的整體範圍,您可能需要時常重複執行這項程序。

  5. 在設定所有的存取權限之後,您的設定檔會被設為 enforce 模式。系統將套用此設定檔,且 AppArmor 會根據剛才建立的設定檔來限制應用程式。

    如果您啟動 aa-genprof 的應用程式中,有個現有的設定檔正處於 complain 模式,則此設定檔在結束此學習循環之後將保持在學習模式。如需更多關於變更設定檔模式的資訊,請參閱第 4.6.3.2 節「aa-complain—Entering Complain or Learning Mode」 (第 4 章「Building Profiles from the Command Line」, ↑Novell AppArmor Administration Guide)和第 4.6.3.3 節「aa-enforce—Entering Enforce Mode」 (第 4 章「Building Profiles from the Command Line」, ↑Novell AppArmor Administration Guide)。

針對受限制之應用程式,執行每項所需任務來測試設定檔設定。正常情況下,封閉程式的執行會相當流暢,而您完全感覺不到 AppArmor 的活動。不過,當您發現應用程式出現一些不正常的行為時,請檢查系統記錄並查看 AppArmor 對於應用程式的限制是否過當。依系統使用的記錄機制而定,您可以在幾個位置尋找 AppArmor 記錄項目:

/var/log/audit/audit.log

如果已安裝 audit 套件,而且 auditd 正在執行中,則 AppArmor 事件會記錄在下列位置:

type=APPARMOR msg=audit(1140325305.502:1407): REJECTING w access to
/usr/lib/firefox/update.test (firefox-bin(9469) profile
/usr/lib/firefox/firefox-bin active /usr/lib/firefox/firefox-bin)
/var/log/messages

如果未使用 auditd,AppArmor 事件會記錄在 /var/log/messages 底下的標準系統記錄中。項目範例應該看起來如下:

Feb 22 18:29:14 dhcp-81 klogd: audit(1140661749.146:3): REJECTING w access
to /dev/console (mdnsd(3239) profile /usr/sbin/mdnsd active /usr/sbin/mdnsd)
dmesg

如果 auditd 不在執行中,則也可以使用 dmesg 指令檢查 AppArmor 事件:

audit(1140661749.146:3): REJECTING w access to /dev/console (mdnsd(3239)
profile /usr/sbin/mdnsd active /usr/sbin/mdnsd)

若要調整設定檔,請依步驟 3所述,重新分析有關此應用程式的記錄訊息。在出現提示時,決定存取權限或限制。

[Tip]如需更多資訊

如需建立和修改設定檔的詳細資訊,請參閱第 2 章「Profile Components and Syntax」 (↑Novell AppArmor Administration Guide)、第 3 章「Building and Managing Profiles with YaST」 (↑Novell AppArmor Administration Guide)和第 4 章「Building Profiles from the Command Line」 (↑Novell AppArmor Administration Guide)。

設定 Novell AppArmor 事件通知報告

您可以在 Novell AppArmor 中設定事件通知以檢閱安全性事件。事件通知是一種 Novell AppArmor 功能,可通知指定的電子郵件收件者何時會發生系統化 Novell AppArmor 活動 (針對選擇的嚴重程度)。您目前可在 YaST 介面中使用此功能。

若要在 YaST 中設定事件通知,請執行下列步驟:

  1. 確認您可在系統中執行郵件伺服器以傳送事件通知。

  2. root 身份登入並啟動 YaST。然後選擇Novell AppArmor+AppArmor 控制台)。

  3. 啟用安全性事件通知中,選取設定

  4. 為每種記錄類型 (精簡摘要詳細) 設定報告頻率,然後輸入應接收報告的電子郵件位址並決定要記錄的事件嚴重程度。若要在事件報告中包含未知的事件,請勾選包含未知嚴重程度事件

    [Note]選取要記錄的事件

    除非您對於 AppArmor 的事件分類非常熟悉,否則請選擇所有安全性層級的事件通知。

  5. 選擇確定+完成離開此對話方塊來套用設定。

透過 Novell AppArmor 報告,您可以閱讀記錄中所報告的重要 Novell AppArmor 安全性事件,而不需要手動切換只有 aa-logprof 工具才需要的繁瑣訊息。您可以依照日期範圍或程式名稱進行過濾,以縮減報告的大小。

若要設定 AppArmor 報告,請執行下列步驟:

  1. root 身份登入並啟動 YaST。選取Novell AppArmor+AppArmor 報告

  2. 執行安全性摘要應用程式稽核安全性事件報告中選取要檢查或設定的報告類型。

  3. 選取編輯並提供要求的資料,來編輯報告產生頻率、電子郵件位址、輸出格式和報告的位置。

  4. 若要執行已選類型的報告,請按一下立即執行

  5. 選取檢視歸檔並指定報告類型來瀏覽該類型的歸檔報告。

    刪除不需要的報告或新增報告。

[Tip]如需更多資訊

如需在 Novell AppArmor 中設定事件通知的詳細資訊,請參閱第 6.2 節「Configuring Security Event Notification」 (第 6 章「Managing Profiled Applications」, ↑Novell AppArmor Administration Guide)。如需更多有關報告組態的詳細資訊,請參閱第 6.3 節「Configuring Reports」 (第 6 章「Managing Profiled Applications」, ↑Novell AppArmor Administration Guide)。

更新設定檔

軟體和系統組態會經常變更。因此,AppArmor 的設定檔設定可能得不時進行微調。AppArmor 會檢查系統日誌以查看是否有違反原則或其他的 AppArmor 事件,並讓您隨之調整設定檔設定。您也可以使用更新設定檔精靈來處理任何設定檔定義以外的應用程式行為。

若要更新設定檔集,請執行下列步驟:

  1. root 身份登入並啟動 YaST。

  2. 啟動Novell AppArmor+更新設定檔精靈

  3. 對任何資源或任何在提示時所記錄的執行檔,調整存取或執行權限。

  4. 在回答所有問題後離開 YaST。您的變更會套用至對應的設定檔。

[Tip]如需更多資訊

如需有關從系統記錄中更新設定檔的詳細資訊,請參閱第 3.5 節「Updating Profiles from Log Entries」 (第 3 章「Building and Managing Profiles with YaST」, ↑Novell AppArmor Administration Guide)。