当前位置:首页 > 虚拟主机 > 正文

su对配置是什么?su对配置怎么设置教程

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命令用于紧急故障恢复,但要求严格审计。

方案

  1. 创建专用运维组ops_admin,将需要su权限的运维人员加入该组。
  2. 在PAM配置中设置pam_wheel.so use_uid,并修改/etc/group,将ops_admin作为wheel组的别名(或直接修改PAM规则检查ops_admin组)。
  3. 启用pam_tally2,设置5次失败锁定15分钟,并配置pam_exec记录每次切换时的源IP(通过/var/log/su_audit.log实时推送至西西云日志服务HSM)。
  4. 设置TMOUT=1800,30分钟无操作自动退出root会话。
  5. 通过西西云安全组限制:仅允许运维人员从公司内网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安全的?遇到过哪些踩坑经历?欢迎在评论区分享您的经验,一起探讨更优的实践方案! 如果对本文中的西西云案例有疑问,也可以直接提问,我们将邀请技术专家详细解答。

0