Grsecurity/概述
grsecurity 是一组针对 补丁 Linux 内核,重点在于增强安全性。它通常应用于 Web 服务器和从不受信任的位置接受远程连接的系统,例如向用户提供 Shell 访问 的系统。
grsecurity 在 GNU 通用公共许可证 下发布,是 自由软件。
grsecurity 的开发始于 2001 年 2 月,作为 Openwall 项目 对 Linux 2.4 的安全增强补丁的移植。grsecurity 的第一个版本是针对 Linux 2.4.1 的。
grsecurity 中捆绑的一个主要组件是 PaX,它是一个补丁,除了其他功能外,它将数据内存(例如 堆栈 上的内存)标记为不可执行,而将程序内存标记为不可写。其目的是防止可执行内存页面被注入的机器代码覆盖,从而防止利用许多类型的安全漏洞,例如 缓冲区溢出。PaX 还提供 地址空间布局随机化 (ASLR),它随机化重要的内存地址,以阻碍依赖于这些地址易于已知的攻击。PaX 本身不是由 grsecurity 开发人员开发的,并且也可以独立于 grsecurity 获得 [1]。
grsecurity 的另一个值得注意的组件是它提供了一个完整的 基于角色的访问控制 (RBAC) 系统。RBAC 旨在比 Unix 访问控制列表 通常提供的更严格地限制对系统的访问,目的是创建一个完全最小权限的系统,用户和进程仅具有正常工作所需的绝对最小权限,绝不多余。这样,如果系统被入侵,攻击者破坏系统或获取系统敏感信息的能力会大大降低。RBAC 通过一组“角色”工作。每个角色可以对其可以或不能执行的操作进行单独限制,这些角色和限制构成了一个可以根据需要修改的“策略”。
grsecurity 以多种方式限制 chroot,以防止各种漏洞、提权攻击,并添加额外的检查和平衡。
Chroot 修改
- 不允许在 chroot 之外附加共享内存
- 不允许kill在 chroot 之外
- 不允许ptrace在 chroot 之外(体系结构无关)
grsecurity 还为 Linux 内核添加了增强的 审计。它可以被配置为审计特定用户组,审计 挂载/卸载设备,系统时间和日期的更改,chdir 日志记录,等等。这些其他功能中的一些还允许管理员记录被拒绝的资源尝试、失败的 fork 尝试和带有参数的 exec 日志记录。
可信路径 执行是另一个可选功能,可用于防止用户执行不属于 root 用户,或者对世界可写的二进制文件。这对于防止用户执行他们自己的恶意二进制文件或意外执行可能被恶意用户修改的系统二进制文件(对世界可写)很有用。
grsecurity 还强化了 chroot "监狱" 的工作方式。chroot 监狱可用于将特定进程与系统其余部分隔离开来,这对于最小化潜在的损坏很有用,即使服务被入侵。但是,有一些方法可以“越狱” chroot 监狱。grsecurity 试图防止这种情况发生。
还有一些其他功能可以提高安全性并防止用户获得有关系统的无用信息,例如限制dmesg和netstat命令对 root 用户 [2]。
其他功能和安全改进列表
- /proc 限制,不会泄露有关进程所有者的信息
- 符号链接/硬链接限制,以防止/tmp 竞争
- 硬链接限制,以防止用户硬链接到他们不拥有的文件
- FIFO/命名管道 限制
- dmesg(8)限制
- 增强版可信路径执行实现
- 基于组的套接字限制