Grsectory 配置、管理

Grsectory  配置

      使用grsecurity修補內核,內核源代碼存檔名爲linux-3.2.50.tar,匹配的grsecurity補丁grsecurity-2.9.1-3.2.50-201308052151.patch。 兩個文件都在同一目錄中。切換到root用戶並在下載文件的目錄中運行如下命令。 第一個命令解壓縮Linux源包,第二個命令將補丁應用於內核。 您可能須要使用首選的包管理工具安裝補丁程序。linux

# tar -xf linux-3.2.50.tar
# cd linux-3.2.50
# patch -p1 < ../grsecurity-2.9.1-3.2.50-201308052151.patch
內核配置
     內核源代碼包有一個通用配置文件,該文件無需任何重大修改便可運行。 發行版可能有本身的流程和工具來配置和構建內核,在這種狀況下,應該查閱相關文檔。 儘管如此,檢查選項並的硬件和當前設置相匹配。
使用默認配置做爲基礎配置內核,在/usr/src/linux-3.2.50目錄下,執行如下命令。
$ make menuconfig
     因爲缺乏軟件包和庫 - 按照錯誤消息進行指導。將啓動交互式內核配置菜單。 在3.x和2.6中,grsecurity選項位於安全選項:Grsecurity下。 能夠在Grsecurity和PaX配置選項頁面上在線查每一個選項及其對系統的影響的詳細說明,也可使用內核配置系統的內置幫助功能。 在啓用或禁用選項以前,請確保瞭解選項。 退出配置菜單後,能夠從新運行「make menuconfig」再次啓動它。

     建議你先「配置方法」選項設置爲「自動」,載配置「使用類型」和其餘選項以知足環境和需求。 能夠在「自定義配置」中微調全部grsecurity和PaX設置。正則表達式

啓用sysctl接口(Grsecurity»自定義配置到Sysctl支持)。 使你能夠更改grsecurity運行的選項,而無需從新編譯內核。 這是一個很是有用的功能,尤爲是當您第一次使用grsecurity時。 「配置方法 - 自動」默認啓用此功能。
一些審計選項會產生大量日誌消息,最明顯的是Exec和Chdir日誌記錄(分別爲GRKERNSEC_EXECLOG和GRKERNSEC_AUDIT_CHDIR)。 若是啓用其中任何一個,請確保正確配置日誌記錄系統以防止日誌氾濫。 注意檢查Grsecurity»自定義配置»日誌選項。

      啓用sysctl接口(Grsecurity»自定義配置到Sysctl支持)。 能夠更改grsecurity運行的選項,而無需從新編譯內核。 這是一個很是有用的功能,尤爲是當您第一次使用grsecurity時。 「配置方法 - 自動」默認啓用此功能。算法

      一些審計選項會產生大量日誌消息,最明顯的是Exec和Chdir日誌記錄(分別爲GRKERNSEC_EXECLOG和GRKERNSEC_AUDIT_CHDIR)。 若是啓用其中任何一個,請確保正確配置日誌記錄系統以防止日誌氾濫。 注意檢查Grsecurity»自定義配置»日誌選項。shell

編譯和安裝
在alipine系統下:注意確保你的gcc庫符合要求。
make  *.deb  -f
在編譯grsecurity修補內核補丁程序時,會看到一些差別。 其中一個差別出如今編譯結束時,可能相似於:
WARNING: modpost: Found 2820 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
這個 警告是無害的。 正如grsecurity郵件列表上的PaX團隊所描述的那樣:
the extra section mismatches are due to my changes, i explicitly
added detection for writeable function pointers which are potential
exploit targets, just to know how many of them there are. we've been
eliminating some of them already but this work will never finish.
as for what they are in general, a mismatch means an unwanted reference
from one section to another. say, accessing init code or data from
normal code/data is not good since init sections are freed up on boot,
so any reference to them must not exist from permanent sections.
從NVIDIA網站下載NVIDIA驅動程序.run文件。
從https://grsecurity.net/~spender/nvidia-drivers-352.09-pax.patch下載適用的NVIDIA驅動程序的PaX補丁
運行 sh <NVIDIA .run文件名> -x
cd`basename <NVIDIA .run文件的名稱> .run`
patch -p1 <../nvidia-drivers-352.09-pax.patch
經過運行./nvidia-installer安裝的驅動程序。

 Grsectory  管理編程

下載gradm和grsecurity以前的版本。 在本文檔中,壓縮包的名稱爲gradm-3.1-201503211320.tar.gz。 解壓縮包並經過執行如下命令切換到gradm目錄: 安全

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

$ cd gradm網絡

 PAM(Pluggable Authentication Modules )是由Sun提出的一種認證機制。它經過提供一些動態連接庫和一套統一的API,將系統提供的服務 和該服務的認證方式分開,使得系統管理員能夠靈活地根據須要給不一樣的服務配置不一樣的認證方式而無需更改服務程序,同時也便於向系 統中添加新的認證手段。app

Lex 是一種生成掃描器的工具。掃描器是一種識別文本中的詞彙模式的程序。 這些詞彙模式(或者常規表達式)在一種特殊的句子結構中定義,
Yacc 表明 Yet Another Compiler Compiler。 Yacc 的 GNU 版叫作 Bison。它是一種工具,將任何一種編程語言的全部語法翻譯成針對此種語言的 Yacc 語 法解析器。它用巴科斯範式(BNF, Backus Naur Form)來書寫。按照慣例,Yacc 文件有 .y 後綴。編譯行以下調用 Yacc 編譯器:
Flex 是 Flexible Box 的縮寫,意爲"彈性佈局",用來爲盒狀模型提供最大的靈活性。任何一個容器均可以指定爲 Flex 佈局。行內元素也可使用 Flex 佈局。
GNU bison是一個自由軟件,用於自動生成語法分析器程序,實際上可用於全部常見的操做系統。Bison把LALR形式的上下文無關文法描述轉換爲可作語法分析的C或C++程序。在新近版本中,Bison增長了對GLR語法分析算法的支持。GNU bison基本兼容Yacc,並作了一些改進。它通常與flex一塊兒使用。
注意:查看make的輸出。 確保在末尾附近沒有看到「沒法檢測PAM標頭,禁用PAM支持」的行。 若是這樣作,請安裝PAM頭文件並再次運行make命令。
要在沒有PAM支持的狀況下安裝gradm,請運行:
$ make nopam
最後, 用 root, run:
# make install
gradm和grlearn程序安裝到/ sbin。
建立目錄/ etc / grsec及其中的兩個文件(若是它們尚不存在):learn_config和policy。
將gradm的手冊頁安裝到/ usr / share / man / man8。(grlearn沒有手冊頁。它由gradm內部使用。)
注意第一次在系統上安裝gradm,則會要求提供RBAC系統的管理密碼。 選擇一個長密碼,從initscript【初始化】開始gradm)。 不要使用與root相同的密碼。
修改Makefile,更改任何二進制或手冊頁位置,
# 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文件使管理員可以指定學習系統應被視爲受保護資源的文件/目錄。學習系統將確保不管是否執行任何規則縮減,只有經過正常使用訪問這些受保護資源的進程纔會經過生成的策略授予訪問權限。此外,它將爲訪問受保護資源的進程建立新主題,建立授予這些進程額外保護的權限邊界。編程語言

完整的系統學習
使用以root身份運行gradm:
#gradm -F -L /etc/grsec/learning.logs
將啓用基於角色的訪問控制(RBAC)系統並啓動完整的系統學習。 gradm監視並記錄系統所作的事情。 用該日誌爲系統構建最小權限策略。運行和使用執行的應用程序次數。 由於學習模式使用基於閾值的系統來肯定什麼時候應該對文件進行訪問,或者是否應該將其提供給目錄。 若是在單個目錄中進行了四次或更屢次相似訪問(例如寫入/ tmp中的多個文件),則授予該目錄而不是單個文件的訪問權限。 這樣能夠減小擁有規則數量,並確保編譯完最終ACL後應用程序能夠正常工做。
啓用完整系統學習時,以管理員角色執行任何管理任務。
在啓用完整系統學習的同時執行管理任務,請使用如下命
#gradm -a admin
完成執行管理任務後,請記住退出shell或使用gradm -u從admin角色取消認證。
讓系統正常使用它在現實中獲得的,用gradm -D禁用RBAC系統。 禁用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
完成後,使用gradm -D禁用ACL系統(或者,使用gradm -a進入管理模式),並使用:
#gradm -L /etc/grsec/learning.logs -O / etc / grsec / policy
這會將新學習的ACL放在規則集的末尾。 只需刪除舊ACL,便可開始使用。
/ etc / grsec / learn_config 
此配置文件經過調整特定文件和目錄的學習算法來幫助學習過程。它接受如下形式的行:
<command> <pathname>
其中 <command>能夠是i nherit-learn,no-learn,inherit-no-learn,high-reduce-path,dont-reduce-path,protected-path,high-protected-path和always-reduce-path。分別是:繼承 - 學習,不學習和繼承 - 不學習等,會影響完整的系統學習,而其餘學習則適用於全部學習模式。至於含義去查看文檔。
inherit-learn將路徑名中包含的進程執行的每一個二進制文件的全部學習訪問權限,拋出給路徑名指定的主題中,以便更改指定路徑的學過程。這對於完整系統學習的狀況下的cron很是有用,所以最終以特權方式執行mv或rm的腳本,而不會致使根策略的全部狀況,都將特權授予mv或rm。
no-learn容許路徑內的進程執行正常系統使用容許的任何操做而不受限制。若是進程生成大量學習日誌,則最好在該進程上使用此命令並手動配置其策略。
inherit-no-learn結合了上述兩種狀況,使得指定路徑中的進程可以無限制地執行任何正常的系統操做,這些進程執行的任何二進制文件也是如此。
high-reduce-path修改了學習過程的啓發式,有利於減小對此路徑的訪問。
dont-reduce-path修改學習過程的啓發式,以便永遠不會減小對此路徑的訪問。
always-reduce-path修改學習過程的啓發式,以便指定的路徑始終將其中的全部文件和目錄減小到指定的路徑。
protected-path指定系統上被視爲重要資源的路徑。修改這些路徑之一的任何過程在學習過程當中都有本身的主題,從而促進了安全策略。
read-protected-path指定系統上包含敏感信息的路徑。讀取這些路徑之一的任何過程在學習過程當中都有本身的主題,從而促進了安全策略。
high-protected-path指定應該從全部進程中隱藏的路徑,可是直接訪問它的路徑。建議對此命令使用高度敏感的文件。
請注意,此配置文件中的路徑名不支持正則表達式。
相關文章
相關標籤/搜索