Hardened Gentoo/zh-cn

"Gentoo Hardened" 是一个 Gentoo 项目，它在现有 Gentoo Linux 安装上提供了多种额外的安全服务. 虽然这些服务可以分别单独使用，但是 "Gentoo Hardened" 启用了 toolchain 中几个可以降低被攻击风险的选项，支持 PaX, grSecurity, SELinux, TPE 等等功能.

无论你是运行一台面向互联网的服务器还是一台灵活的工作站，当你面对多种威胁的时候你会更愿意加固你的系统，而不是仅仅自动升级最新的安全补丁. 加固(Hardening) 系统意味着你会采取额外的措施来应对攻击和其他风险，这些措施通常是在系统上执行的一系列活动的组合.

"Gentoo Hardened" 中的几个项目都很活跃，这些项目可以帮助你进一步加固你的 Gentoo 系统，通过：
 * 启用 toolchain（编译器，链接器 ...）中的特定选项，如：“强制生成位置无关的可执行文件（PIE, position-independent executables）”、“堆栈溢出保护”和“编译时缓冲区检查”.
 * 启用 Linux 内核的 PaX 扩展，它提供了象“地址空间布局随机化”和“非执行内存”这样的额外保护措施.
 * 启用 Linux 内核的 grSecurity 扩展，包括“额外的 chroot 限制”、“额外的审计”、“进程限制”等等...
 * 启用 Linux 内核的 SELinux 扩展，它提供了一个强制性访问控制系统来增强标准 Linux 的权限限制.
 * 启用系统完整性（Integrity）保障相关的技术，如“完整性检测体系（IMA, Integrity Measurement Architecture）”，可以让系统在防篡改方面更灵活.

当然，这还包括了必要的用户工具来管理这些扩展.

切换到“Hardened Profile"
选择一个“hardened profile”, 这样包管理将会以“加固模式”来运行.

通过选择“hardened profile”，某些包管理设置（masks, USE标记等等）会成为系统默认设置，这些设置会应用在很多包上面，包括 toolchain. toolchain 用于建立/编译你的程序，包括：GCC（GNU Compiler Collection）、binutils（链接器等）和 glibc（GNU C library）. 通过重新编译安装 toolchain，这些新的默认设置将会应用到 toolchain 上面，这会让所有后面的“包编译”都以加固模式来完成.

上面的命令重建了 GCC，现在可以用它来编译出已加固的软件. 确定 GCC 启用了“hardened”选项.

在上面的输出样例中，已加固的 GCC 是没有后缀的那个. 如果你想关闭 PIE 或者 SSP 功能，选择相应的 hardenedno(pie|ssp) 或者 hardenednopiessp. vanilla 当然就是关闭了加固功能的 GCC. 最后使你的新 profile 设置生效：

如果你使用“预链接”的包，删除它，因为它和“hardened profile”不兼容.

现在你用新的加固后的 toolchain 来重新安装所有的包.

安装已加固的内核源代码（hardened kernel sources），这样内核将以加固模式 来管理你运行中的系统（特别是使用 PaX）:

现在配置/编译源代码并将内核添加到你的启动管理器（如：GRUB）.

Hardened Gentoo/Grsecurity chroot
If you want to chroot to a copied environment where the CONFIG_GRKERNSEC_CHROOT is enabled you must use the cd grub and change the root(cd) kernel(cd) initrd(cd) setting to from (cd) to (hdx,y).

现在你可以安装 grub 环境了.

每个包单独的加固设置
Changing the GCC profile to deal with specific packages can be a pain. A way to avoid this is to set per-package C(XX)FLAGS using package.env. Create the file and add to that:

To allow for disabling PIE, create and add to :

Finally add the package you want to disable either PIE or SSP for to and the relevant, for this example  is used here:

External resources

 * http://www.rockfloat.com/howto/gentoo-hardened.html#kernel