系统管理指南:安全性服务

权限保护内核进程

权限是进程执行某项操作所需的单项权利。权利是在内核中实施的。在 Solaris 权限基本集范围内运行的程序可在系统安全策略范围内运行。setuid 程序是在系统安全策略范围之外运行的程序示例。通过使用权限,程序可以不必调用 setuid

权限会分别枚举针对系统的可能的操作种类。程序可以使用可使其成功执行的确切权限运行。例如,用来设置日期并将其写入管理文件的程序可能需要 file_dac_writesys_time 权限。借助此功能,可以不必以 root 身份运行任何程序。

以前,系统并未遵循权限模型,而是使用超级用户模型。 在超级用户模型中,进程以 root 或用户身份运行。用户进程被限定为对用户的目录和文件执行操作,root 进程则可在系统中的任何位置创建目录和文件。需要在用户目录外部创建目录的进程将使用 UID=0(即作为 root)运行。安全策略依靠 DAC(discretionary access control,自主访问控制)来保护系统文件。设备节点受到 DAC 的保护。例如,组 sys 拥有的设备只能由 sys 组的成员打开。

但是,setuid 程序、文件权限和管理帐户很容易被误用。setuid 进程所允许的操作数比该进程完成其运行过程所需的操作数多。入侵者会破坏 setuid 程序,然后以可执行所有功能的 root 用户身份运行。同样,可访问 root 口令的任何用户都可能会破坏整个系统的安全。

与之相反,通过权限来实施策略的系统允许在用户功能和 root 功能之间划分等级。可以授予用户执行超出普通用户功能的活动,并将 root 加以限制,使 root 具有的权限比目前要少。借助 RBAC,可以将使用权限运行的命令单独放在权限配置文件中,并指定给一个用户或角色。表 8–1 汇总了 RBAC 和权限模型提供的用户功能和超级用户功能之间的等级。

权限模型比超级用户模型具有更大的安全性。已从进程中删除的权限不会被利用。进程权限防止程序或管理帐户获取对所有功能的访问权限。进程权限可为敏感文件提供额外的保护措施,而 DAC 防护功能本身可被用来获取访问权限。

之后,权限可将程序和进程限制为仅具备程序所需的功能。此功能称为最低权限原则。在实现最低权限的系统上,捕获某个进程的入侵者只能访问该进程所具有的那些权限,不会破坏其余部分的系统安全。