4.4. 利用 AppArmor 確認權限

許多的安全性弱點通常源自於可信賴的程式。由於可信賴程式所具備的權限通常會成為一些攻擊者的目標,且一旦程式中出現漏洞而讓攻擊者趁機取得權限時,該程式將無法再獲得信賴。

NovellŽAppArmor 是一種應用程式安全性解決方案,特別針對不受信任的程式設計提供最低的權限限制。AppArmor 可讓管理員針對該應用程式開發一個安全性設定檔,指定程式可執行的作業領域,該設定檔會列出程式可存取的檔案以及可執行的作業。

若要有效提升電腦的安全性,則必須減少需調解權限的程式數,然後設定程式的最高安全性。 有了 Novell AppArmor,您只須建立環境中遭受攻擊程式的設定檔,就能大幅減少保全電腦所需的工作量。AppArmor 設定檔可強制執行原則,確保程式只會執行必要的作業。

管理員只需要關注容易受到攻擊的應用程式,並針對這些程式建立設定檔。因此,只需要建立和維護 AppArmor 設定檔集,並監控原則違反情形或 AppArmor 報告機制所記錄的例外,就足以達到保護系統的目的。

建立 AppArmor 設定檔以限制應用程式是一種簡單且方便的方法。與 AppArmor 一起提供的數種工具可協助建立設定檔。AppArmor 不會要求您做任何程式設計或程序檔處理。管理員唯一需要做的就是決定最嚴格的存取原則,以及每個需強化的應用程式執行權限。

只有當軟體組態或想要的活動範圍變更時,您才需要更新或修改應用程式設定檔。AppArmor 可提供直覺式工具來處理設定檔更新或修改。

使用者將完全不會注意到 AppArmor 的存在。其將以"幕後"的方式執行且不需要任何使用者互動。AppArmor 可大幅減低對效能的影響。如果 AppArmor 設定檔並未涵蓋一些應用程式活動,或者當 禁止執行一些應用程式活動時,管理員只需要調整此應用程式的設定檔以涵蓋這一類的行為。

本指南將概略說明 AppArmor 所需執行的基本工作以有效強化系統。如需更深入詳盡的資訊,請參閱 Novell AppArmor 2.0 管理指南

4.4.1. 安裝 Novell AppArmor

安裝 GNOME 或 KDE 桌面選擇的使用者將會略過這部份,因為 Novell AppArmor 已依預設成為這些選擇的一部份來安裝。

如果您並未安裝這些桌面或者是在完全以文字為基礎的環境中執行時,請執行以下步驟來使用 YaST 套件管理員安裝必要的套件。

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

  2. 在「YaST 控制中心」中,選擇軟體+軟體管理

  3. 使用 YaST 的搜尋功能 (關鍵字「AppArmor」) 來安裝以下套件:

    • apparmor-parser

    • libapparmor

    • apparmor-docs

    • yast2-apparmor

    • apparmor-profiles

    • apparmor-utils

  4. 選擇這些要安裝的套件,然後選擇接受。YaST 會解析套件相依性並安裝您所需要的所有套件。

  5. 在 YaST 完成系統組態的更新之後,選擇完成離開套件管理員。

4.4.2. 啟用 Novell AppArmor

在安裝 Novell AppArmor 之後,請確實啟用它,以確定當系統開機時都它都會啟動。使用 YaST 系統服務 (Runlevel) 模組執行此工作:

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

  2. 開啟系統+系統服務 (Runlevel)

  3. 在顯示的服務清單中,選擇 apparmor。請參閱 圖形 4.3, "使用 YaST 啟用 Novell AppArmor "

  4. 按一下啟用以永久啟用 AppArmor。

  5. 按一下完成以接受設定。

圖形 4.3. 使用 YaST 啟用 Novell AppArmor

使用 YaST 啟用 Novell AppArmor

使用 YaST Runlevel 工具將永久啟用服務,這些設定在系統重新開機後會繼續存在。若要暫時啟用 AppArmor —僅適用於一個工作階段期間—請執行下列步驟:

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

  2. 啟動 Novell AppArmor+AppArmor 控制台

  3. 按一下 Configure+Enable+OK,啟用將 AppArmor 狀態 設定為

  4. 選擇完成 套用您的設定值。

4.4.3. 設定應用程式入門

謹慎考慮下列要點,以在系統上準備一個成功的 Novell AppArmor 部署:

  1. 決定要設定的應用程式。請參閱 節 4.4.3.1, "選擇要建立設定檔的應用程式" 以深入了解相關資訊。

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

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

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

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

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

網路代辦程式

程式 (伺服器和用戶端) 中都會有一些開啟的網路連接埠,而網路代理程式就是一種可回應這些網路連接埠的伺服器程式。使用者用戶端 (例如郵件用戶端和網頁瀏覽器) 也具備這些網路連接埠和調解權限。

網頁應用程式

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

Cron 工作

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

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

範例 4.1. 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]更多資訊

如需更多關於選擇正確應用程式以建立設定檔的資訊,請參閱選擇要以免疫保護的程式章節 (Novell AppArmor 2.0 管理指南)。

4.4.3.2. 建立與修改設定檔

SUSE Linux 平台的 Novell AppArmor 中也為最重要的應用程式提供了預先設定的設定檔集。 除此之外,您也可以使用 AppArmor 來為 /etc/apparmor/README.profiles 中定義的應用程式組建立自己的設定檔。

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

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

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

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

    或者

    執行 YaST+Novell AppArmor+新增設定檔精靈,並指定應用成的完整路徑以建立設定檔。

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

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

  3. 讓 AppArmor 分析 步驟 2 中產生的記錄檔案。請在 genprof 中鍵入 S 來執行。

    或者

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

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

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

    如果您啟動 genprof 的應用程式中,有個現有的設定檔正處於 complain 模式,則此設定檔在結束此學習循環之後將保持在 learning 模式中。如需更多關於變更設定檔模式的資訊,請參閱 Complain 或 Learning 模式小節 (第 3 章,建立 Novell AppArmor 設定檔Novell AppArmor 2.0 管理指南) 和 Enforce 模式小節 (第 3 章,建立 Novell AppArmor 設定檔Novell AppArmor 2.0 管理指南) 。

針對受限制之應用程式,執行每項所需工作來測試設定檔設定。 正常情況下,受限制程式會很順暢地執行,您完全感覺不到 AppArmor 活動。 不過,當您發現應用程式出現一些不正常的行為時,請檢查系統記錄並查看 AppArmor 對於應用程式的限制是否過當。在 /var/log/messages 中尋找適當的記錄,或執行 dmesg

若出現任何與以下範例相似的輸出,則表示 AppArmor 對應用程式的限制過當:

AppArmor: REJECTING w access to /var/run/nscd/socket (traceroute(2050) profile
/usr/sbin/traceroute active /usr/sbin/traceroute)

若要調整設定檔,請依照上方所述再次執行新增設定檔精靈,並讓其分析關於此特定應用程式的記錄訊息。在 YaST 提示時決定存取權限或限制。

[Tip]更多資訊

如需關於設定檔建立和修改的詳細資訊,請參考建立 Novell AppArmor 設定檔章節 (Novell AppArmor 2.0 管理指南)。

4.4.3.3. 設定 Novell AppArmor 事件通知和報告

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

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

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

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

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

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

    [Note]

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

  5. 選擇 OK+Finish 離開此對話方塊來套用設定。

設定 Novell AppArmor 報告。透過這些報告,您可以閱讀記錄檔案中所報告的重要 Novell AppArmor 安全性事件,而不需要手動切換只適用於 logprof 工具的繁瑣訊息。您可以依照日期範圍或程式名稱進行篩選,以縮減報告的大小。

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

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

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

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

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

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

    或者

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

[Tip]更多資訊

如需更多關於在 Novell AppArmor 中設定事件通知的資訊,請參閱「設定事件通知」小節 (第 4 章,管理已建立設定檔的應用程式Novell AppArmor 2.0 管理指南)。您可以在「報告」小節 (第 4 章,管理已建立設定檔的應用程式Novell AppArmor 2.0 管理指南) 中找到更多關於報告組態的資訊。

4.4.3.4. 更新設定檔

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

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

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

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

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

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

[Tip]更多資訊

如需更多關於從系統記錄更新設定檔的資訊,請參考「從 Syslog 項目更新設定檔」小節 (第 3 章建立 Novell AppArmor 設定檔Novell AppArmor 2.0 管理指南)。