服务器权限审计需闭环验证:检查账户状态与归属、sudo危险命令授权、敏感路径权限;启用auditd监控、远程日志转发、异常行为扫描,并输出结构化结果。

服务器用户权限审计与检查,核心是验证“谁有权限、能做什么、是否合理、有没有异常”,不是翻一遍配置就完事,而是形成可重复、可验证、有反馈的闭环动作。
账户状态与归属真实性检查
先确认账户本身是否可信、是否还在用:
- 运行 awk -F: '$3 >= 1000 && $3 筛出普通用户,逐个核对是否为真实运维或业务人员
- 执行 lastlog -b 90 查看连续90天未登录的账户,标记评估是否需禁用或删除
- 检查 /etc/shadow 中密码字段为 * 或 ! 的账户(如 sync、halt),确认其 shell 是否设为 /sbin/nologin
- 禁用默认高危账户:passwd -l root、passwd -l operator、passwd -l games
认证强度与登录控制有效性验证
密码策略和SSH配置不能只看“有没有”,要看“起不起作用”:
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
- 检查 /etc/pam.d/system-auth 是否启用 pam_pwquality.so,参数如 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 表示强制复杂度
- 确认 /etc/pam.d/sshd 含有 auth [default=die] pam_faillock.so authfail deny=6 unlock_time=900,并用测试账户输错6次验证是否真被锁
- 确保 /etc/ssh/sshd_config 中 PasswordAuthentication no 且 PermitRootLogin no,再用 ssh -o PubkeyAuthentication=yes user@host 测试密钥登录是否唯一通路
权限分配与提权路径审查
重点不是“有没有sudo”,而是“sudo了什么、谁在用、能不能绕过”:
- 执行 grep 'ALL=(ALL)' /etc/sudoers /etc/sudoers.d/* 2>/dev/null | grep -v '^#' 找出无限制提权账户,逐一评估必要性
- 对每个有sudo权限的用户运行 sudo -l -U username,特别关注 NOPASSWD: /bin/bash、/usr/bin/find、/usr/bin/vim 这类危险命令授权
- 检查 /etc/group 中 wheel 或 sudo 组成员,剔除非授权人员
- 确认敏感路径权限:运行 ls -l /etc/shadow /root,应显示 -rw------- 和 dr-x------
行为日志与持续监控落地项
没有日志的权限检查等于没做,关键看能否回溯、防篡改、可告警:
- 启用 auditd 监控账户变更:规则如 -w /etc/passwd -p wa -k usermod、-w /etc/sudoers -p wa -k sudoers
- 配置远程日志转发,把 /var/log/secure、audit.log 发送到独立SIEM或日志服务器,避免本地删改
- 每日扫描异常行为:用 ausearch -m USER_AUTH -ts yesterday | ausearch -i 提取认证事件,过滤非常规IP或非工作时间登录
- 所有检查脚本统一输出结构化结果(如JSON),便于归档、比对和触发自动修复流程

















