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

配置 RBAC

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

Procedure如何规划 RBAC 实现

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

  1. 了解 RBAC 基本概念。

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

  2. 检查安全策略。

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

  3. 确定组织需要 RBAC 的程度。

    根据安全需要,选择如何使用 RBAC,如下所述:

    • 无 RBAC-您可以以 root 用户身份执行所有任务。在此配置中,您将以自己的身份登录。然后,在选择 Solaris Management Console 工具时,键入 root 作为用户。

    • 仅单一角色-此方法添加一个角色。该角色会被指定主管理员权限配置文件。此方法与超级用户模型类似,因为该角色具有超级用户功能。但是,通过此方法可以跟踪已承担该角色的用户。

    • 建议的角色-此方法创建三个基于以下权限配置文件的角色:主管理员、系统管理员和操作员。这些角色适用于管理员具有不同责任级别的组织。

    • 自定义角色-您可以创建自己的角色以满足组织的安全要求。新角色可以基于现有或自定义的权限配置文件。

    • 使超级用户成为角色-此方法可防止任何用户以 root 身份登录。相反,在承担 root 角色之前,用户必须以普通用户身份登录。有关详细信息,请参见如何使 root 用户成为角色

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

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

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

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

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

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

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

    • 在 Solaris Management Console 中,使用“权限”工具显示权限配置文件的内容。

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

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

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

    1. 确定新任务所需的命令。

    2. 确定适用于此任务的权限配置文件。

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

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

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

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

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

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

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

开始之前
  1. 启动 Solaris Management Console。


    # /usr/sbin/smc &
    

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

  2. 单击“管理角色”图标。

  3. 从“操作”菜单中选择“添加管理角色”。

  4. 填写一系列对话框中的字段以创建新角色。

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


    提示 –

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


  5. 将角色指定给用户。


    提示 –

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


  6. 在终端窗口中,重新启动名称服务高速缓存守护进程。


    # svcadm restart system/name-service-cache
    

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


示例 9–1 为系统管理员权限配置文件创建角色

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



示例 9–2 为操作员权限配置文件创建角色

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



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

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

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

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



示例 9–4 为具有有限范围的权限配置文件创建角色

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



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

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


故障排除

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

Procedure如何通过命令行创建角色

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


注 –

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


开始之前

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

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

    主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 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 命令创建自定义操作员角色

smrole 命令可在名称服务中指定新角色及其属性。在以下示例中,主管理员创建了一个新版本的操作员角色。该角色具有标准的操作员权限配置文件以及介质恢复权限配置文件。请注意,此命令会提示您输入新角色的口令。


% su primaryadm

Password: <键入 primaryadm 的口令> 

$ /usr/sadm/bin/smrole add -H myHost -- -c "Backup and Restore Operator" \

-n operadm2 -a janedoe -d /export/home/operadm \

-F "Backup/Restore Operator" -p "Operator" -p "Media Restore"

Authenticating as user: primaryadm



Type /? for help, pressing <enter> accepts the default denoted by [ ]

Please enter a string value for: password :: <键入 primaryadm 的口令>



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 ::<键入 operadm2 的口令>



$ 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 :: <键入 primaryadm 的口令>



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/Restore Operator

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

此过程会将本地角色指定给本地用户、重新启动名称高速缓存守护进程,然后说明用户如何承担该角色。

要将角色指定给分布式名称服务中的用户,请参见如何通过命令行创建角色如何更改角色的属性

开始之前

您已按照如何通过命令行创建角色中所述添加了本地角色。您必须已承担主管理员角色或已切换到超级用户。

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

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


    # usermod -u UID -R rolename
    
    -u UID

    用户的 UID。

    -R rolename

    指定给用户的角色。

  2. 要使更改生效,请重新启动名称服务高速缓存守护进程。


    # svcadm restart system/name-service-cache

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

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

    如果已使用 roleadd 命令添加了本地角色,则必须执行此步骤。


    % su rolename
    
    Password: <键入 rolename 的口令>
    
    Confirm Password: <重新键入 rolename 的口令>
    
    $

示例 9–7 通过命令行创建和指定本地角色

在本示例中,将创建管理 Solaris 加密框架的角色。加密管理权限配置文件中包含用于管理本地系统中的硬件和软件加密服务的 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: <键入 cryptomgt 的口令>

Confirm Password: <重新键入 cryptomgt 的口令>

$ /usr/ucb/whoami

cryptomgt

$

有关 Solaris 加密框架的信息,请参见第 13 章,Solaris 加密框架(概述)。要管理该框架,请参见管理加密框架(任务列表)


Procedure如何审计角色

可以审计角色执行的操作。审计记录中包括承担角色的用户的登录名、角色名和角色执行的操作。 6180:AUE_prof_cmd:profile command:ua,as 审计事件用于收集该信息。通过预先选择 as 类或 ua 类,可以审计角色操作。

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

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

  2. audit_control 文件的 flags 行中包括 ua 类或 as 类。


    # audit_control file
    
    dir:/var/audit
    
    flags:lo,as
    
    minfree:20
    
    naflags:lo

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

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

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

Procedure如何使 root 用户成为角色

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

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

开始之前

如果将 root 用户更改为角色,但未将该角色指定给有效用户,或当前没有与 root 用户等效的现有角色,则任何用户都不能成为超级用户。

  1. 以普通用户身份登录到目标主机。

  2. 承担主管理员角色,或成为超级用户。

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

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


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

    描述用户的注释。

    -d homedir

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

    username

    新本地用户的名称。


    # useradd -c "Local administrative user" -d /export/home1 admuser
    
  4. 为用户指定口令。


    # passwd -r files admuser
    
    New Password:    <键入口令>
    
    Re-enter new Password: <重新键入口令>
    
    passwd: password successfully changed for admuser
    
    #
  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 项的显示应与以下内容类似:


    root::::type=role;auths=solaris.*,solaris.grant;profiles=Web Console 
    
    Management,All;lock_after_retries=no
  8. root 角色指定给本地管理用户。


    # usermod -R root admuser
    
  9. 配置在失败时返回的名称服务。

    1. 打开新的终端窗口并承担 root 角色。


      % whoami
      
      jdoe
      
      % su admuser
      
      Enter password:   <键入 admuser 的口令>
      
      % roles
      
      root
      
      % su root
      
      Enter password:   <键入 root 的口令>
      
      #
    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 属性