Grsecurity/配置和安裝 grsecurity
以下說明將指導您完成使用 grsecurity 打補丁 Linux 核心、配置其功能並編譯和安裝打過補丁的核心的過程。
在本檔案中,核心原始碼存檔名為linux-3.2.50.tar,匹配的 grsecurity 補丁名為grsecurity-2.9.1-3.2.50-201308052151.patch。這兩個檔案位於同一個目錄中。
切換到 root 使用者,並在您下載檔案的目錄中執行以下命令。第一個命令解壓縮 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 » 自定義配置 » 日誌記錄選項。
要編譯核心並構建 Debian 包(deb),請在核心原始碼目錄中執行以下命令。Ubuntu 使用者應該參考Ubuntu 社群頁面並決定是否希望在構建時使用 ubuntu-package 覆蓋目錄。有關從 git 檢出在 Maverick 上構建的資訊,請參閱如何編譯 Ubuntu 10.10 核心
# fakeroot make deb-pkg
要安裝新建立的 Debian 包,請執行
# cd .. # dpkg -i *.deb
有關在 Debian 中構建核心的更多資訊,請參閱Debian Linux 核心手冊。
- Gentoo Linux:Gentoo Linux(x86)手冊和Hardened Gentoo
- CentOS:http://wiki.centos.org/HowTos/Custom_Kernel
- Fedora(8.0 版及更高版本):http://fedoraproject.org/wiki/Docs/CustomKernel
由於您正在編譯使用 grsecurity 打過補丁的核心,因此您會注意到一些差異。其中一個差異出現在編譯結束時,可能類似於
WARNING: modpost: Found 2820 section mismatch(es). To see full details build your kernel with: 'make CONFIG_DEBUG_SECTION_MISMATCH=y'
此警告是無害的。正如 PaX 團隊在 grsecurity 郵件列表中所述
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.
在編譯使用 grsecurity 打過補丁的核心時,您還會注意到編譯器發出的其他警告。這是由於在構建過程中添加了其他警告標誌以幫助發現特定型別的錯誤。您可以忽略這些其他警告。
如果您在桌面上使用 grsecurity 並計劃使用專有 NVIDIA 驅動程式,則需要對其進行打補丁才能使其與 grsecurity 正確配合。為此,請按照以下步驟操作
- 從 NVIDIA 網站下載 NVIDIA 驅動程式 .run 檔案。
- 從https://grsecurity.net/~spender/nvidia-drivers-352.09-pax.patch下載 PaX 的 NVIDIA 驅動程式補丁
- 執行 sh <NVIDIA .run 檔名> -x
- cd `basename <NVIDIA .run 檔名> .run`
- patch -p1 < ../nvidia-drivers-352.09-pax.patch
- 透過執行 ./nvidia-installer 安裝驅動程式