跳轉至內容

Grsecurity/管理實用程式

來自華夏公益教科書,開放世界開放書籍
Grsecurity
配置和安裝 grsecurity 管理實用程式 其他實用程式


Gradm,基於角色的訪問控制系統的管理實用程式,是一個功能強大的工具,可以解析您的 ACL(訪問控制列表),執行安全基本策略的強制執行,最佳化 ACL,以及處理學習日誌的解析,將它們與您的 ACL 集合並輸出最終的 ACL。

在您安裝之前gradm,引導到您的補丁 grsecurity 核心。您可以編譯gradm在您想要的任何核心中,但如果核心不支援 grsecurity,安裝將失敗。

如果您的 Linux 發行版提供現成的 grsecurity 核心包,它們很可能會提供一個包gradm也是。如果是這種情況,您應該考慮在編譯之前使用它gradm自己。

在編譯和安裝之前gradm,確保您在系統中安裝了以下應用程式:lexflexbyaccbison。如果您需要 可插拔身份驗證模組 (PAM) 支援,請安裝系統標頭檔案;包含它們的包很可能被稱為 libpam-dev 或類似名稱。

應該補充一點,如果您在預設的 Linux 核心上編譯 gradm,而沒有 grsecurity 支援,則編譯將失敗,並且只有在引導到新的啟用 grsecurity 的核心後才能進行編譯。

更改到您下載的目錄gradm並將 grsecurity 更新到更早的版本。在本檔案中,壓縮包的名稱為 gradm-3.1-201503211320.tar.gz。解壓縮包並透過執行以下命令更改到 gradm 目錄

$ tar xzf gradm-3.1-201503211320.tar.gz
$ cd gradm

要安裝gradm帶有 PAM 支援,以非 root 使用者身份執行

$ make

注意:檢視輸出make。確保您在末尾附近沒有看到一行說“無法檢測到 PAM 標頭檔案,正在停用 PAM 支援”。如果您看到,請安裝 PAM 標頭檔案並執行make命令再次。

要安裝gradm沒有 PAM 支援,執行

$ make nopam

最後,以 root 身份執行

# make install

安裝過程執行以下操作

  • 安裝gradmgrlearn程式到 /sbin
  • 建立一個目錄 /etc/grsec 並在其中建立兩個檔案(如果它們不存在):learn_configpolicy
  • 安裝gradm手冊頁/usr/share/man/man8
  • (grlearn沒有附帶手冊頁。它由內部使用gradm.)
  • 最後,也是最重要的是,如果這是您第一次安裝gradm在您的系統上,系統將要求您提供 RBAC 系統的管理密碼。選擇一個長密碼,但您要記住的密碼(尤其是如果您開始gradm從一個啟動指令碼)。不要使用與您的 root 密碼相同的密碼。

如果您需要更改任何二進位制檔案或手冊頁位置,請修改 Makefile

要顯示所有可用的命令列開關,請執行gradm --help.

# gradm --help
gradm 3.1
grsecurity RBAC administration and policy analysis utility

Usage: gradm [option] ... 

Examples:
	gradm -P
	gradm -F -L /etc/grsec/learning.logs -O /etc/grsec/policy
Options:
	-E, --enable	Enable the grsecurity RBAC system
	-D, --disable	Disable the grsecurity RBAC system
	-C, --check	Check RBAC policy for errors
	-S, --status	Check status of RBAC system
	-F, --fulllearn Enable full system learning
	-P [rolename], --passwd
			Create password for RBAC administration
			or a special role
	-R, --reload	Reload the RBAC system while in admin mode
                        Reloading will happen atomically, preserving
                        special roles and inherited subjects
	-r, --oldreload Reload the RBAC system using the old method that
                        drops existing special roles and inherited subjects
	-L <filename>, --learn
			Specify the pathname for learning logs
	-O <filename|directory>, --output
			Specify where to place policies generated from
                        learning mode.  Should be a directory only if
                        "split-roles" is specified in learn_config and
                        full-learning is used.
	-M <filename|uid>, --modsegv
			Remove a ban on a specific file or UID
	-a <rolename> , --auth
			Authenticates to a special role that requires auth
	-u, --unauth    Remove yourself from your current special role
	-n <rolename> , --noauth
			Transitions to a special role that doesn't
                        require authentication
	-p <rolename> , --pamauth
			Authenticates to a special role through PAM
	-V, --verbose   Display verbose policy statistics when enabling system
	-h, --help	Display this help
	-v, --version	Display version and GPLv2 license information

學習模式

[編輯 | 編輯原始碼]

學習模式不同於其他安全系統中發現的任何模式。Grsecurity 的學習模式可以在每個主體或每個角色的基礎上使用,也可以在系統範圍內使用。當在單個程序或角色上使用學習模式時,系統的其餘部分將保持策略定義的保護。學習模式可以學習 RBAC 系統支援的所有內容:檔案、功能、資源、哪些 IP 地址使用每個角色以及套接字使用情況。學習系統執行智慧的檔案系統和網路訪問減少,以減少策略大小,提高可讀性,並減少以後所需的手動調整量。此外,學習系統強制執行可配置的安全基線。/etc/grsec/learn_config 檔案使管理員能夠指定學習系統應將哪些檔案/目錄視為受保護資源。學習系統將確保,無論進行任何規則減少,只有透過正常使用訪問這些受保護資源的程序才能透過生成的策略獲得訪問許可權。此外,它將為訪問受保護資源的程序建立新主體,建立特權邊界,為這些程序提供額外的保護。

全系統學習

[編輯 | 編輯原始碼]

要啟用全系統學習,請執行gradmroot 身份使用以下選項

# gradm -F -L /etc/grsec/learning.logs

這將啟用 基於角色的訪問控制 (RBAC) 系統並啟動全系統學習。也就是說,gradm將監視和記錄您的系統執行的操作。然後可以使用日誌為您的系統構建最小特權策略。

執行並使用您通常使用的應用程式幾次。這很重要,因為學習模式使用基於閾值的系統來確定何時應授予檔案訪問許可權或是否應授予目錄訪問許可權。如果在一個目錄中進行四次或更多次類似的訪問(例如寫入 /tmp 中的多個檔案),則會授予該目錄的訪問許可權,而不是授予各個檔案的訪問許可權。這減少了您擁有的規則數量,並確保在最終的 ACL 編譯後應用程式能夠正常工作。

Warning 在啟用全系統學習時,不要在管理員角色之外執行任何管理任務。

要在啟用全系統學習時執行管理任務,請使用以下命令驗證管理員角色

# gradm -a admin

記住退出 shell 或使用以下命令從管理員角色登出gradm -u完成執行管理任務後。

一旦您覺得您已經讓系統獲得了在現實生活中會遇到的正常使用情況,請使用以下命令停用 RBAC 系統gradm -D。停用 RBAC 是一個必要的步驟,因為它強制學習守護程序將其緩衝區重新整理到磁碟。使用在停用 RBAC 之前獲得的學習日誌將產生不完整的結果。停用 RBAC 後,執行

# gradm -F -L /etc/grsec/learning.logs -O /etc/grsec/policy

這將把新學習到的 ACL 放置到您的規則集的末尾。您可以透過啟用 grsecurity(執行gradm -E),並確保所有應用程式都按預期方式執行。

程序和角色學習

[編輯 | 編輯原始碼]

使用這種學習模式非常簡單。您要做的就是將“l”(小寫字母 L,而不是數字 1)新增到要為其啟用學習的程序的主體模式中。要學習給定二進位制檔案所需的所有訪問許可權,該二進位制檔案尚未建立策略,請新增以下主體

subject /path/of/binary ol
    / h
    -CAP_ALL
    connect disabled
    bind disabled

要學習給定角色,請將“l”新增到角色模式中。對於這兩者,要啟用學習,請使用以下命令啟用系統

# gradm -L /etc/grsec/learning.logs -E

完成後,使用以下命令停用 ACL 系統gradm -D(或者,使用以下命令進入管理員模式gradm -a),並使用

# gradm -L /etc/grsec/learning.logs -O /etc/grsec/policy

這將把新學習到的 ACL 放置到您的規則集的末尾。只需刪除舊的 ACL,您就可以開始了。

/etc/grsec/learn_config

[編輯 | 編輯原始碼]

此配置檔案透過調整特定檔案和目錄的學習演算法來幫助學習過程。它接受以下形式的行

<command> <pathname>

其中<command>可以是 inherit-learnno-learninherit-no-learnhigh-reduce-pathdont-reduce-pathprotected-pathhigh-protected-pathalways-reduce-pathinherit-learnno-learninherit-no-learn 僅影響全系統學習,而其他選項則在所有學習模式下都有效。

inherit-learn 透過將路徑名中包含的程序執行的每個二進位制檔案的學習訪問許可權都拋到路徑名指定的主體中,來更改指定路徑的學習過程。這對cron在全系統學習的情況下,這樣,最終執行mvrm具有特權的指令碼不會導致 root 策略在所有情況下都授予該特權mvrm

no-learn 允許路徑內的程序在不受限制的情況下執行正常系統使用允許的任何操作。如果程序生成大量的學習日誌,最好對該程序使用此命令並手動配置其策略。

inherit-no-learn 結合了以上兩種情況,使指定路徑內的程序能夠不受限制地執行任何正常的系統操作,以及這些程序執行的任何二進位制檔案。

high-reduce-path 修改了學習過程的啟發式方法,使其更傾向於減少對該路徑的訪問。

dont-reduce-path 修改了學習過程的啟發式方法,使其永遠不會減少對該路徑的訪問。

always-reduce-path 修改了學習過程的啟發式方法,使指定的路徑中所有檔案和目錄都將被縮減到指定的路徑。

protected-path 指定系統上的一個路徑,該路徑被視為重要的資源。任何修改這些路徑之一的程序都將在學習過程中獲得自己的主題,從而促進安全的策略。

read-protected-path 指定系統上的一個路徑,該路徑包含敏感資訊。任何讀取這些路徑之一的程序都將在學習過程中獲得自己的主題,從而促進安全的策略。

high-protected-path 指定一個應隱藏於所有程序的路徑,但直接訪問它的程序除外。建議將高度敏感的檔案用於此命令。

請注意,此配置檔案不支援路徑名中的正則表示式。

下一頁: 其他工具 | 上一頁: 配置和安裝 Grsecurity
首頁: Grsecurity
華夏公益教科書