控制对计算机资源的访问
某些系统资源在缺省情况下即受保护。此外,作为系统管理员,您可以控制和监视系统活动。您可以通过设置限制访问的对象及其可以访问的资源。可以记录资源的使用,并可以监视正在使用资源的对象,还可以设置系统以最大程度地减少资源的不当使用。
地址空间布局随机化
Oracle Solaris 标记了许多用户级二进制文件,以启用地址空间布局随机化 (ASLR)。ASLR 会对地址空间的公钥部分的起始地址进行随机化处理。该安全防御机制可以导致返回导向编程 (Return Oriented Programming, ROP) 攻击在试图利用软件漏洞时失败。
区域为其流程继承了该随机布局。由于使用 ASLR 可能并不适合所有二进制文件,因此,ASLR 的使用可以在区域级别和二进制级别进行配置。
有三种可行的 ASLR 配置:
禁用-对所有二进制文件禁用 ASLR。
标记的二进制文件-ASLR 由编码到二进制文件中的标记进行控制。
ASLR 的缺省 Oracle Solaris 值为 tagged-binaries。Oracle Solaris 发行版中的许多二进制文件都被标记为使用 ASLR。
启用-对除明确标记为禁用 ASLR 外的所有二进制文件启用 ASLR。
sxadm 命令用于配置 ASLR。您必须承担 root 角色才能运行此命令。有关示例和信息,请参见 sxadm(1M) 手册页。有关开发者帮助,请参见《Oracle Solaris 11 开发者安全性指南》。
限制和监视超级用户访问权限
系统要求提供 root 口令才能进行超级用户访问。在缺省配置中,用户无法以 root 身份远程登录系统。远程登录时,用户必须使用其用户名登录,然后使用 su 命令成为 root 用户。可以监视一直在使用 su 命令的用户,特别是那些尝试获取超级用户访问权限的用户。有关监视超级用户以及限制超级用户访问权限的过程,请参见监视和限制 root 用户访问(任务)。
配置基于角色的访问控制以替换超级用户
基于角色的访问控制 (Role-based access control, RBAC) 是 Oracle Solaris 的一项功能,目的在于将超级用户的功能分配给多个管理角色。超级用户(即 root 用户)可以访问系统中的所有资源。借助 RBAC,可以使用一组具有独立权限的角色来替换
root 的许多职责。例如,可以设置一个角色来处理用户帐户创建,设置另一个角色来处理系统文件修改。虽然您不可以修改 root 帐户,但可以将该帐户保留为一种角色,然后不分配该角色。此策略可以有效地阻止对系统的 root 访问。
每个角色都要求已知的用户使用自己的用户名和口令进行登录。登录之后,用户即可承担具有特定角色口令的角色。有关 RBAC 的更多信息,请参见基于角色的访问控制(概述)。
防止无意中误用系统资源
可以通过以下方法来防止您和您的用户发生意外错误:
可以通过正确设置 PATH 变量来阻止运行特洛伊木马。
可以为用户指定受限 shell。受限 shell 通过控制用户仅访问其工作所需的那些系统部分来防止出现用户错误。事实上,通过谨慎设置,可以确保用户仅访问有助于提高其工作效率的那些系统部分。
可以针对用户无需访问的文件设置限制性权限。
设置 PATH 变量
应注意正确设置 PATH 变量。否则,可能会无意中运行他人引入的程序。入侵程序可能会破坏数据或危害系统。这种对安全性构成威胁的程序称为特洛伊木马。例如,一个冒充的 su 程序可能会放置在公共目录中,而您作为系统管理员可能会运行该冒充程序。这类脚本看上去就像常规的 su 命令。由于这类脚本会在执行之后自行删除,因此,几乎没有明确迹象表明您实际上已运行了特洛伊木马。
PATH 变量是在登录时自动设置的。PATH 是通过您的初始化文件设置的,如 .bashrc 和 /etc/profile。当设置用户搜索路径以便将当前目录 (.) 置于最后时,就可以防止您运行这类特洛伊木马。供 root 帐户使用的 PATH 变量绝不能包括当前目录。
为用户指定受限 Shell
标准 shell允许用户执行打开文件、执行命令等操作。受限 shell 可限制用户更改目录和执行命令的能力。可使用 /usr/lib/rsh 命令调用受限 shell。请注意,受限 shell 并不是远程 shell,后者为 /usr/sbin/rsh。
受限 shell 在以下方面不同于标准 shell:
受限用户只能使用用户的起始目录,因此无法使用 cd 命令更改目录。因此,这类用户无法浏览系统文件。
受限用户无法更改 PATH 变量,因此只能使用系统管理员设置的路径中的命令。受限用户也无法使用完整路径名来执行命令或脚本。
该类用户无法使用 > 或 >> 重定向输出。
使用受限 shell,可以限制用户对系统文件的访问能力。此类 shell 将为需要执行特定任务的用户创建一种受限环境。但是,受限 shell 并非完全安全,它的目的仅在于防止不熟练的用户无意中造成破坏。
有关受限 shell 的信息,请使用 man -s1m rsh 命令查看 rsh(1M) 手册页。
限制对文件中数据的访问
因为 Oracle Solaris 是一种多用户环境,因此文件系统安全性是系统中最基本的安全风险。可以使用传统的 UNIX 文件保护措施保护文件,也可以使用更安全的访问控制列表 (access control list, ACL)。
您可能需要允许一些用户读取某些文件,为另一些用户提供更改或删除某些文件的权限。您可能会有一些不希望其他任何用户看到的数据。第 7 章介绍了如何设置文件权限。
限制 setuid 可执行文件
可执行文件可能产生安全风险。少量可执行程序必须以 root 身份运行才能正常工作。运行这些 setuid 程序需要将用户 ID 设置为 0。运行这些程序的任何用户都使用 root ID 运行程序。如果在编写某个程序时没有注意安全问题,使用 root
ID 运行该程序将造成潜在的安全问题。
除了 setuid 位设置为 root 的 Oracle 随附可执行程序外,应该禁止使用其他 setuid 程序。如果无法禁止使用 setuid 程序,则必须限制其使用。安全管理需要的 setuid
程序很少。
使用缺省安全 (Secure by Default) 配置
缺省情况下,安装 Oracle Solaris 后,将禁用许多网络服务。此配置称为“缺省安全”(SBD)。使用 SBD 时,接受网络请求的唯一网络服务是 sshd 守护进程。其他所有网络服务将被禁用,或仅处理本地请求。要启用单个网络服务(如 ftp),可使用 Oracle Solaris 的服务管理工具
(Service Management Facility, SMF) 功能。有关更多信息,请参见 netservices(1M) 和 smf(5) 手册页。
使用资源管理功能
Oracle Solaris 软件提供了完善的资源管理功能。使用这些功能,可以按照服务器整合环境中的应用程序对资源使用进行分配、安排、监视以及设置上限操作。使用资源控制框架,可以对进程占用的系统资源设置约束。这类约束有助于防止尝试使系统资源发生泛洪的脚本引起的拒绝服务攻击。
使用 Oracle Solaris 区域
Oracle Solaris 区域提供了一种应用程序执行环境,其中单个 Oracle Solaris OS 实例中各进程与系统的其余部分隔离开来。这种隔离阻止了在一个区域中运行的进程监视或影响在其他区域中运行的进程。即使运行的进程具有超级用户功能,也不能查看或影响其他区域中的活动。
监视计算机资源的使用情况
作为系统管理员,您需要监视系统活动。您需要注意计算机的所有方面,其中包括以下方面:
什么是正常负载?
谁有权访问系统?
个人何时访问系统?
哪些程序会在系统上正常运行?
了解这些知识之后,就可以使用可用工具审计系统使用情况并监视单个用户的活动。如果怀疑安全性受到破坏,则使用监视功能会非常有用。有关审计服务的更多信息,请参见第 26 章。
监视文件完整性
作为系统管理员,您需要确保所管理的系统上安装的文件未被意外更改。在大型安装中,通过有关每个系统上的软件栈的比较和报告工具可以跟踪系统。使用基本审计报告工具 (Basic Audit Reporting Tool, BART),可以按时间进度对一个或多个系统执行文件级检查,以此进行全面的系统验证。一个或多个系统的 BART 清单在一段时间内的变化可以验证系统的完整性。BART 提供了清单创建、清单比较以及脚本报告规则。有关更多信息,请参见第 6 章。