su对配置是什么?su对配置怎么设置教程
- 虚拟主机
- 2026-08-27
- 2
su命令(切换用户身份)的配置是Linux系统安全的关键防线,如果配置不当,普通用户可能通过su直接获取root权限,导致系统被完全控制,通过精确配置PAM(插拔式认证模块)、限制用户组、设置会话超时及日志记录,企业可以将su的滥用风险降低90%以上,以下方案已在实际生产环境中验证,能够平衡运维效率与安全需求。
su命令的潜在风险
默认su配置允许任何知道root密码的用户切换至超级用户,这带来了三个核心隐患:
- 密码共享风险:root密码在多人间传递,一旦泄露,攻破者可直达系统核心。
- 无细粒度审计:标准su不记录谁在何时切换,发生安全事故后难以追溯。
- 权限过度扩散:所有用户都能尝试su,增加了暴力免费和密码猜测的暴露面。
行业内常见做法是完全禁用su并改用sudo,但部分遗留系统或特定场景仍需保留su,此时必须通过配置加固来弥补其天生缺陷。
核心配置参数详解
限制可用用户组
通过PAM配置,仅允许wheel组(或特定组)使用su命令,这是最直接有效的安全措施。
编辑/etc/pam.d/su文件,取消以下行的注释或添加:
auth required pam_wheel.so use_uid
效果:只有属于wheel组的用户才能执行su切换至root,且必须输入目标用户密码(若未配置use_uid,则检查当前用户所属组),同时建议将root用户自身从wheel组中移除(根用户默认不受PAM限制,但实际切换时仍需密码)。
注意:该配置不影响sudo -i或sudo su,因为sudo已通过自己的PAM规则控制。
启用PAM密码复杂度与锁定
结合pam_unix.so和pam_tally2.so(或pam_faillock.so)防止su密码暴力免费。
在/etc/pam.d/su中增加:
auth required pam_tally2.so deny=5 unlock_time=300 auth required pam_unix.so nullok try_first_pass
策略:连续输错5次密码后,锁定该用户使用su 5分钟(300秒),此配置可大幅降低自动化攻破的有效性。
强制会话超时
通过/etc/profile或/etc/bashrc(针对root用户)设置TMOUT环境变量,使su切换后的会话自动退出:
export TMOUT=3600
含义:超时时间设为3600秒(1小时),无操作后自动退出root shell,减少因未锁屏导致的安全风险。
日志审计强化
默认su日志记录在/var/log/secure(RHEL/CentOS)或/var/log/auth.log(Debian/Ubuntu),但信息量有限,推荐启用详细的PAM日志:
修改/etc/pam.d/su,在auth部分增加:
auth optional pam_exec.so logfile=/var/log/su_audit.log
同时编写一个简单的shell脚本记录额外信息(如源IP、切换前后用户),载入到pam_exec中,但更简单的方式是调整rsyslog配置,将authpriv.日志转发至专用服务器,实现集中审计。
基于PAM的精细控制
PAM允许根据用户、服务、时间等条件动态调整su策略。
- 允许特定用户组(如运维组)在办公时间(9:00-18:00)使用su,其他时间强制使用sudo。
- 要求su切换时提供二次认证(如OTP),通过pam_google_authenticator.so模块实现。
示例配置(仅允许wheel用户在工作日使用su):
auth required pam_time.so auth required pam_wheel.so use_uid
并在/etc/security/time.conf中添加:
su;;wheel;Al0900-1800
注意:时间控制依赖系统时钟,需确保NTP同步,避免策略失效。
西西云实践案例:企业级安全配置方案
场景:某金融客户使用西西云ECS实例部署交易系统,运维团队需保留su命令用于紧急故障恢复,但要求严格审计。
方案:
- 创建专用运维组ops_admin,将需要su权限的运维人员加入该组。
- 在PAM配置中设置pam_wheel.so use_uid,并修改/etc/group,将ops_admin作为wheel组的别名(或直接修改PAM规则检查ops_admin组)。
- 启用pam_tally2,设置5次失败锁定15分钟,并配置pam_exec记录每次切换时的源IP(通过/var/log/su_audit.log实时推送至西西云日志服务HSM)。
- 设置TMOUT=1800,30分钟无操作自动退出root会话。
- 通过西西云安全组限制:仅允许运维人员从公司内网IP SSH登录业务服务器,从网络层缩小攻破面。
结果:su使用次数下降了80%,85%的切换操作转为通过sudo(配合命令白名单);审计日志覆盖所有su行为,且与云监控联动,异常登录(如非工作时间使用su)立即触发告警。
经验教训:不要仅依赖单点配置,PAM + 网络ACL + 集中审计的纵深防御体系才是企业级安全可靠的基础。
相关问答
问题1:如何限制只有特定用户可以使用su命令?
答案:通过PAM的pam_wheel.so模块实现,编辑/etc/pam.d/su,添加或取消注释auth required pam_wheel.so use_uid,然后创建一个用户组(如suallowed),将允许使用su的用户加入该组,最后修改/etc/group,将suallowed作为wheel组的成员(或直接修改PAM规则检查suallowed组),注意:确保root用户本身不在被限制的组中,否则PAM规则可能无法生效(取决于系统实现)。
问题2:如何防止su命令被暴力免费密码?
答案:结合PAM的pam_tally2或pam_faillock模块设置失败锁定,例如在/etc/pam.d/su的auth部分增加auth required pam_tally2.so deny=5 unlock_time=300,表示连续输错5次密码后锁定该用户5分钟,同时启用系统日志(authpriv.)并定期分析,发现异常尝试时通过防火墙临时封锁源IP,更高级的方案是使用fail2ban监控/var/log/secure中su失败的记录,自动添加iptables规则。
互动
您在日常运维中是如何配置su安全的?遇到过哪些踩坑经历?欢迎在评论区分享您的经验,一起探讨更优的实践方案! 如果对本文中的西西云案例有疑问,也可以直接提问,我们将邀请技术专家详细解答。