AIX 6.1 操作系统启用了大量的安全特性。本文介绍了一组 AIX 安全命令,它们可用于 AIX 6.1 和 7.1。这里列出的命令将按安全特性分组。
在操作系统中,管理员负责管理系统。在 AIX 中,“root” 用户具有所有用户中最大的权限。随着基于角色访问控制 (RBAC) 的引入,root 用户权限可以委托给其他用户。有了这些额外的权限,非 root 用户可以管理系统上的管理性任务。
RBAC 可以在 AIX 4.2.1 及后续版本中使用。尽管如此,AIX 5.3 中仍为它提供有限支持。从 AIX 6.1 开始,RBAC 特性已经扩展。它提供了操作系统上的精细粒度控制访问机制。
RBAC 可在两种模式下操作:
- 传统 RBAC 模式
- 增强 RBAC 模式
默认情况下,AIX 6.1 系统启用增强 RBAC 机制。
- 如何启用 AIX 上的增强 RBAC 机制?
使用 chdev 命令改变 sys0 设备的属性:
# chdev -l sys0 -a enhanced_RBAC=true
chdev 可以启用 AIX 系统上的增强 RBAC 模式。运行以上命令后,重启系统使更改生效。
- 如何检查 AIX 上的 RBAC 状态?
lsattr 命令可以提供 sys0 设备的属性信息:
# lsattr -El sys0 -a enhanced_RBAC
如果状态显示为 true,启用的是增强 RBAC 模式。如果状态显示为 false,启用的是传统 RBAC 模式。
- 如何创建 AIX 上的角色?
mkrole 命令在系统上创建新的角色。角色定义是在 /etc/security/roles 文件中。
要在 AIX 上创建角色,输入:
mkrole dfltmsg="description of role" <role name>
- 如何改变已创建角色的属性?
chrole 命令可以改变系统上已创建角色的属性:
chrole <attribute=value> <rolename>
- 如何列出系统上已有的角色?
lsrole 命令可以列出系统上已有的角色:
lsrole <role name>
- 如何移除 AIX 上的角色?
使用 rmrole 命令从系统移除角色定义:
rmrole <rolename>
- 如何将角色定义加载到 AIX 内核?
setkst 命令可将角色、授权、权限、设备、域和域对象定义更新到内核表中。RBAC 安全检查是在内核级别执行。因此,无论何时在用户空间对 RBAC 表作出任何修改,都要更新到内核才能生效。
要更新所有的表,输入以下内容:
setkst
要将特定 RBAC 表更新到内核,在 setkst 命令中使用 “-t” 选项:
setkst –t <table name>
表名称可以是 “role” 、“auth”、“cmd”、“dev”、“dom” 和 “domobj”。
- 如何创建 AIX 上的授权?
mkauth 命令在系统上创建新的授权。AIX 系统附带有一些预定义的授权。用 mkuath 命令创建的授权将会保存在 /etc/security/authorizations 文件中。
输入以下命令创建授权:
mkauth <authorization name>
- 如何列出 AIX 上的授权?
lsauth 命令可以列出在系统上的授权。
lsauth <authorization name>
要列出系统上所有的授权,输入以下内容:
lsauth ALL
这将会打印出系统上定义的所有授权。
要获取系统定义的授权,输入以下内容:
lsauth ALL_SYS
要获取用户定义的授权,输入以下内容:
lsauth ALL_USR
- 如何移除系统上的授权?
使用 rmauth 命令移除系统上的授权:
rmauth <authorization name>
要移除分级授权(如:aix.security.create.test),输入以下内容:
rmauth -h <authorization name>
- 如何修改系统上的授权属性?
chauth 命令可以修改用户定义授权属性。chauth 命令无法用于修改系统定义授权。
以下的命令可以修改系统上的用户定义授权属性:
chauth <attribute=value> <authorization name>
对任何授权作出修改后,使用 setkst 命令更新 AIX 内核中的 RBAC 表,使更改生效。
- 如何检查系统上的调用过程授权?
ckauth 命令可以检查当前用户会话的授权情况。
使用以下命令检查当前会话的授权:
ckauth <authorization name>
如果调用过程具有已列出的授权,ckauth 命令返回 0。
要检查多个授权,在 ckauth 中使 –A 标志:
ckauth -A <authorizationname 1>,<authorization name2>
- 如何设置 AIX 上命令的 RBAC 安全属性?
setsecattr 命令可设置一个命令的 RBAC 属性。输入以下命令设置某个命令的属性:
setsecattr -c <attribute = value> <command name>
setsecattr 命令会将特权命令信息更新到 /etc/security/privcmds 特权命令数据库。命令名称应该是命令的绝对路径。使用 setkst 命令将数据库发送到内核安全表之后,对特权命令数据库的修改才会被使用。
- 如何设置 AIX 上设备的 RBAC 属性?
setsecattr 命令可设置某个设备的 RBAC 属性。输入以下命令设置某个设备的属性:
setsecattr –d <attribute = value> <device name>
setsecattr 命令会将特权设备信息更新到 /etc/security/privdevs 特权设备数据库。使用 setkst 命令将数据库发送到内核安全表之后,对特权命令数据库的修改才会生效。
- 如何设置 AIX 上文件的 RBAC 属性?
setsecattr 命令可设置某个文件的 RBAC 属性。输入以下内容设置某个文件的 RBAC 属性:
setsecattr -f <attribute = value> <file name>
setsectattr 命令可以设置系统上某个文件的安全属性。它会将信息更新到 /etc/security/privfiles 特权文件数据库。使用 setkst 命令将数据库发送到内核安全表之后,对特权文件数据库的修改才会被使用。
- 如何显示系统上特权文件/设备/命令的 RBAC 属性?
lssecattr 命令可以显示特权命令、设备、文件或过程的 RBAC 属性。输入以下命令显示某个文件/设备/命令/过程的 RBAC 属性:
lssecattr -c/-d/-f <privileged filename/command/device name>
- 如何移除系统上特权文件/设备/命令的 RBAC 属性?
lssecattr 命令可以移除特权命令、设备或文件的 RBAC 属性。
rmsecattr -c/-d/-f <privileged file name/command/device name>
rmsecattr 命令只移除命令/设备/文件的 RBAC 属性。它不会从系统移除实际的命令、设备或文件。出于安全考虑,使用 setkst 命令将数据库发送到内核安全表之后,此命令产生的修改才会被使用。
- 如何显示某个用户或进程的角色信息?
rolelist 命令可以显示某个用户或进程的角色信息。在某个用户会话中输入以下命令,查看此会话中活跃的角色:
rolelist
带有以下描述的 rolelist 命令可以显示分配给用户的角色:
rolelist -e提供此会话的有效活跃角色集合;rolelist -a提供分配给角色的授权。 - 如何激活用户会话中的角色?
swrole 命令可以激活此会话中的角色。
swrole <rolename>
要激活分配给用户的所有角色,使用 ALL 关键字。尽管如此,如果用户有多于 8 个角色,当指定 ALL 关键字后,只有前 8 个角色分配给角色会话。
域 RBAC 是限制未授权用户对资源访问的机制。一般情况下,域 RBAC 为具有给定角色的特权和授权用户提供了对象隔离。
域 RBAC 需要启用增强 RBAC,在传统 RBAC 模式下无法使用。域 RBAC 在增强 RBAC 模式系统下是默认启用的。域 RBAC 可在 AIX 6.1 Tl07 和 AIX 7.1 Tl01 及以上版本中使用。
- 如何创建系统上的域?
mkdom 命令可以在域 RBAC 数据库上创建一个新域。用户可以使用 mkdom 命令指定域属性。输入以下命令创建系统上的域:
mkdom <domain name>
mkdom 在域 RBAC 数据库 /etc/security/domains 中创建域定义。
- 如何列出系统上的域?
lsdom 命令可以列出系统上已有的域。输入以下命令列出系统上的域:
lsdom <domain name>
将会列出 <domain name> 的域信息。要列出域数据库已有的所有域,在 lsdom 命令中指定 ALL 关键字。
- 如何移除系统上的域?
rmdom 命令会从域数据库移除域定义。输入以下命令移除域:
rmdom <domain name>
- 如何改变系统上的域属性?
使用 chdom 命令改变系统上的域属性信息:
chdom <attribute = value> <domain name>
- 如何创建某个对象的域属性?
setsecattr 命令可以添加或修改某个对象的域属性:
setsecattr -o <attributes> <object name>
此命令会更新 /etc/security/domobjs 文件中的文件、设备、网络端口对象信息。
- 如何列出某个对象的域属性?
lssecattr 命令可以列出某个对象的域属性:
lssecattr -o <object name>
- 如何移除某个域对象的域属性?
使用 rmsecattr 命令移除一个域对象的域属性:
rmsecattr –o <object name>
rmsecattr 只移除对象的域属性。它不会从系统中移除实际对象。
- 如何将域分配给一个用户?
使用 mkuser 命令在创建用户时为用户添加域信息。chuser 命令用来为已有的用户添加域信息:
mkuser -a domains=<domain name> <user name>
或
chuser domains=<domain name> <username>
- 如何将域数据库加载到内核?
使用 setkst 命令将域表加载到内核。不带任何选项的 setkst 会将所有 RBAC 和域 RBAC 表加载到内核。
以下命令会将域和域对象表加载到内核:
setkst -t dom,domobj
对任何域或域对象所作的修改要在更新到内核后才会生效。
- 什么是系统上的 RBAC 数据库?
以下文件用于维护 RBAC 信息:
- /etc/security/roles:维护用户定义和预定义角色
- /etc/security/privcmds:维护特权命令信息
- /etc/security/privdevs:维护特权设备信息
- /etc/security/privfiles:维护特权文件信息
- /etc/security/domains:维护域信息
- /etc/security/domobjs:维护域对象信息
- 如何将 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?
efsenable 命令可以启用系统上的 EFS 的文件系统:
efsenable -a
在启用 EFS 文件系统之前,先在系统上安装 clic.rte 文件集。EFS 命令还要求系统上已启用 RBAC。该命令会在 /var 文件系统下创建 /efs 目录。它还会更新 /etc/security/user 和 /etc/security/group 文件中的 EFS 属性。
- 如何列出 EFS 支持的算法和密码?
以下命令可以列出 EFS 支持的算法和密码。
efsenable -q
- 系统上已创建的 EFS 密钥存储在哪?
- EFS 密钥存储在 /var/efs 目录下。
- 用户密钥存储在 /var/efs/users 目录下。
- 组密钥存储在 /var/efs/groups 目录下。
- EFS 管理员密钥存储在 /var/efs/efs_admin 目录下。
用户的密钥存储有用户的密码保护。如果用户的登录密码和密钥存储密码相同,密钥会自动加载到内核中。
管理员密钥存储和组密钥存储没有密码保护,而是用访问密钥保护。
- 如何管理 AIX 系统上的 EFS 密钥存储?
efskeymgr管理系统上的用户和组密钥存储。efskeymgr -v显示系统上已登录用户的密钥存储内容。efskeymgr -V显示加载到内核的密钥列表。
- 如何管理 EFS 的文件加密和解密?
efsmgr加密和解密 EFS 上的文件。efsmgr -c <cipher>设置加密密码。efsmgr -e <file>加密文件。efsmgr -d <file>解密文件。
- 如何将 EFS 数据库迁移到 LDAP 服务器?
efskstoldif 命令可以读取本地数据库的信息,并将其转换成 LDIF 文件格式:
efskstoldif -d <ldap basedn> >> /tmp/efs.ldif
它会将所有的用户和组密钥存储导出为带有基础 DN 的 ldif 格式,并导入 /tmp/efs.ldif 文件中。文件名是用户定义文件名。使用 ldapadd 命令将此文件导入 LDAP 服务器。关于 EFS 的更多信息,请参阅 参考资料 一节。
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 位密码长度。
- 如何设置系统上的密码哈希算法?
chsec -f /etc/security/login.cfg -s usw -a pwd_algorithm=<algorithm name>
- 如何列出系统上的密码哈希算法?
lssec -f /etc/security/login.cfg -s usw -a pwd_algorithm
如果未显示任何算法,那么使用的是默认算法 “crypt”。关于 LPA 更多信息,请参阅 参考资料 一节。
可信执行 (TE) 在 AIX 6.1 及以上版本均有实现,它提供了可信任级的系统信息。它会监控系统的完整性并实现高级安全策略。TE 是包含了一些可信计算基础 (TCB) 功能的功能强大的增强型机制。可信执行引入了更多新的验证和保护系统完整性的高级概念。
TE 支持以下特性:
- 管理可信签名数据库 (TSD)
- 配置安全策略
- 可信执行路径和可信库路径
- 审计可信签名数据库的完整性
- TE 如何维护重要或可信的文件信息?
TE 使用可信签名数据库 (TSD),它驻留在 /etc/security/tsd/tsd.dat 文件中。使用 trustchk 命令添加、删除或列出 TSD 中的条目。
- 如何检查 TSD 中所有文件与系统的完整性?
trustchk -n ALL
- 如何启用系统上的 TE?
trustchk –p TE=ON
- 如何禁用系统上的 TE?
trustchk -p TE=OFF
- 如何启用检查系统上可执行文件的策略?
通过输入以下命令配置策略:
trustchk -p CHKEXEC=ON
通过输入以下命令激活策略:
trustchk -p TE=ON
只有当可信执行为 ON 时,策略才能激活。
- 如何列出当前 TSD 的哈希算法?
trustchk –g
- TSD 支持的哈希算法有哪些?
TSD 支持以下算法:
- SHA 1
- SHA 256
- SHA 512
- TE 策略存储在哪?
TE 策略存储在 /etc/security/tsd/tepolicies.dat 文件中。
- 如何将 TSD 和 TE 策略迁移到 LDAP 服务器?
输入以下命令,将本地定义的信息转换成 LDIF 文件格式:
tetoldif –d <base DN>
此命令会将可信签名数据库 (TSD) 和可信执行策略数据库信息转换成 LDIF 文件格式。
如果只转换 TSD,指定 “-s” 选项。如果只转换可信执行策略数据库,指定 “-p” 选项。
- 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 产品试用版可供选择。
讨论
- 在 Twitter 上关注 developerWorks。
- 参与 developerWorks 博客 并加入 developerWorks 社区。
- 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。
- 参与 AIX 和 UNIX® 论坛:
