本文目录导读:

- 理解AIX核心权限机制
- 关键系统文件和目录的权限加固
- 使用ACL实现精细访问控制
- 管理SUID/SGID程序
- 使用RBAC(基于角色的访问控制)替代全能的root
- 用户账户安全配置(
/etc/security/user) - 监控与审计
- 安全配置最佳实践流程图
在AIX系统中,安全配置权限的核心在于遵循最小权限原则(Principle of Least Privilege),即只授予用户完成其任务所必需的最小权限,以下是从系统层面、文件层面和用户层面进行安全权限配置的详细指南:
理解AIX核心权限机制
- 标准UNIX权限:所有者 (Owner)、所属组 (Group)、其他用户 (Others),以及读 (r=4)、写 (w=2)、执行 (x=1)。
- ACL(访问控制列表):AIX 支持 POSIX 和 AIX 扩展 ACL,可以实现比标准权限更精细的控制。
- 扩展权限:AIX 特有,特别是 (权限集模式,Permission Set Mode),通常涉及 SUID、SGID 和 sticky bit 的特定组合。
- RBAC(基于角色的访问控制):AIX 支持 RBAC,可以将管理权限(如
shutdown、mount)直接授权给用户,而无需给予完全的 root 权限。
关键系统文件和目录的权限加固
这是安全配置的第一步,也是最关键的一步,建议定期检查以下关键项:
| 文件/目录 | 建议权限 | 所有者 | 安全说明 |
|---|---|---|---|
/etc/passwd |
644 |
root:security |
对所有用户可读,但只有 root 可写,切勿使用 777。 |
/etc/security/passwd |
600 |
root:security |
极重要,加密密码和密码策略文件,只有 root 可读写。 |
/etc/security/group |
600 |
root:security |
组安全信息。 |
/etc/security/user |
600 |
root:security |
用户属性配置。 |
/etc/security/environ |
600 |
root:security |
环境变量配置。 |
/etc/security/limits |
600 |
root:security |
资源限制。 |
/etc/inetd.conf |
600 |
root:system |
网络服务守护进程配置,只有 root 可管理。 |
/etc/hosts.equiv |
600 |
root:system |
信任主机认证(强烈建议不使用),若存在,必须严格限制。 |
/.rhosts |
600 |
root:system |
同 hosts.equiv,应删除或严格限制。 |
/var/adm/sulog |
600 |
root:adm |
su 命令日志,记录谁切换了用户。 |
/var/adm/wtmp |
644 |
root:adm |
登录/登出记录。 |
/etc/rc.* 启动脚本 |
755 或 700 |
root:system |
所有启动脚本目录(如 /etc/rc.d/init.d/)权限应为 755,脚本本身应 755 并仅 root 可写。 |
/tmp 目录 |
1777 |
root:system |
必须设置粘滞位 (sticky bit),用户只能删除自己的临时文件。 |
检查与修复命令示例:
# 检查关键文件权限 ls -l /etc/security/passwd /etc/passwd /tmp # 修正密码文件权限(非常重要) chmod 600 /etc/security/passwd chmod 644 /etc/passwd # 修正 /tmp 缺失的粘滞位 chmod 1777 /tmp
使用ACL实现精细访问控制
当标准权限无法满足需求时(希望一个非组内的用户只读某个文件),使用ACL。
- 查看ACL:
aclget /path/to/file - 设置ACL:
- 设置单个用户:
setacl -m user:username:rw- /path/to/file(授予用户 username 读写权限) - 设置单个组:
setacl -m group:groupname:r-- /path/to/file(授予组 groupname 只读权限) - 设置默认ACL(针对目录):
setacl -d -m user:user1:rwx /path/to/dir(在该目录下新创建的文件自动继承此权限)
- 设置单个用户:
安全建议:
- 优先使用ACL而非
chmod 777。 - ACL 提供了比标准位更丰富的可能性(如
deny规则),可以精确拒绝某用户的访问。 - 注意:ACL 会覆盖标准
chmod的效果,使用ls -l查看时,权限位后可能会显示 号(表示有ACL)。
管理SUID/SGID程序
SUID/SGID 程序允许普通用户以文件所有者(通常是 root)的身份执行,这是主要的安全风险点。
- 查找所有SUID程序:
find / -type f -perm -4000 -ls 2>/dev/null - 查找所有SGID程序:
find / -type f -perm -2000 -ls 2>/dev/null
加固策略:
- 最小化:移除不必要的SUID/SGID,如果
tar命令不需要,可以去掉其SUID位:chmod u-s /usr/bin/tar(需确认系统是否依赖)。 - 设置特殊的SUID/SGID挂载选项:在
/etc/filesystems中,为特定文件系统(如/tmp)设置nosuid选项,可以禁止该文件系统上的任何二进制文件使用SUID/SGID:/tmp: dev = /dev/hd3 vfs = jfs2 log = /dev/hd8 mount = true options = nosuid - 监控:定期检查SUID/SGID是否新增,使用脚本比对每周的“已知安全”列表。
使用RBAC(基于角色的访问控制)替代全能的root
不要给所有管理员 root 密码,使用RBAC赋予他们执行特定命令的权限。
- 创建角色:例如创建一个
sysadm角色,允许重启系统、查看日志。# 创建角色 mkrole -a authorizations=REBOOT,VIEWLOGS descr="System Admin Role" sysadm
- 创建权限(Privileges):定义更细粒度的操作(AIX 7.2+ 支持更细粒度的特权)。
- 授权给用户:将用户加入该角色。
# 将用户 user1 授权为 sysadm 角色 setsecattr -c roles=sysadm user user1
实际收益:
- 审计:可以追踪到哪个特定用户执行了特权操作,而不是简单的“root”。
- 风险降低:即使攻击者拿到了
user1的密码,他也只能重启系统或查看日志,无法修改密码或安装后门。
用户账户安全配置(/etc/security/user)
编辑 /etc/security/user 文件,为每个用户或组设置安全属性。
- 密码策略:
default: minlen = 8 # 最小密码长度 minalpha = 2 # 最少字母数 minother = 1 # 最少非字母字符数(如数字、符号) maxage = 4 # 密码最长有效期(周),4周约28天。 histsize = 10 # 记住最近10次密码,防止重复使用 loginretries = 5 # 登录失败5次后锁定帐户 lockouttime = 300 # 锁定后等待5分钟才能再次尝试 - 禁用不需要的登录权限:对于服务账户(如
ftp、nobody),设置login = false以防止交互式登录。ftp: login = false - 开启密码加密:确保
SYSTEM = "compat"或"DCE",且EFFECTIVE_SECTION使用了强哈希(如SHA256或SHA512),检查/etc/security/login.cfg中的pwd_algorithm配置,建议设置为SSHA256或SSHA512。
监控与审计
没有配置的安全是不完整的,配置完成后需要持续监控。
- 配置审计子系统:
# 启用审计并监控文件权限变更、登录、su操作 audit start audit query -o event=FILE_Write,S_USER_Login,F_USER_Login | auditstream | more
- 定期运行检查脚本:使用
authck或编写自定义脚本来检查文件权限、SUID/SGID列表、用户属性(lsuser)。
安全配置最佳实践流程图
- 盘点:列出所有用户、组、管理端点。
- 固化:严格锁定加密文件、passwd文件、日志和启动脚本权限(
600、644、1777)。 - 最小化:移除不必要的
SUID/SGID;使用nosuid挂载临时目录。 - 精细化:对需要共享的目录使用 ACL;对特权操作使用 RBAC。
- 强策略:实施强密码策略、锁定策略、密码历史记录。
- 审计:开启审计,定期检查
sulog、wtmp,并比对特权文件列表的变化。
特别注意:对于生产环境,建议先在一个非关键系统上测试这些修改,然后使用 mksysb 或 NIM 备份后,在变更窗口内实施,错误的权限配置(如 /etc/security/passwd 变成了 644)可能导致系统无法登录。