CentOS7服务器安全加固:从密码策略到会话管理的全方位配置指南
1. 密码复杂度配置实战刚接手一台新部署的CentOS7服务器时我总会先检查密码策略。记得有次因为疏忽了这项配置结果运维的测试服务器被暴力破解整整清理了一下午的挖矿程序。现在我把这套经过实战检验的配置方法分享给你。CentOS7默认使用pam_pwquality模块来管理密码复杂度它比老版本的pam_cracklib更智能。配置的核心文件是/etc/pam.d/system-auth用vim打开后找到包含pam_pwquality.so的那行我通常这样修改password requisite pam_pwquality.so try_first_pass local_users_only retry3 minlen10 lcredit-1 ucredit-1 dcredit-1 ocredit-1 difok6 enforce_for_root这些参数看起来有点复杂其实理解起来很简单minlen10表示密码最少10位比默认的8位更安全lcredit-1强制至少1个小写字母ucredit-1必须包含1个大写字母dcredit-1数字不能少ocredit-1特殊字符也得有difok6新旧密码至少要有6个字符不同enforce_for_root这个特别重要让root账号也不能例外配置完成后可以马上用passwd命令测试效果。比如尝试设置简单密码123456系统会直接拒绝并提示不符合复杂度要求。有个实用技巧用grep pam_pwquality /etc/pam.d/*命令可以检查所有启用了密码复杂度的服务。2. 密码有效期精细管理很多运维人员容易忽视密码有效期设置直到出现安全事件才追悔莫及。在金融行业的生产环境中我们甚至要求每90天必须更换密码。CentOS7的密码有效期配置主要在两个地方首先是/etc/login.defs文件建议这样配置PASS_MAX_DAYS 90 PASS_MIN_DAYS 1 PASS_MIN_LEN 10 PASS_WARN_AGE 7这里有个坑要注意这些设置只对新创建的用户生效对于已存在的用户必须用chage命令单独设置。我常用的完整检查命令是chage -l 用户名 # 查看当前设置 chage -M 90 用户名 # 设置最大有效期 chage -W 7 用户名 # 提前7天警告更直观的方法是使用交互式设置chage 用户名这会进入问答模式可以设置密码的最后修改日期、失效日期等各种参数。建议为关键账号设置更严格的有效期比如数据库管理账号可以设为60天更换一次。3. 会话超时自动锁定去年我们有个客户的生产服务器就因为运维人员离开电脑未锁屏导致敏感数据泄露。现在我都养成了配置会话超时的习惯。CentOS7的配置非常简单echo TMOUT600 /etc/profile echo readonly TMOUT /etc/profile source /etc/profile这个设置表示10分钟无操作就会自动断开会话。readonly参数很重要它能防止普通用户修改这个超时设置。如果想对不同用户设置不同的超时时间可以改在/etc/bashrc或用户家目录的.bashrc里配置。测试时有个小技巧新开一个SSH窗口执行echo $TMOUT看是否生效。如果没生效检查下/etc/profile是否有其他设置覆盖了TMOUT变量。对于生产环境建议配合tmux或screen使用这样即使超时断开关键进程也不会中断。4. 登录失败锁定机制暴力破解是服务器最常见的攻击方式之一。我配置的防暴力破解方案是这样的对于控制台登录修改/etc/pam.d/system-authauth required pam_tally2.so onerrfail deny5 unlock_time600对于SSH登录还需要修改/etc/pam.d/sshdauth required pam_tally2.so onerrfail deny5 unlock_time600这个配置表示连续5次登录失败就锁定账号锁定时间为600秒10分钟错误计数会在成功登录后清零调试时可以用pam_tally2 --user 用户名查看失败次数。如果误锁定了账号用pam_tally2 --user 用户名 --reset解锁。有个特殊情况要注意如果服务器启用了SELinux可能需要额外配置策略模块。5. 综合防护与排查技巧完成以上配置后我通常会做这些检查用grep -E TMOUT|umask /etc/profile /etc/bashrc检查超时设置用cat /etc/pam.d/system-auth | grep -v ^#确认PAM配置用chage -l root查看root账号的密码有效期曾经遇到过配置不生效的情况后来发现是/etc/pam.d/目录下的其他配置文件覆盖了设置。建议用这个命令全面检查grep -r pam_pwquality /etc/pam.d/对于关键业务服务器我还会额外配置限制SSH登录IP/etc/hosts.allow修改默认SSH端口/etc/ssh/sshd_config启用防火墙firewalld或iptables安装fail2ban增强防护最后提醒下所有安全配置修改后一定要在新窗口测试确认效果避免把自己锁在服务器外面。建议先在测试环境验证并保留一个备用的管理通道。