系统管理一直都是一项乏味的任务。需要使用各种工具和方法来处理系统上的管理活动。AIX® 6.1 提供了不同的安全特性来帮助管理系统上的用户和组,并维持系统的完整性。本文介绍了一组使用这些特性的命令。

Uma Chandolu, 软件工程师, IBM

http://www.ibm.com/developerworks/i/p-uchandolu.jpgUma M. Chandolu 是一名 AIX 上的开发支持专家,拥有 6 年多在 AIX 环境中工作的大量实践经验,擅长 AIX 系统管理和其他子系统。他拥有与客户合作和处理客户关键型情景的经验。他曾是 “IBM developerWorks 投稿作者”。


developerWorks 投稿作者

2012 年 1 月 09 日

简介

AIX 6.1 操作系统启用了大量的安全特性。本文介绍了一组 AIX 安全命令,它们可用于 AIX 6.1 和 7.1。这里列出的命令将按安全特性分组。


基于角色访问控制 (RBAC) 机制

在操作系统中,管理员负责管理系统。在 AIX 中,“root” 用户具有所有用户中最大的权限。随着基于角色访问控制 (RBAC) 的引入,root 用户权限可以委托给其他用户。有了这些额外的权限,非 root 用户可以管理系统上的管理性任务。

RBAC 可以在 AIX 4.2.1 及后续版本中使用。尽管如此,AIX 5.3 中仍为它提供有限支持。从 AIX 6.1 开始,RBAC 特性已经扩展。它提供了操作系统上的精细粒度控制访问机制。

RBAC 可在两种模式下操作:

  1. 传统 RBAC 模式
  2. 增强 RBAC 模式

默认情况下,AIX 6.1 系统启用增强 RBAC 机制。

RBAC 命令

  1. 如何启用 AIX 上的增强 RBAC 机制?

    使用 chdev 命令改变 sys0 设备的属性:

    # chdev -l sys0 -a enhanced_RBAC=true

    chdev 可以启用 AIX 系统上的增强 RBAC 模式。运行以上命令后,重启系统使更改生效。

  2. 如何检查 AIX 上的 RBAC 状态?

    lsattr 命令可以提供 sys0 设备的属性信息:

    # lsattr -El sys0 -a enhanced_RBAC

    如果状态显示为 true,启用的是增强 RBAC 模式。如果状态显示为 false,启用的是传统 RBAC 模式。

  3. 如何创建 AIX 上的角色?

    mkrole 命令在系统上创建新的角色。角色定义是在 /etc/security/roles 文件中。

    要在 AIX 上创建角色,输入:

    mkrole dfltmsg="description of role" <role name>
  4. 如何改变已创建角色的属性?

    chrole 命令可以改变系统上已创建角色的属性:

    chrole <attribute=value> <rolename>
  5. 如何列出系统上已有的角色?

    lsrole 命令可以列出系统上已有的角色:

    lsrole <role name>
  6. 如何移除 AIX 上的角色?

    使用 rmrole 命令从系统移除角色定义:

    rmrole <rolename>
  7. 如何将角色定义加载到 AIX 内核?

    setkst 命令可将角色、授权、权限、设备、域和域对象定义更新到内核表中。RBAC 安全检查是在内核级别执行。因此,无论何时在用户空间对 RBAC 表作出任何修改,都要更新到内核才能生效。

    要更新所有的表,输入以下内容:

    setkst

    要将特定 RBAC 表更新到内核,在 setkst 命令中使用 “-t” 选项:

    setkst –t <table name>

    表名称可以是 “role” 、“auth”、“cmd”、“dev”、“dom” 和 “domobj”。

  8. 如何创建 AIX 上的授权?

    mkauth 命令在系统上创建新的授权。AIX 系统附带有一些预定义的授权。用 mkuath 命令创建的授权将会保存在 /etc/security/authorizations 文件中。

    输入以下命令创建授权:

    mkauth <authorization name>
  9. 如何列出 AIX 上的授权?

    lsauth 命令可以列出在系统上的授权。

    lsauth <authorization name>

    要列出系统上所有的授权,输入以下内容:

    lsauth ALL

    这将会打印出系统上定义的所有授权。

    要获取系统定义的授权,输入以下内容:

    lsauth  ALL_SYS

    要获取用户定义的授权,输入以下内容:

    lsauth ALL_USR
  10. 如何移除系统上的授权?

    使用 rmauth 命令移除系统上的授权:

    rmauth <authorization name>

    要移除分级授权(如:aix.security.create.test),输入以下内容:

    rmauth -h <authorization name>
  11. 如何修改系统上的授权属性?

    chauth 命令可以修改用户定义授权属性。chauth 命令无法用于修改系统定义授权。

    以下的命令可以修改系统上的用户定义授权属性:

    chauth <attribute=value> <authorization name>

    对任何授权作出修改后,使用 setkst 命令更新 AIX 内核中的 RBAC 表,使更改生效。

  12. 如何检查系统上的调用过程授权?

    ckauth 命令可以检查当前用户会话的授权情况。

    使用以下命令检查当前会话的授权:

    ckauth  <authorization name>

    如果调用过程具有已列出的授权,ckauth 命令返回 0。

    要检查多个授权,在 ckauth 中使 –A 标志:

    ckauth -A <authorizationname 1>,<authorization name2>
  13. 如何设置 AIX 上命令的 RBAC 安全属性?

    setsecattr 命令可设置一个命令的 RBAC 属性。输入以下命令设置某个命令的属性:

    setsecattr -c <attribute = value> <command name>

    setsecattr 命令会将特权命令信息更新到 /etc/security/privcmds 特权命令数据库。命令名称应该是命令的绝对路径。使用 setkst 命令将数据库发送到内核安全表之后,对特权命令数据库的修改才会被使用。

  14. 如何设置 AIX 上设备的 RBAC 属性?

    setsecattr 命令可设置某个设备的 RBAC 属性。输入以下命令设置某个设备的属性:

    setsecattr –d <attribute = value> <device name>

    setsecattr 命令会将特权设备信息更新到 /etc/security/privdevs 特权设备数据库。使用 setkst 命令将数据库发送到内核安全表之后,对特权命令数据库的修改才会生效。

  15. 如何设置 AIX 上文件的 RBAC 属性?

    setsecattr 命令可设置某个文件的 RBAC 属性。输入以下内容设置某个文件的 RBAC 属性:

    setsecattr -f <attribute = value> <file name>

    setsectattr 命令可以设置系统上某个文件的安全属性。它会将信息更新到 /etc/security/privfiles 特权文件数据库。使用 setkst 命令将数据库发送到内核安全表之后,对特权文件数据库的修改才会被使用。

  16. 如何显示系统上特权文件/设备/命令的 RBAC 属性?

    lssecattr 命令可以显示特权命令、设备、文件或过程的 RBAC 属性。输入以下命令显示某个文件/设备/命令/过程的 RBAC 属性:

    lssecattr -c/-d/-f <privileged filename/command/device name>
  17. 如何移除系统上特权文件/设备/命令的 RBAC 属性?

    lssecattr 命令可以移除特权命令、设备或文件的 RBAC 属性。

    rmsecattr -c/-d/-f <privileged file name/command/device name>

    rmsecattr 命令只移除命令/设备/文件的 RBAC 属性。它不会从系统移除实际的命令、设备或文件。出于安全考虑,使用 setkst 命令将数据库发送到内核安全表之后,此命令产生的修改才会被使用。

  18. 如何显示某个用户或进程的角色信息?

    rolelist 命令可以显示某个用户或进程的角色信息。在某个用户会话中输入以下命令,查看此会话中活跃的角色:

    rolelist

    带有以下描述的 rolelist 命令可以显示分配给用户的角色:rolelist -e 提供此会话的有效活跃角色集合;rolelist -a 提供分配给角色的授权。

  19. 如何激活用户会话中的角色?

    swrole 命令可以激活此会话中的角色。

    swrole <rolename>

    要激活分配给用户的所有角色,使用 ALL 关键字。尽管如此,如果用户有多于 8 个角色,当指定 ALL 关键字后,只有前 8 个角色分配给角色会话。


域 RBAC

域 RBAC 是限制未授权用户对资源访问的机制。一般情况下,域 RBAC 为具有给定角色的特权和授权用户提供了对象隔离。

域 RBAC 需要启用增强 RBAC,在传统 RBAC 模式下无法使用。域 RBAC 在增强 RBAC 模式系统下是默认启用的。域 RBAC 可在 AIX 6.1 Tl07 和 AIX 7.1 Tl01 及以上版本中使用。

域 RBAC 命令

  1. 如何创建系统上的域?

    mkdom 命令可以在域 RBAC 数据库上创建一个新域。用户可以使用 mkdom 命令指定域属性。输入以下命令创建系统上的域:

    mkdom  <domain name>

    mkdom 在域 RBAC 数据库 /etc/security/domains 中创建域定义。

  2. 如何列出系统上的域?

    lsdom 命令可以列出系统上已有的域。输入以下命令列出系统上的域:

    lsdom <domain name>

    将会列出 <domain name> 的域信息。要列出域数据库已有的所有域,在 lsdom 命令中指定 ALL 关键字。

  3. 如何移除系统上的域?

    rmdom 命令会从域数据库移除域定义。输入以下命令移除域:

    rmdom <domain name>
  4. 如何改变系统上的域属性?

    使用 chdom 命令改变系统上的域属性信息:

    chdom  <attribute = value> <domain name>
  5. 如何创建某个对象的域属性?

    setsecattr 命令可以添加或修改某个对象的域属性:

    setsecattr -o <attributes> <object name>

    此命令会更新 /etc/security/domobjs 文件中的文件、设备、网络端口对象信息。

  6. 如何列出某个对象的域属性?

    lssecattr 命令可以列出某个对象的域属性:

    lssecattr -o  <object name>
  7. 如何移除某个域对象的域属性?

    使用 rmsecattr 命令移除一个域对象的域属性:

    rmsecattr –o <object name>

    rmsecattr 只移除对象的域属性。它不会从系统中移除实际对象。

  8. 如何将域分配给一个用户?

    使用 mkuser 命令在创建用户时为用户添加域信息。chuser 命令用来为已有的用户添加域信息:

    mkuser -a domains=<domain name> <user name>

    chuser domains=<domain name> <username>
  9. 如何将域数据库加载到内核?

    使用 setkst 命令将域表加载到内核。不带任何选项的 setkst 会将所有 RBAC 和域 RBAC 表加载到内核。

    以下命令会将域和域对象表加载到内核:

    setkst  -t dom,domobj

    对任何域或域对象所作的修改要在更新到内核后才会生效。

  10. 什么是系统上的 RBAC 数据库?

    以下文件用于维护 RBAC 信息:

    • /etc/security/roles:维护用户定义和预定义角色
    • /etc/security/privcmds:维护特权命令信息
    • /etc/security/privdevs:维护特权设备信息
    • /etc/security/privfiles:维护特权文件信息
    • /etc/security/domains:维护域信息
    • /etc/security/domobjs:维护域对象信息
  11. 如何将 RBAC 和域 RBAC 数据库迁移到 LDAP 服务器?

    rbactoldif 命令可以从本地 RBAC 数据库读取 RBAC 信息并将其转换成 LDIF 格式:

    rbactoldif  -d <base DN>

    此命令会将信息显示到标准输出中,也可以重定向到文件中。使用 -s 选项转换成特定的 RBAC 表。至少指定以下一个字母,每个字母表示一个表名:

    a指定授权表。
    c指定特权命令表。
    d指定特权设备表。
    r指定角色表。
    f指定特权文件表。
    e指定域文件表。
    o指定域对象表。

    使用 ldapadd 或 idsldapadd 命令将 LDIF 文件信息加载到 LDAP 服务器:

    ldapadd –h  <ldap server> -D <bind dn> -w <bind password > -i 
    <file name>

    将 RBAC 数据库加载到 LDAP 服务器之前,要将 RBAC 模式加载到 LDAP 服务器。更多信息,请查看 扩展非 IBM LDAP 服务器以支持全部的 AIX 管理功能

    所有 RBAC 和域 RBAC 命令都支持 LDAP。使用 -R LDAP 选项创建 LDAP 服务器上的 RBAC 和域 RBAC 信息。


加密文件系统 (EFS)

加密文件系统 (EFS) 允许系统上的个人用户通过个人密钥存储对文件系统上的数据加密。每个用户相关联一个密钥,而这些密钥存储在一个加密保护的密钥存储区。用户登录成功后,用户的密钥就加载到内核中,并与过程凭据相关联。

EFS 命令

  1. 如何启用系统上的 EFS?

    efsenable 命令可以启用系统上的 EFS 的文件系统:

    efsenable -a

    在启用 EFS 文件系统之前,先在系统上安装 clic.rte 文件集。EFS 命令还要求系统上已启用 RBAC。该命令会在 /var 文件系统下创建 /efs 目录。它还会更新 /etc/security/user 和 /etc/security/group 文件中的 EFS 属性。

  2. 如何列出 EFS 支持的算法和密码?

    以下命令可以列出 EFS 支持的算法和密码。

    efsenable -q
  3. 系统上已创建的 EFS 密钥存储在哪?
    • EFS 密钥存储在 /var/efs 目录下。
    • 用户密钥存储在 /var/efs/users 目录下。
    • 组密钥存储在 /var/efs/groups 目录下。
    • EFS 管理员密钥存储在 /var/efs/efs_admin 目录下。

    用户的密钥存储有用户的密码保护。如果用户的登录密码和密钥存储密码相同,密钥会自动加载到内核中。

    管理员密钥存储和组密钥存储没有密码保护,而是用访问密钥保护。

  4. 如何管理 AIX 系统上的 EFS 密钥存储?
    • efskeymgr 管理系统上的用户和组密钥存储。
    • efskeymgr -v 显示系统上已登录用户的密钥存储内容。
    • efskeymgr -V 显示加载到内核的密钥列表。
  5. 如何管理 EFS 的文件加密和解密?
    • efsmgr 加密和解密 EFS 上的文件。
    • efsmgr -c <cipher> 设置加密密码。
    • efsmgr -e <file> 加密文件。
    • efsmgr -d <file> 解密文件。
  6. 如何将 EFS 数据库迁移到 LDAP 服务器?

    efskstoldif 命令可以读取本地数据库的信息,并将其转换成 LDIF 文件格式:

    efskstoldif  -d <ldap basedn>   >> /tmp/efs.ldif

    它会将所有的用户和组密钥存储导出为带有基础 DN 的 ldif 格式,并导入 /tmp/efs.ldif 文件中。文件名是用户定义文件名。使用 ldapadd 命令将此文件导入 LDAP 服务器。关于 EFS 的更多信息,请参阅 参考资料 一节。


可加载密码算法 (LPA)

AIX 6.1 提供了密码哈希算法。此算法能够生成 256 位的密码。AIX 5.3 Tl06 及以上版本也支持 LPA。同时还提供以下密码哈希算法:

  • MD5
  • SHA 1
  • SHA 256, SHA 512
  • Blowfish

密码哈希算法是在 /etc/security/pwdalg.cfg 文件中定义的。管理员需要在 /etc/security/login.cfg 文件的 usw stanza 下声明密码哈希算法。无论什么时候为用户设置密码或使用 pwdadm 命令,都会用到这些算法。

MD5 和 SHA 最大支持 55 位密码长度,而 Blowfish 最大支持 72 位密码长度。

  1. 如何设置系统上的密码哈希算法?
    chsec -f /etc/security/login.cfg -s usw -a pwd_algorithm=<algorithm name>
  2. 如何列出系统上的密码哈希算法?
    lssec -f /etc/security/login.cfg -s usw -a pwd_algorithm

    如果未显示任何算法,那么使用的是默认算法 “crypt”。关于 LPA 更多信息,请参阅 参考资料 一节。


可信执行 (TE)

可信执行 (TE) 在 AIX 6.1 及以上版本均有实现,它提供了可信任级的系统信息。它会监控系统的完整性并实现高级安全策略。TE 是包含了一些可信计算基础 (TCB) 功能的功能强大的增强型机制。可信执行引入了更多新的验证和保护系统完整性的高级概念。

TE 支持以下特性:

  • 管理可信签名数据库 (TSD)
  • 配置安全策略
  • 可信执行路径和可信库路径
  • 审计可信签名数据库的完整性

TE 命令

  1. TE 如何维护重要或可信的文件信息?

    TE 使用可信签名数据库 (TSD),它驻留在 /etc/security/tsd/tsd.dat 文件中。使用 trustchk 命令添加、删除或列出 TSD 中的条目。

  2. 如何检查 TSD 中所有文件与系统的完整性?
    trustchk -n ALL
  3. 如何启用系统上的 TE?
    trustchk –p TE=ON
  4. 如何禁用系统上的 TE?
    trustchk -p TE=OFF
  5. 如何启用检查系统上可执行文件的策略?

    通过输入以下命令配置策略:

    trustchk -p CHKEXEC=ON

    通过输入以下命令激活策略:

    trustchk -p TE=ON

    只有当可信执行为 ON 时,策略才能激活。

  6. 如何列出当前 TSD 的哈希算法?
    trustchk –g
  7. TSD 支持的哈希算法有哪些?

    TSD 支持以下算法:

    • SHA 1
    • SHA 256
    • SHA 512
  8. TE 策略存储在哪?

    TE 策略存储在 /etc/security/tsd/tepolicies.dat 文件中。

  9. 如何将 TSD 和 TE 策略迁移到 LDAP 服务器?

    输入以下命令,将本地定义的信息转换成 LDIF 文件格式:

    tetoldif –d <base DN>

    此命令会将可信签名数据库 (TSD) 和可信执行策略数据库信息转换成 LDIF 文件格式。

    如果只转换 TSD,指定 “-s” 选项。如果只转换可信执行策略数据库,指定 “-p” 选项。

  10. TE 和 Trusted Computing Base (TCB) 之间的区别是什么?
    可信计算基础 (TCB)可信执行 (TE)
    在安装系统时启用。在运行时启用。
    使用 /etc/security/sysck.cfg file 作为数据库。使用 /etc/security/tsd/tsd.dat 和 /etc/security/tsd/tepolicies.dat 文件。
    一旦安装,无法禁用。可以在任何时候禁用。
    tcbck 命令是用来管理可信计算基础的。trustchk 命令是用来管理可信签名数据库的。

    关于可信执行的更多信息,请参阅 参考资料 一节。


结束语

AIX 6.1 安全特性提供了很好的粒度访问控制机制,并且能动态检查系统的完整性。在 AIX 6.1 中引入的安全命令和现有的命令均扩展了新的选项,以便能够支持操作系统中的高级安全特性。

参考资料

学习

  • 在 AIX 6.1 Info Center 中查看以下主题:
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
  • IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。

获得产品和技术

  • 试用 IBM 软件 。下载试用版、登录到在线试用版、在沙箱环境下使用产品或通过云访问。有 100 多种 IBM 产品试用版可供选择。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=784252
ArticleTitle=AIX 安全命令: 第 2 部分
publish-date=01092012