最小权限管理是精准授予刚好够用的权限,纵深防御是将权限控制嵌入每层防线:网络层锁入口筛身份,认证层控操作防提权,系统层降权运行限资源,检测层监控告警保闭环。

最小权限管理不是“少给点权限”,而是让每个用户、服务和进程只拿到刚好够用的那一小块,多一分会增加风险,少一分会影响功能。纵深防御也不是堆砌工具,而是把权限控制嵌进每一层防线里——从谁能连进来,到连进来后能看什么、改什么、运行什么,层层设防,环环兜底。
网络与访问控制层:先锁住入口,再筛清身份
这是攻击者最先触碰的一层,也是权限管理的起点。不能只靠“关端口”来收缩暴露面,关键在于区分“谁可以连”和“连上来能做什么”。
- 禁用 root 远程登录,强制使用普通运维账号 + SSH 密钥认证,避免密码爆破直达最高权限
- 云环境用安全组或网络 ACL 实现“最小开放”:只放行必需端口(如 22、443),且限制源 IP 范围,不开放 0.0.0.0/0
- 对 SSH 服务启用 Match User/Group 配置,为不同角色设置不同策略,比如审计账号禁止执行命令,仅允许 sftp;开发账号禁止 sudo,但可访问特定日志目录
- 关闭 ICMP 响应、禁用 IPv6 重定向等内核参数,减少被动泄露信息的风险
身份认证与授权层:细粒度控制“你能干什么”
连接成功只是开始,真正的权限博弈发生在登录之后。这一层的目标是:即使账号被窃,攻击者也无法提权或横向移动。
- 用 sudoers 文件做命令级授权,例如
%deploy ALL=(nginx) /usr/bin/systemctl restart nginx,不给 shell 权限,只允许可信操作 - 为关键服务创建独立系统用户(如 www-data、redis),并确保其 shell 设为
/usr/sbin/nologin,杜绝交互式登录 - 启用 PAM 模块强化认证流程,比如
pam_faillock.so限制失败尝试次数,pam_pwquality.so强制密码复杂度 - 定期检查
/etc/passwd中 UID 0 的非 root 账户、空密码账户、过期账户,及时清理
系统与服务强化层:权限下沉到文件、进程与内核
权限不该只停留在用户层面,还要落到具体资源上。一个服务是否以最低权限运行?关键配置文件是否可被任意修改?内核是否默认放行危险行为?
- 用 SELinux 或 AppArmor 为服务定义策略,比如限制 nginx 只能读取
/var/www和写入/var/log/nginx,禁止访问数据库 socket - 收紧关键目录权限:
/etc/shadow必须为 600,/root和/home/*/.ssh目录设为 700,避免私钥被其他用户读取 - 禁用内核模块自动加载(
kernel.modules_disabled=1),防止通过 insmod 加载恶意驱动提权 - 对敏感二进制文件(如
/usr/bin/sudo)启用 setuid/setgid 审计,配合 auditd 监控异常调用
检测与响应层:让越权行为无法隐身
再严密的权限设计也难保万无一失。这一层不追求“拦住所有”,而是确保“任何越权都被看见、被记录、被阻断”。
- 开启 auditd,重点监控
execve、setuid、chmod、chown等系统调用,规则写入/etc/audit/rules.d/permissions.rules - 部署文件完整性监控(如 AIDE 或 Tripwire),定期比对
/etc、/bin、/sbin下关键文件的哈希值,发现篡改立即告警 - 将所有用户操作日志(包括 sudo 命令、SSH 登录、shell 历史)集中转发至远程日志服务器,防止本地日志被清除
- 对特权操作(如修改防火墙、重启服务、切换用户)配置实时告警,通过邮件或企业微信推送,延迟不超过 30 秒

















