JavaScript is required to for searching.
跳过导航链接
退出打印视图
系统管理指南:安全性服务     Oracle Solaris 10 8/11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分安全性概述

1.  安全性服务(概述)

第 2 部分系统、文件和设备安全性

2.  管理计算机安全性(概述)

3.  控制对系统的访问(任务)

4.  控制对设备的访问(任务)

5.  使用基本审计报告工具(任务)

6.  控制对文件的访问(任务)

7.  使用自动安全性增强工具(任务)

第 3 部分角色、权限配置文件和特权

8.  使用角色和特权(概述)

9.  使用基于角色的访问控制(任务)

使用 RBAC(任务列表)

配置 RBAC(任务列表)

配置 RBAC

如何规划 RBAC 实现

如何使用 GUI 创建和指定角色

如何通过命令行创建角色

如何将角色指定给本地用户

如何审计角色

如何使 root 用户成为角色

使用角色(任务列表)

使用角色

如何在终端窗口中承担角色

如何在 Solaris Management Console 中承担角色

管理 RBAC(任务列表)

管理 RBAC

如何更改角色的口令

如何更改角色的属性

如何创建或更改权限配置文件

如何更改用户的 RBAC 属性

如何为传统应用程序添加 RBAC 属性

10.  基于角色的访问控制(参考)

11.  特权(任务)

12.  特权(参考)

第 4 部分加密服务

13.  Oracle Solaris 加密框架(概述)

14.  Oracle Solaris 加密框架(任务)

15.  Oracle Solaris 密钥管理框架

第 5 部分验证服务和安全通信

16.  使用验证服务(任务)

17.  使用 PAM

18.  使用 SASL

19.  使用 Oracle Solaris 安全 Shell(任务)

20.  Oracle Solaris 安全 Shell(参考)

第 6 部分Kerberos 服务

21.  Kerberos 服务介绍

22.  规划 Kerberos 服务

23.  配置 Kerberos 服务(任务)

24.  Kerberos 错误消息和故障排除

25.  管理 Kerberos 主体和策略(任务)

26.  使用 Kerberos 应用程序(任务)

27.  Kerberos 服务(参考)

第 7 部分Oracle Solaris 审计

28.  Oracle Solaris 审计(概述)

29.  规划 Oracle Solaris 审计

30.  管理 Oracle Solaris 审计(任务)

31.  Oracle Solaris 审计(参考)

词汇表

索引

配置 RBAC

可以使用以下实用程序配置 RBAC:

如何规划 RBAC 实现

RBAC 可以作为组织管理其信息资源方式的组成部分。进行规划时,需要全面了解 RBAC 功能以及组织的安全要求。

  1. 了解 RBAC 基本概念。

    请阅读基于角色的访问控制(概述)。使用 RBAC 来管理系统与使用常规的 UNIX 管理做法大不不同。开始实现之前,应先熟悉 RBAC 概念。有关更详细的信息,请参见第 10 章

  2. 检查安全策略。

    您组织的安全策略应详细说明系统面临的潜在威胁,衡量每种威胁的风险并制订应对这些威胁的策略。通过 RBAC 隔离与安全相关的任务可以作为该策略的一部分。虽然可以按照缺省设置安装系统建议的角色及其配置,但是您可能需要定制 RBAC 配置以符合安全策略。

  3. 确定组织需要 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 用户成为角色

  4. 确定适用于组织的建议角色。

    请查看建议的角色的功能和缺省的权限配置文件。通过缺省的权限配置文件,管理员可以使用单个配置文件配置建议的角色。

    以下三个缺省的权限配置文件可用于配置建议的角色:

    • Primary Administrator(主管理员)权限配置文件-用于配置可以执行所有管理任务、为其他用户授予权限以及编辑与管理角色关联的权限的角色。该角色中的用户可将该角色指定给其他用户,并可为其他用户授予权限。

    • System Administrator(系统管理员)权限配置文件-用于配置可执行大多数与安全无关的管理任务的角色。例如,System Administrator(系统管理员)可以添加新的用户帐户,但不能设置口令或为其他用户授予权限。

    • Operator(操作员)权限配置文件-用于配置可以执行介质备份和打印机维护等简单管理任务的角色。

    要进一步检查权限配置文件,请阅读以下内容之一:

    • /etc/security 目录中,阅读 prof_attr 数据库和 exec_attr 数据库的内容。

    • 在 Solaris Management Console 中,使用 "Rights"(权限)工具显示权限配置文件的内容。

    • 在本书中,参阅权限配置文件的内容以了解某些典型权限配置文件的摘要。

  5. 确定是否有任何其他角色或权限配置文件适用于组织。

    请在站点上查找可能从受限制访问中受益的其他应用程序或应用程序系列。合适的 RBAC 候选对象包括:影响安全的应用程序、可能导致服务被拒绝的应用程序,或需要对管理员进行特殊培训的应用程序。您可以定制角色和权限配置文件,以处理组织的安全要求。

    1. 确定新任务所需的命令。
    2. 确定适用于此任务的权限配置文件。

      检查现有权限配置文件是否可以处理此任务,或是否需要创建单独的权限配置文件。

    3. 确定适用于此权限配置文件的角色。

      确定是否应将此任务的权限配置文件指定给现有角色,或是否应创建新角色。如果使用现有角色,请检查其他权限配置文件是否适用于将被指定该角色的用户。

  6. 确定应将哪些用户指定给可用角色。

    根据最小特权原则,应将用户指定给适合其信任级别的角色。如果禁止用户访问用户无需执行的任务,则可以减少潜在的问题。

如何使用 GUI 创建和指定角色

您可以以超级用户身份,也可以使用 Primary Administrator(主管理员)角色来创建新角色。在此过程中,新角色的创建者会承担 Primary Administrator(主管理员)的角色。

开始之前

  1. 启动 Solaris Management Console。
    # /usr/sbin/smc &

    有关登录说明,请参见如何在 Solaris Management Console 中承担角色

  2. 单击 "Administrative Roles"(管理角色)图标。
  3. 从 "Action"(操作)菜单中选择 "Add Administrative Role"(添加管理角色)。
  4. 填写一系列对话框中的字段以创建新角色。

    有关可能的角色,请参见示例 9-1示例 9-4


    提示 - Solaris Management Console 中的所有工具都会在页面底部或向导面板的左侧显示信息。您可随时选择 "Help"(帮助),以查找有关在此界面中执行任务的其他信息。


  5. 将角色指定给用户。

    提示 - 填写角色的属性后,最后一个对话框将提示您为该角色指定一个用户。


  6. 在终端窗口中,重新启动名称服务高速缓存守护进程。
    # svcadm restart system/name-service-cache

    有关更多信息,请参见 svcadm(1M)nscd(1M) 手册页。

示例 9-1 为 System Administrator(系统管理员)权限配置文件创建角色

在本示例中,新角色可以执行与安全无关的系统管理任务。该角色是通过执行上述过程创建的,其参数如下:

示例 9-2 为 Operator(操作员)权限配置文件创建角色

Operator(操作员)权限配置文件可以管理打印机并将系统备份到脱机介质。您可能希望将该角色指定给各个班次上的某个用户。为此,可在 "Step 1: Enter a Role Name"(步骤 1:输入角色名)对话框中选择角色邮件列表选项。该角色是通过执行上述过程创建的,其参数如下:

示例 9-3 为与安全相关的权限配置文件创建角色

缺省情况下,仅有 Primary Administrator(主管理员)配置文件包含与安全相关的命令和权限。如果要创建功能不如 Primary Administrator(主管理员)强大,但可处理某些与安全相关的任务的角色,则必须创建该角色。

在以下示例中,该角色可保护设备。该角色是通过执行上述过程创建的,其参数如下:

在以下示例中,该角色可确保系统和主机在网络上的安全。该角色是通过执行上述过程创建的,其参数如下:

示例 9-4 为具有有限作用域的权限配置文件创建角色

许多权限配置文件的作用域都是有限的。在本示例中,该角色的唯一任务是管理 DHCP。该角色是通过执行上述过程创建的,其参数如下:

示例 9-5 修改用户的角色指定

在本示例中,将向现有用户添加角色。您可以修改用户的角色指定,方法是在 Solaris Management Console 的 "Users"(用户)工具中单击 "User Accounts"(用户帐户)图标,双击相应用户,然后按照联机帮助的说明将角色添加到该用户的功能。

故障排除

如果角色不具有应有的功能,请检查以下情况:

如何通过命令行创建角色

Solaris Management Console GUI 是管理 RBAC 的首选方法。要使用该 GUI,请参见如何使用 GUI 创建和指定角色。另外,还可以使用命令行界面,如此过程中所述。


注 - 请勿尝试同时使用命令行和图形用户界面来管理 RBAC。这样可能会导致对配置所做的更改出现冲突,从而使得行为不可预测。您可以使用这两种工具来管理 RBAC,但是不能同时使用二者。


开始之前

要创建角色,必须承担拥有 Primary Administrator(主管理员)权限配置文件的角色,或切换到用户 root

  1. 承担 Primary Administrator(主管理员)角色,或成为超级用户。

    Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2  章 "使用 Solaris Management Console(任务)"

  2. 选择以下命令之一,在命令行上创建角色。
    • 对于本地名称服务范围内的角色,请使用 roleadd 命令。

      注 - 与 Solaris Management Console GUI 或命令行界面相比,roleadd 命令的限制更多。运行 roleadd 命令后,还必须运行 usermod 命令才能将角色指定给用户。然后,用户还必须为角色设置口令,如如何将角色指定给本地用户中所述。


      # roleadd -c comment \
      -g group -m homedir -u UID -s shell \
      -P profile rolename
      -c comment

      描述 rolename 的注释。

      -g group

      rolename 的组指定。

      -m homedir

      rolename 的起始目录的路径。

      -u UID

      rolename 的 UID。

      -s shell

      rolename 的登录 shell。此 shell 必须是配置文件 shell。

      -P profile

      rolename 的一个或多个权限配置文件。

      rolename

      新本地角色的名称。

    • 使用 smrole add 命令。

      此命令可在 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
      -D domain-name

      要管理的域的名称。

      -r admin-role

      可以修改角色的管理角色的名称。管理角色必须具有 solaris.role.assign 授权。如果要修改已承担的角色,则该角色必须具有 solaris.role.delegate 授权。

      -l

      admin-role 的口令输入提示。

      --

      验证选项和子命令选项之间必需的分隔符。

      -n rolename

      新角色的名称。

      -c comment

      描述角色功能的注释。

      -a username

      可以承担 rolename 的用户的名称。

      -d directory

      rolename 的起始目录。

      -F full-description

      rolename 的完整说明。此说明显示在 Solaris Management Console GUI 中。

      -p profile

      rolename 的功能中包括的权限配置文件。此选项可为角色提供具有管理权能的命令。您可以指定多个 -p profile 选项。

  3. 要使更改生效,请参见如何将角色指定给本地用户

示例 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

  1. 将角色指定给本地用户。

    如果已使用 roleadd 命令添加了本地角色,则必须执行此步骤。使用 smrole 命令和 Solaris Management Console 创建角色时,此步骤为可选步骤。

    # usermod -u UID -R rolename login-name
    -u UID

    用户的 UID。

    -R rolename

    要指定给用户的角色。

    login-name

    用户的登录名称。

  2. 要使更改生效,请重新启动名称服务高速缓存守护进程。
    # svcadm restart system/name-service-cache

    如果已使用 Solaris Management Console 界面添加了角色,请转至使用角色(任务列表)。否则,请继续执行下一步。

  3. 可选要解除锁定角色帐户,用户必须创建口令。

    如果已使用 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 类,可以审计角色操作。

  1. 规划审计并编辑审计配置文件。

    有关更多信息,请参见Oracle Solaris 审计(任务列表)

  2. audit_control 文件的 flags 行中包含 ua 类或 as 类。
    ## audit_control file
    flags:lo,as
    naflags:lo
    plugin:name=audit_binfile.so; p_dir=/var/audit

    ua 类和 as 类包含其他审计事件。要查看类中包括的审计事件,请阅读 audit_event 文件。另外,还可以使用 bsmrecord 命令,如示例 30-27 中所示。

  3. 完成审计服务的配置,然后启用审计。

    有关更多信息,请参见配置和启用审计服务(任务)

如何使 root 用户成为角色

此过程说明如何将 root 从登录用户更改为角色。完成此过程后,将无法再以 root 身份直接登录到系统,但在单用户模式下除外。必须已为您指定 root 角色,才能对 root 执行 su

通过将 root 用户更改为角色,可以防止匿名 root 登录。由于用户必须先登录,然后才能承担 root 角色,因此用户的登录 ID 将提供给审计服务并位于 sulog 文件中。

在此过程中,将创建一个本地用户,并将 root 角色指定给该用户。要防止用户承担角色,请参见示例 9-8

开始之前

如果以 root 身份直接登录,则无法执行此过程。您必须以自身的身份登录,然后才能对 root 执行 su

  1. 以一般用户身份登录到目标系统。
  2. 承担 Primary Administrator(主管理员)角色,或成为超级用户。

    Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。有关如何创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的"使用 RBAC 和 Solaris 管理工具(任务列表)"

  3. 创建一个可以承担 root 角色的本地用户。

    为安全起见,至少应为一个本地用户指定 root 角色。

    $ useradd -c comment -u uid -d homedir username
    -c comment

    描述用户的注释。

    -d homedir

    用户的起始目录。此目录应位于本地系统中。

    -u uid

    用户标识号。

    username

    新本地用户的名称。

    # useradd -c "JDoe's local account" -u 123 -d /export/home1 jdoe-local
  4. 为用户指定口令。
    # passwd -r files jdoe-local
    New Password:    <Type password>
    Re-enter new Password: <Retype password>
    passwd: password successfully changed for jdoe-local
    #
  5. 确保您未以 root 身份登录。
    # 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)
  6. root 用户更改为角色。
    # usermod -K type=role root
  7. 验证 root 是否为角色。

    user_attr 文件中的 root 项的显示应与以下内容类似:

    # grep root /etc/user_attr
    root::::type=role;auths=solaris.*,solaris.grant;profiles=...
  8. root 角色指定给本地帐户。
    # usermod -R root jdoe-local

    注意

    注意 - 如果不将 root 角色指定给用户,则任何人都不能成为超级用户,但在单用户模式下除外。必须键入 root 口令才能进入单用户模式。


  9. 配置在失败时返回的名称服务。
    1. 打开新的终端窗口并承担 root 角色。
      % whoami
      jdoe
      % su - jdoe-local
      Enter password:   <Type jdoe-local password>
      % roles
      root
      % su - root
      Enter password:   <Type root password>
      #
    2. 编辑 nsswitch.conf 文件。

      例如,nsswitch.conf 文件中的以下各项将允许返回名称服务。

      passwd:  files nis [TRYAGAIN=0 UNAVAIL=return NOTFOUND=return]
      group:  files nis [TRYAGAIN=0 UNAVAIL=return NOTFOUND=return]
  10. 可选root 角色指定给名称服务中选定的用户帐户。

    有关过程,请参见如何更改用户的 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 用户更改为角色并未能进行以下某个指定,则任何人都不能成为超级用户: