跳过导航链接 | |
退出打印视图 | |
系统管理指南:安全性服务 Oracle Solaris 10 8/11 Information Library (简体中文) |
如何在 Solaris Management Console 中承担角色
19. 使用 Oracle Solaris 安全 Shell(任务)
可以使用以下实用程序配置 RBAC:
Solaris Management Console GUI-执行与 RBAC 相关的任务的首选方法是通过 GUI。用于管理 RBAC 元素的控制台工具包含在用户工具集中。
Solaris Management Console 命令-使用 Solaris Management Console 命令行界面(如 smrole),可对任何名称服务进行操作。Solaris Management Console 命令需要进行验证才能连接到服务器。因此,这些命令并不适合在脚本中使用。
本地命令-使用 user* 和 role* 组合这两类命令行界面(如 useradd),仅可对本地文件进行操作。对本地文件进行操作的命令必须由超级用户或具有相应特权的角色来运行。
RBAC 可以作为组织管理其信息资源方式的组成部分。进行规划时,需要全面了解 RBAC 功能以及组织的安全要求。
请阅读基于角色的访问控制(概述)。使用 RBAC 来管理系统与使用常规的 UNIX 管理做法大不不同。开始实现之前,应先熟悉 RBAC 概念。有关更详细的信息,请参见第 10 章。
您组织的安全策略应详细说明系统面临的潜在威胁,衡量每种威胁的风险并制订应对这些威胁的策略。通过 RBAC 隔离与安全相关的任务可以作为该策略的一部分。虽然可以按照缺省设置安装系统建议的角色及其配置,但是您可能需要定制 RBAC 配置以符合安全策略。
根据安全需要,选择如何使用 RBAC,如下所述:
No RBAC(无 RBAC)-您可以以 root 用户身份执行所有任务。在此配置中,您将以自己的身份登录。然后,在选择 Solaris Management Console 工具时,键入 root 作为用户。
Single Role Only(仅单一角色)-此方法添加一个角色。该角色会被指定 Primary Administrator(主管理员)权限配置文件。此方法与超级用户模型类似,因为该角色具有超级用户功能。但是,通过此方法可以跟踪已承担该角色的用户。
Recommended Roles(建议的角色)-此方法创建三个基于以下权限配置文件的角色:Primary Administrator(主管理员)、System Administrator(系统管理员)和 Operator(操作员)。这些角色适用于管理员具有不同责任级别的组织。
Custom Roles(定制角色)-您可以创建自己的角色以满足组织的安全要求。新角色可以基于现有或定制的权限配置文件。要定制权限配置文件以实施职责分离,请参见《Oracle Solaris Trusted Extensions 配置指南》中的"在 Trusted Extensions 中创建角色和用户"。
Root User as a Role(使 root 用户成为角色)-此方法可防止任何用户以 root 身份登录。相反,在承担 root 角色之前,用户必须以普通用户身份登录。有关详细信息,请参见如何使 root 用户成为角色。
请查看建议的角色的功能和缺省的权限配置文件。通过缺省的权限配置文件,管理员可以使用单个配置文件配置建议的角色。
以下三个缺省的权限配置文件可用于配置建议的角色:
Primary Administrator(主管理员)权限配置文件-用于配置可以执行所有管理任务、为其他用户授予权限以及编辑与管理角色关联的权限的角色。该角色中的用户可将该角色指定给其他用户,并可为其他用户授予权限。
System Administrator(系统管理员)权限配置文件-用于配置可执行大多数与安全无关的管理任务的角色。例如,System Administrator(系统管理员)可以添加新的用户帐户,但不能设置口令或为其他用户授予权限。
Operator(操作员)权限配置文件-用于配置可以执行介质备份和打印机维护等简单管理任务的角色。
要进一步检查权限配置文件,请阅读以下内容之一:
在 /etc/security 目录中,阅读 prof_attr 数据库和 exec_attr 数据库的内容。
在 Solaris Management Console 中,使用 "Rights"(权限)工具显示权限配置文件的内容。
在本书中,参阅权限配置文件的内容以了解某些典型权限配置文件的摘要。
请在站点上查找可能从受限制访问中受益的其他应用程序或应用程序系列。合适的 RBAC 候选对象包括:影响安全的应用程序、可能导致服务被拒绝的应用程序,或需要对管理员进行特殊培训的应用程序。您可以定制角色和权限配置文件,以处理组织的安全要求。
检查现有权限配置文件是否可以处理此任务,或是否需要创建单独的权限配置文件。
确定是否应将此任务的权限配置文件指定给现有角色,或是否应创建新角色。如果使用现有角色,请检查其他权限配置文件是否适用于将被指定该角色的用户。
根据最小特权原则,应将用户指定给适合其信任级别的角色。如果禁止用户访问用户无需执行的任务,则可以减少潜在的问题。
您可以以超级用户身份,也可以使用 Primary Administrator(主管理员)角色来创建新角色。在此过程中,新角色的创建者会承担 Primary Administrator(主管理员)的角色。
开始之前
您已在站点上创建可承担角色的用户。如果尚未创建这些用户,请按照《系统管理指南:基本管理》中的"使用 RBAC 和 Solaris 管理工具(任务列表)"的说明进行创建。
已按照《系统管理指南:基本管理》中的"使用 RBAC 和 Solaris 管理工具(任务列表)"的过程为您指定了 Primary Administrator(主管理员)角色。
# /usr/sbin/smc &
有关登录说明,请参见如何在 Solaris Management Console 中承担角色。
提示 - Solaris Management Console 中的所有工具都会在页面底部或向导面板的左侧显示信息。您可随时选择 "Help"(帮助),以查找有关在此界面中执行任务的其他信息。
提示 - 填写角色的属性后,最后一个对话框将提示您为该角色指定一个用户。
# svcadm restart system/name-service-cache
有关更多信息,请参见 svcadm(1M) 和 nscd(1M) 手册页。
示例 9-1 为 System Administrator(系统管理员)权限配置文件创建角色
在本示例中,新角色可以执行与安全无关的系统管理任务。该角色是通过执行上述过程创建的,其参数如下:
角色名称:sysadmin
角色全名:System Administrator(系统管理员)
角色说明:Performs non-security admin tasks(执行非安全管理任务)
权限配置文件:System Administrator(系统管理员)
此权限配置文件位于该角色包含的配置文件列表的顶部。
示例 9-2 为 Operator(操作员)权限配置文件创建角色
Operator(操作员)权限配置文件可以管理打印机并将系统备份到脱机介质。您可能希望将该角色指定给各个班次上的某个用户。为此,可在 "Step 1: Enter a Role Name"(步骤 1:输入角色名)对话框中选择角色邮件列表选项。该角色是通过执行上述过程创建的,其参数如下:
角色名称:operadm
角色全名:Operator(操作员)
角色说明:Backup operator(备份操作员)
权限配置文件:Operator(操作员)
此权限配置文件必须位于该角色包含的配置文件列表的顶部。
示例 9-3 为与安全相关的权限配置文件创建角色
缺省情况下,仅有 Primary Administrator(主管理员)配置文件包含与安全相关的命令和权限。如果要创建功能不如 Primary Administrator(主管理员)强大,但可处理某些与安全相关的任务的角色,则必须创建该角色。
在以下示例中,该角色可保护设备。该角色是通过执行上述过程创建的,其参数如下:
角色全名:Device Security(设备安全)
角色说明:Configures Devices(配置设备)
权限配置文件:Device Security(设备安全)
在以下示例中,该角色可确保系统和主机在网络上的安全。该角色是通过执行上述过程创建的,其参数如下:
角色全名:Network Security(网络安全)
角色说明:Handles IPsec, IKE, and SSH(处理 IPsec、IKE 和 SSH)
权限配置文件:Network Security(网络安全)
示例 9-4 为具有有限作用域的权限配置文件创建角色
许多权限配置文件的作用域都是有限的。在本示例中,该角色的唯一任务是管理 DHCP。该角色是通过执行上述过程创建的,其参数如下:
角色名称:dhcpmgt
角色全名:DHCP Management(DHCP 管理)
角色说明:Manages Dynamic Host Config Protocol(管理动态主机配置协议)
权限配置文件:DHCP Management(DHCP 管理)
示例 9-5 修改用户的角色指定
在本示例中,将向现有用户添加角色。您可以修改用户的角色指定,方法是在 Solaris Management Console 的 "Users"(用户)工具中单击 "User Accounts"(用户帐户)图标,双击相应用户,然后按照联机帮助的说明将角色添加到该用户的功能。
故障排除
角色的权限配置文件是否按功能从高到低的顺序在 GUI 中列出?
例如,如果 All(所有)权限配置文件位于列表顶部,则不会运行具有安全属性的命令。包含具有安全属性的命令的配置文件在列表中必须位于 All(所有)权限配置文件的前面。
角色的权限配置文件中的命令是否具有相应的安全属性?
例如,如果策略为 suser,则某些命令会要求 uid=0,而不是要求 euid=0。
是否在相应的名称服务范围中定义了权限配置文件?角色是否在定义权限配置文件的名称服务范围内运行?
名称服务高速缓存 svc:/system/name-service-cache 是否已重新启动?
nscd 守护进程可以具有很长的生存时间间隔。通过重新启动此守护进程,可使用当前数据更新该名称服务。
Solaris Management Console GUI 是管理 RBAC 的首选方法。要使用该 GUI,请参见如何使用 GUI 创建和指定角色。另外,还可以使用命令行界面,如此过程中所述。
注 - 请勿尝试同时使用命令行和图形用户界面来管理 RBAC。这样可能会导致对配置所做的更改出现冲突,从而使得行为不可预测。您可以使用这两种工具来管理 RBAC,但是不能同时使用二者。
开始之前
要创建角色,必须承担拥有 Primary Administrator(主管理员)权限配置文件的角色,或切换到用户 root。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
注 - 与 Solaris Management Console GUI 或命令行界面相比,roleadd 命令的限制更多。运行 roleadd 命令后,还必须运行 usermod 命令才能将角色指定给用户。然后,用户还必须为角色设置口令,如如何将角色指定给本地用户中所述。
# roleadd -c comment \ -g group -m homedir -u UID -s shell \ -P profile rolename
描述 rolename 的注释。
rolename 的组指定。
rolename 的起始目录的路径。
rolename 的 UID。
rolename 的登录 shell。此 shell 必须是配置文件 shell。
rolename 的一个或多个权限配置文件。
新本地角色的名称。
此命令可在 NIS、NIS+ 或 LDAP 等分布式名称服务中创建角色。此命令将作为 Solaris Management Console 服务器的客户机运行。
$ /usr/sadm/bin/smrole -D domain-name \ -r admin-role -l <Type admin-role password> \ add -- -n rolename -a rolename -d directory\ -F full-description -p profile
要管理的域的名称。
可以修改角色的管理角色的名称。管理角色必须具有 solaris.role.assign 授权。如果要修改已承担的角色,则该角色必须具有 solaris.role.delegate 授权。
admin-role 的口令输入提示。
验证选项和子命令选项之间必需的分隔符。
新角色的名称。
描述角色功能的注释。
可以承担 rolename 的用户的名称。
rolename 的起始目录。
rolename 的完整说明。此说明显示在 Solaris Management Console GUI 中。
rolename 的功能中包括的权限配置文件。此选项可为角色提供具有管理权能的命令。您可以指定多个 -p profile 选项。
示例 9-6 使用 smrole 命令创建 Custom Operator(定制操作员)角色
smrole 命令可在名称服务中指定新角色及其属性。在以下示例中,Primary Administrator(主管理员)创建了一个新版本的 Media Backup(介质备份)角色。该角色拥有标准的 Media Backup(介质备份)权限配置文件以及 FTP Management(FTP 管理)权限配置文件。请注意,此命令会提示您输入新角色的口令。
% su - primaryadm Password: <Type primaryadm password> $ /usr/sadm/bin/smrole add -H myHost -- -c "FTP and Backup Operator" \ -n operadm2 -a janedoe -d /export/home/operadm \ -F "Backup/FTP Operator" -p "Media Backup" -p "FTP Management" Authenticating as user: primaryadm Type /? for help, pressing <enter> accepts the default denoted by [ ] Please enter a string value for: password :: <Type primaryadm password> Loading Tool: com.sun.admin.usermgr.cli.role.UserMgrRoleCli from myHost Login to myHost as user primaryadm was successful. Download of com.sun.admin.usermgr.cli.role.UserMgrRoleCli from myHost was successful. Type /? for help, pressing <enter> accepts the default denoted by [ ] Please enter a string value for: password ::<Type operadm2 password> $ svcadm restart system/name-service-cache
包含 list 子命令的 smrole 命令用于显示新角色:
$ /usr/sadm/bin/smrole list -- Authenticating as user: primaryadm Type /? for help, pressing <enter> accepts the default denoted by [ ] Please enter a string value for: password :: <Type primaryadm password> Loading Tool: com.sun.admin.usermgr.cli.role.UserMgrRoleCli from myHost Login to myHost as user primaryadm was successful. Download of com.sun.admin.usermgr.cli.role.UserMgrRoleCli from myHost was successful. root 0 Superuser primaryadm 100 Most powerful role sysadmin 101 Performs non-security admin tasks operadm 102 Backup Operator operadm2 103 Backup/FTP Operator
请注意,拥有 Media Backup(介质备份)或 Media Restore(介质恢复)权限的权限配置文件可为角色提供访问整个根文件系统的权限。因此,管理员必须将此类权限配置文件指定给可信用户。或者,管理员可以选择不指定这些权限配置文件。在这种情况下,仅超级用户可以进行备份和恢复。
此过程会将本地角色指定给本地用户、重新启动名称高速缓存守护进程,然后说明用户如何承担该角色。
要将角色指定给分布式名称服务中的用户,请参见如何通过命令行创建角色和如何更改角色的属性。
开始之前
您已按照如何通过命令行创建角色中所述添加了本地角色。您必须承担拥有 Primary Administrator(主管理员)权限配置文件的角色,或切换到用户 root。
如果已使用 roleadd 命令添加了本地角色,则必须执行此步骤。使用 smrole 命令和 Solaris Management Console 创建角色时,此步骤为可选步骤。
# usermod -u UID -R rolename login-name
用户的 UID。
要指定给用户的角色。
用户的登录名称。
# svcadm restart system/name-service-cache
如果已使用 Solaris Management Console 界面添加了角色,请转至使用角色(任务列表)。否则,请继续执行下一步。
如果已使用 roleadd 命令添加了本地角色,则必须执行此步骤。
% su - rolename Password: <Type rolename password> Confirm Password: <Retype rolename password> $
示例 9-7 通过命令行创建和指定本地角色
在本示例中,将创建管理 Oracle Solaris 加密框架的角色。Crypto Management(加密管理)权限配置文件中包含用于管理本地系统中的硬件和软件加密服务的 cryptoadm 命令。
# roleadd -c "Cryptographic Services manager" \ -g 14 -m /export/home/cryptoadm -u 104 -s pfksh \ -P "Crypto Management" cryptomgt # usermod -u 1111 -R cryptomgt # svcadm restart system/name-service-cache % su - cryptomgt Password: <Type cryptomgt password> Confirm Password: <Retype cryptomgt password> $ /usr/ucb/whoami cryptomgt $
有关 Oracle Solaris 加密框架的信息,请参见第 13 章。要管理该框架,请参见管理加密框架(任务列表)。
可以审计角色执行的操作。审计记录中包括承担角色的用户的登录名、角色名和角色执行的操作。6180:AUE_prof_cmd:profile command:ua,as 审计事件用于收集该信息。通过预先选择 as 类或 ua 类,可以审计角色操作。
有关更多信息,请参见Oracle Solaris 审计(任务列表)。
## audit_control file flags:lo,as naflags:lo plugin:name=audit_binfile.so; p_dir=/var/audit
ua 类和 as 类包含其他审计事件。要查看类中包括的审计事件,请阅读 audit_event 文件。另外,还可以使用 bsmrecord 命令,如示例 30-27 中所示。
有关更多信息,请参见配置和启用审计服务(任务)。
此过程说明如何将 root 从登录用户更改为角色。完成此过程后,将无法再以 root 身份直接登录到系统,但在单用户模式下除外。必须已为您指定 root 角色,才能对 root 执行 su。
通过将 root 用户更改为角色,可以防止匿名 root 登录。由于用户必须先登录,然后才能承担 root 角色,因此用户的登录 ID 将提供给审计服务并位于 sulog 文件中。
在此过程中,将创建一个本地用户,并将 root 角色指定给该用户。要防止用户承担角色,请参见示例 9-8。
开始之前
如果以 root 身份直接登录,则无法执行此过程。您必须以自身的身份登录,然后才能对 root 执行 su。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的"使用 RBAC 和 Solaris 管理工具(任务列表)"。
为安全起见,至少应为一个本地用户指定 root 角色。
$ useradd -c comment -u uid -d homedir username
描述用户的注释。
用户的起始目录。此目录应位于本地系统中。
用户标识号。
新本地用户的名称。
# useradd -c "JDoe's local account" -u 123 -d /export/home1 jdoe-local
# passwd -r files jdoe-local New Password: <Type password> Re-enter new Password: <Retype password> passwd: password successfully changed for jdoe-local #
# who jdoe console May 24 13:51 (:0) jdoe pts/5 May 24 13:51 (:0.0) jdoe pts/4 May 24 13:51 (:0.0) jdoe pts/10 May 24 13:51 (:0.0)
# usermod -K type=role root
user_attr 文件中的 root 项的显示应与以下内容类似:
# grep root /etc/user_attr root::::type=role;auths=solaris.*,solaris.grant;profiles=...
# usermod -R root jdoe-local
注意 - 如果不将 root 角色指定给用户,则任何人都不能成为超级用户,但在单用户模式下除外。必须键入 root 口令才能进入单用户模式。 |
% whoami jdoe % su - jdoe-local Enter password: <Type jdoe-local password> % roles root % su - root Enter password: <Type root password> #
例如,nsswitch.conf 文件中的以下各项将允许返回名称服务。
passwd: files nis [TRYAGAIN=0 UNAVAIL=return NOTFOUND=return] group: files nis [TRYAGAIN=0 UNAVAIL=return NOTFOUND=return]
有关过程,请参见如何更改用户的 RBAC 属性。
示例 9-8 防止 root 角色被用于配置系统
在此示例中,站点安全策略要求多个不同角色配置系统。已创建了这些不同的角色并对其进行了测试。为了防止 root 帐户被用于配置系统,安全管理员将 root 更改为角色,但未指定角色。root 角色保留了在单用户模式下进入系统的口令。
首先,管理员检验该 root 是否不是指定的角色。
% whoami jdoe-local % su - root Password: a!2@3#4$5%6^7 # grep roles /etc/user_attr jdoe-local::::type=normal;roles=secadmin kdoe-local::::type=normal;roles=sysadmin
仍在 root 帐户下,管理员将 root 更改为角色。
# usermod -K type=role root
然后,管理员检验 user_attr 文件中 root 项的更改。
# grep root /etc/user_attr root::::type=role;auths=solaris.*,solaris.grant;profiles=...
示例 9-9 将 root 角色更改回 root 用户
在此示例中,管理员取消对某个系统的委托,希望以超级用户身份登录到桌面。已从网络中删除该系统。
首先,管理员承担 root 角色以删除所有 root 角色指定。
% whoami jdoe-local % su - root Password: a!2@3#4$5%6^7 # grep roles /etc/user_attr jdoe-local::::type=normal;roles=root kdoe-local::::type=normal;roles=root # usermod -R "" jdoe-local # usermod -R "" kdoe-local # grep roles /etc/user_attr #
仍在 root 角色下,管理员将 root 更改为用户。
# rolemod -K type=normal root
然后,管理员检验 user_attr 文件中 root 项的更改。
# grep root /etc/user_attr root::::type=normal;auths=solaris.*,solaris.grant;profiles=...
故障排除
在桌面环境中,如果 root 为角色,则无法以 root 身份直接登录。一条诊断消息会指出 root 在您的系统中为角色。如果您没有可以承担 root 角色的本地帐户,请创建一个。以 root 身份在单用户模式下登录到系统,创建一个本地用户帐户,并将 root 角色指定给该新帐户。然后,以新用户的身份登录并承担 root 角色。
如果将 root 用户更改为角色并未能进行以下某个指定,则任何人都不能成为超级用户:
将 root 角色指定给有效用户。
将等同于 root 的权限配置文件的权限配置文件指定给有效用户。Primary Administrator(主管理员)配置文件是 root 功能的等效权限配置文件。
创建具有 root 功能的角色并将该角色指定给有效用户。指定有 Primary Administrator(主管理员)配置文件的角色等同于 root 角色。