服务器安全基线检查是围绕“身份可信、权限可控、行为可溯”展开的系统性验证,涵盖账户、认证、授权、审计、服务、网络、日志等维度,重点验证策略实效性而非仅配置存在;需通过awk筛选普通用户、grep检查sudo权限、sudo -l审查危险命令、ls确认关键文件权限、find排查全局可写文件、启用histtimeformat与auditd、验证日志转发及操作留痕。

服务器安全加固中的全面安全基线检查,不是一次性的配置核对,而是围绕“身份可信、权限可控、行为可溯”三个核心,对账户、认证、授权、审计、服务、网络、日志等维度做系统性验证。关键在于验证策略是否真正生效,而非仅看配置文件是否存在。
账号与身份唯一性检查
确保每个可登录账户都有明确归属和最小必要性:
- 运行 awk -F: '$3 >= 1000 && $3 筛出普通用户,人工确认是否全部为真实人员;
- 用 lastlog -b 90 标记连续90天未登录的账户,评估禁用或删除;
- 检查 /etc/shadow 中密码字段为 * 或 ! 的账户(如 sync、shutdown),确认其 shell 是否设为 /sbin/nologin;
- 禁用高危默认账户:passwd -l root、passwd -l operator、passwd -l games;
- 执行 awk -F: '$3 == 0 {print $1}' /etc/passwd,输出应仅有 root,否则存在提权风险。
认证强度与登录控制实效性验证
密码策略和SSH配置必须实测有效,不能只改参数不验效果:
- 确认 /etc/pam.d/system-auth 含 pam_pwquality.so 且参数合理(如 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1);
- 检查 /etc/pam.d/sshd 是否启用 faillock:含 auth [default=die] pam_faillock.so authfail deny=6 unlock_time=900;
- 用测试账户连续输错6次密码后,再尝试正确密码——应被拒绝并提示 account locked;
- 确认 /etc/ssh/sshd_config 中 PasswordAuthentication no 且 PermitRootLogin no,重启 sshd 后用密钥登录验证是否仍可用。
权限分配与提权路径审查
账户安全只是起点,重点是它能做什么:
- 执行 grep 'ALL=(ALL)' /etc/sudoers /etc/sudoers.d/* 2>/dev/null | grep -v '^#',识别无限制 sudo 权限账户,逐个评估必要性;
- 对每个普通用户运行 sudo -l -U username,检查是否被授予 NOPASSWD: /bin/bash、/usr/bin/find 等危险命令;
- 审查 /etc/group 中 wheel 或 sudo 组成员,剔除非授权人员;
- 确认关键路径权限:ls -l /etc/shadow /root /etc/passwd /etc/group,应分别显示 -rw-------、dr-x------、-rw-r--r--、-rw-r--r--;
- 查找全局可写文件:find / -type f -perm -002 -name "*" 2>/dev/null,重点关注 /tmp、/var/tmp 下异常脚本。
审计与行为监控有效性确认
日志不是存着就行,要确保记录完整、防篡改、可追溯:
- 启用命令时间戳:echo 'export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "' >> /etc/profile,并重载;
- 确认 auditd 已启用:systemctl is-active auditd,且规则覆盖账户变更(如 -w /etc/passwd -p wa);
- 检查日志是否转发至中心平台:查看 /etc/rsyslog.conf 或 /etc/rsyslog.d/*.conf 是否含 *.* @your-central-log-server:514;
- 手动创建测试用户,执行 useradd testuser,再查 ausearch -m user_add 或 journalctl -t useradd 是否有对应记录。











