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）”、“堆栈溢出保护（stack smashing protection）”和“编译时缓冲区检查（compile-time buffer checks）”.
 * 启用 Linux 内核的 PaX 扩展，它提供了象“地址空间布局随机化（address space layout randomization）”和“非执行内存（non-executable memory）”这样的额外保护措施.
 * 启用 Linux 内核的 grSecurity 扩展，包括额外的 chroot 限制、额外的审计、进程限制等等...
 * 启用 Linux 内核的 SELinux 扩展，它提供了一个强制性访问控制系统来增强标准 Linux 的权限限制.
 * 启用系统完整性（Integrity）保障相关的技术，如“完整性检测体系（IMA, Integrity Measurement Architecture）”，可以让系统在防篡改方面更灵活.


 * Enabling specific options in the toolchain (compiler, linker ...) such as forcing position-independent executables (PIE), stack smashing protection and compile-time buffer checks.
 * Enabling PaX extensions in the Linux kernel, which offer additional protection measures like address space layout randomization and non-executable memory.
 * Enabling grSecurity extensions in the Linux kernel, including additional chroot restrictions, additional auditing, process restrictions, etc..
 * Enabling SELinux extensions in the Linux kernel, which offers a Mandatory Access Control system enhancing the standard Linux permission restrictions.
 * Enabling Integrity related technologies, such as Integrity Measurement Architecture, for making systems resilient against tampering

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

切换到“加固的配置文件（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. 最后，让你的新配置生效：

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

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

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

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

Hardened Gentoo/Grsecurity chroot
如果你想 chroot 到一个拷贝的环境，其中 CONFIG_GRKERNSEC_CHROOT 开启了的话，你必须使用 cd grub，并把 root(cd) kernel(cd) initrd(cd) 设置中的 (cd) 换成 (hdx,y).

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

每个包单独的加固设置
修改 GCC 配置来处理特定的软件包是一件很痛苦的事情. 避免这种情况的一个方法是通过使用 package.env 来设置针对单个软件包的 C(XX)FLAGS. 创建文件 并添加以下内容：

允许关闭 PIE, 创建 并添加如下内容:

最后，添加你想关闭 PIE 或者 SSP 的软件包到 和相关的 ，下面是针对  的一个范例：

另请参阅
查看下列资源以获取更多信息：
 * Gentoo Hardened Project
 * Gentoo Hardened SELinux Project
 * Project:Hardened/Grsecurity2_Quickstart
 * Project:Hardened/PaX_Quickstart


 * Gentoo Hardened SELinux Project
 * Project:Hardened/Grsecurity2_Quickstart
 * Project:Hardened/PaX_Quickstart

外部资源

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