AIX 6.1操作系统启用了多种安全性功能。 本文提供了AIX 6.1和7.1可用的AIX安全命令列表。 列出的命令按安全功能分组。
基于角色的访问控制(RBAC)机制
在操作系统中,管理员负责管理系统。 在AIX中,“ root”用户在所有用户中具有最大特权。 通过引入基于角色的访问控制(RBAC),可以将root用户特权委派给其他用户。 有了这些附加特权,非root用户就可以管理系统上的某些管理任务。
RBAC可从AIX 4.2.1发行版开始。 但是,它在AIX 5.3之前提供有限的支持。 从AIX 6.1开始,RBAC功能得到了扩展。 这提供了对操作系统上访问机制的精细控制。
RBAC有两种模式:
- 传统RBAC模式
- 增强型RBAC模式
缺省情况下,AIX 6.1系统启用了增强的RBAC机制。
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模式。 如果状态显示为“假”,则启用旧式RBAC模式。
- 您如何在AIX上创建角色?
mkrole命令在系统上创建一个新角色。 角色定义在/ etc / security / roles文件中。
要在AIX上创建角色,请输入:
mkrole dfltmsg="description of role" <role name>
- 您如何更改已创建角色的属性?
chrole命令使您可以更改系统上现有已创建角色的属性:
chrole <attribute=value> <rolename>
- 您如何列出系统上存在的角色?
lsrole命令列出了系统上存在的角色:
lsrole <role name>
- 您如何删除系统上的角色?
使用rmrole命令从系统中删除角色定义:
rmrole <rolename>
- 您如何将角色定义加载到AIX内核中?
setkst命令将角色,授权,特权,设备,域和域对象定义更新到内核表中。 RBAC安全检查在内核级别执行。 因此,每当用户空间中的RBAC表发生更改时,都需要将其更新为内核才能生效。
要更新所有表,请键入以下内容:
setkst
要将特定的RBAC表更新到内核,请在setkst命令中使用“ -t”选项:
setkst –t <table name>
表名称可以是“角色”,“身份验证”,“ 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属性?
rmsecattr命令删除了特权命令,设备或文件的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关键字。 但是,如果用户具有八个以上的角色,则在指定ALL关键字时,仅前八个角色分配给角色会话。
域RBAC
域RBAC是一种限制未经授权的用户访问资源的机制。 通常,域RBAC为具有给定角色的特权和授权用户提供对象隔离。
域RBAC需要启用增强型RBAC,并且不能在旧式RBAC模式下工作。 默认情况下,增强型RBAC模式系统上启用了域RBAC。 从AIX 6.1 Tl07和AIX 7.1 Tl01开始可用的Domain RBAC。
域RBAC命令
- 如何在系统上创建域?
mkdom命令在域RBAC数据库中创建一个新域。 用户可以使用mkdom命令指定域属性。 键入以下命令以在系统上创建域:
mkdom <domain name>
mkdom在域RBAC数据库/ etc / security / domains中创建域定义。
- 您如何在系统上列出域?
lsdom命令列出了域数据库中存在的域。 键入以下命令以列出系统上的域:
lsdom <domain name>
该列表列出&lt;域名&gt;的域信息。 要获取域数据库中存在的所有域,请使用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>
这将在stdout上显示信息,但是可以将其重定向到文件。 使用-s选项可转换为特定的RBAC表。 指定以下字母中的至少一个,每个字母代表一个表名:
信 表名 一个 指定授权表。 C 指定特权命令表。 d 指定特权设备表。 [R 指定角色表。 F 指定特权文件表。 Ë 指定域文件表。 Ø 指定域对象表。 使用ldapadd或idsldapadd命令将LDIF文件信息加载到LDAP服务器:
ldapadd –h <ldap server> -D <bind dn> -w <bind password > -i <file name>
在将RBAC数据库加载到LDAP服务器之前,请在LDAP服务器上加载RBAC模式。
所有RBAC和域RBAC命令都支持LDAP。 使用-R LDAP选项可在LDAP服务器上创建RBAC和域RBAC信息。
加密文件系统(EFS)
加密文件系统(EFS)使系统上的各个用户可以通过其各自的密钥存储区对文件系统上的数据进行加密。 每个用户都与一个密钥相关联,并且这些密钥存储在受密码保护的密钥存储区中。 用户成功登录后,用户的密钥将加载到内核中并与进程凭据关联。
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的更多信息,请参见“ 相关主题”部分
可加载密码算法(LPA)
AIX 6.1提供了密码哈希算法。 这些算法提供了创建256个字符的密码的便利。 从AIX 5.3 Tl06版本开始还支持LPA。 提供了以下密码哈希算法:
- MD5
- SHA 1
- SHA 256,SHA 512
- 河豚
密码哈希算法在/etc/security/pwdalg.cfg文件中定义。 管理员需要在/etc/security/login.cfg文件中的usw节下声明密码哈希算法。 只要通过passwd或pwdadm命令为用户设置了密码,就会使用这些算法。
MD5和SHA支持的密码长度最大为255个字符,而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发行版开始实施的Trusted Execution(TE)提供有关系统的可信级别信息。 它监视系统的完整性并实施高级安全策略。 TE是一种更强大和增强的机制,与某些可信计算库(TCB)功能重叠。 可信执行引入了一种新的更高级的概念,用于验证和保护系统完整性。
TE支持以下功能:
- 管理可信签名数据库(TSD)
- 配置安全策略
- 可信执行路径和可信库路径
- 审核可信签名数据库的完整性
TE命令
- TE如何维护关键或受信任的文件信息?
TE使用位于/etc/security/tsd/tsd.dat文件下的可信签名数据库(TSD)。 使用trustchk命令可从TSD添加,删除或列出条目。
- 您如何针对系统检查TSD中存储的所有文件的完整性?
trustchk -n ALL
- 如何在系统上启用TE?
trustchk –p TE=ON
- 如何在系统上禁用TE?
trustchk -p TE=OFF
- 如何启用策略以检查系统上的可执行文件?
通过输入以下命令来配置策略:
trustchk -p CHKEXEC=ON
通过输入以下命令来激活策略:
trustchk -p TE=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和可信计算库(TCB)有什么区别?
可信计算库(TCB) 可信执行(TE) 在系统安装期间启用。 在运行时启用。 使用/etc/security/sysck.cfg文件作为数据库。 使用/etc/security/tsd/tsd.dat和/etc/security/tsd/tepolicies.dat文件。 安装后无法禁用它。 可以在任何时间禁用它。 tcbck命令用于管理可信计算数据库。 trustchk命令用于托管可信签名数据库。 有关受信任的执行的更多信息,请参见“ 相关主题”部分。
结论
AIX 6.1安全性功能提供了精细的访问控制机制,并可以动态地对系统进行完整性检查。 AIX 6.1中引入的一些安全性命令和现有命令已使用新选项扩展,以支持操作系统中的高级安全性功能。
翻译自: https://www.ibm.com/developerworks/aix/library/au-security_cmds2/index.html