防范权限提升需四层设防:账号创建、认证入口、权限执行、运行时约束;严格划分uid/gid范围(1000–59999),启用usergroups_enab yes,并清理越界账户。

防范非正常手段引发的权限提升风险,核心不是堵住某一个漏洞,而是让攻击者即使拿到普通用户 Shell,也难以跨出账户边界、无法复用系统配置缺陷、更难触达 root 权限。这需要从账号创建、认证入口、权限执行、运行时约束四个层面同步设防。
严格划分UID/GID范围并清理越界账户
Linux 内核不限制 UID 数值大小,但发行版靠约定实现安全隔离。不合规的 ID 分配会直接导致 sudo 规则误判、文件属主混乱甚至服务提权:
- 确认 /etc/login.defs 中设置:
UID_MIN 1000UID_MAX 59999GID_MIN 1000GID_MAX 59999
并启用USERGROUPS_ENAB yes(每个用户自动创建同名私有组) - 扫描并修复已存在的越界账户:
awk -F: '$3 (查低UID普通用户)<br> 对确认无用的账户,用 <code>usermod -u 1001 -g 1001 username迁移,并同步修正家目录与文件属主 - 禁止任何非 root 账户使用 UID 0 —— 包括别名、脚本伪造或历史残留账户
收紧认证入口,切断暴力与凭证复用路径
90% 的提权起点来自弱认证环节。攻击者常先拿下普通账户,再利用配置缺陷跳转更高权限:
- 禁用 SSH 密码登录,强制密钥认证;密钥必须带密码保护,公钥不得存于可写目录
- 在 /etc/ssh/sshd_config 中设置:
PermitRootLogin noPermitEmptyPasswords noMaxAuthTries 3 - 用 PAM 强制密码策略:
编辑 /etc/pam.d/common-password,加入:password requisite pam_pwquality.so retry=3 minlen=10 difok=3
同时禁用空密码:passwd -d username清除所有空口令 - 锁定长期不用账户:
passwd -l username,删除明确废弃账户:userdel -r username
限制特权执行能力,拒绝“一键提权”配置
sudo 是最常被滥用的提权通道。宽松规则等于主动交出 root shell:
- 用
visudo编辑 /etc/sudoers,删除所有NOPASSWD: ALL或通配符命令行 - 按最小权限原则授权,例如:
alice ALL=(root) /usr/bin/systemctl restart nginx
而非alice ALL=(ALL) ALL - 启用 sudo 审计:
确保 /etc/sudoers 包含:Defaults logfile="/var/log/sudo.log"
并配合 logrotate 定期归档 - 限制 su 切换范围:将允许用户加入
wheel组,并在 /etc/pam.d/su 中启用:auth required pam_wheel.so group=wheel
加固运行时环境,收窄攻击面
即使攻击者获得执行权限,也要让其无法持久化、无法逃逸、无法滥用内核能力:
- 检查并移除二进制文件不必要的 capabilities:
setcap -r /usr/bin/ping(除非业务强依赖)getcap -r /usr/bin/扫描全系统高危 capability - 确保敏感文件权限合规:
/etc/shadow必须为0000(即-r--------)/etc/passwd可读但不可写(644) - 挂载选项强化:
在 /etc/fstab 中为/tmp、/var/tmp添加noexec,nosuid,nodev - 启用 auditd 监控关键行为:
记录 UID 变更、sudo 执行、passwd 修改等事件,规则存于 /etc/audit/rules.d/











