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 安装驱动程序