在 Oracle® Solaris 11.2 中确保用户和进程的安全

退出打印视图

更新时间: 2014 年 7 月
 
 

特权保护内核进程

特权是进程执行某项操作所需的权限。权限是在内核中实施的。如果程序在基本特权集合界限内运行,则该程序也会在系统安全策略界限内运行。例如,setuid root 程序就是在系统安全策略界限外部运行的程序。通过使用特权,程序可以不必调用 setuid root

特权枚举了可在系统上执行的操作的种类。程序可以使用可使其成功执行的确切特权运行。例如,对文件进行操控的程序可能需要 file_dac_write 和 file_flag_set 特权。进程有了这些特权,就不需要以 root 身份运行该程序了。

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

但是,setuid 程序、文件权限和管理帐户很容易被误用。setuid 进程获许执行的操作数比该进程完成其运行所需的操作数多。如果侵入者以无所不能的 root 用户身份运行setuid root 程序,该程序会受到侵害。同样,能够访问 root 口令的任何用户都可能会危及整个系统的安全。

相比之下,通过特权强制执行政策的系统可以在用户权限和 root 权限之间建立等级。可以为某个用户授予特权,允许其执行超出一般用户权限的活动,并可对 root 加以限制,使 root 拥有的特权比当前拥有的特权少。借助权限,可以将使用特权运行的命令单独放置在某个权限配置文件中,并将其指定给一个用户或角色。Table 1–1 汇总了权限模型提供的用户权限与 root 特权之间的等级。

权限模型的安全性比超级用户模型要高。已从进程中删除的特权不会被利用。进程特权可为敏感文件和设备提供额外的保护措施,而 DAC 防护功能本身可被用来获取访问权限。

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