核心原则是“最小权限+职责分离+动态验证”,需从系统账户、执行上下文、调用链路三层面收紧权限,隔离降权服务账户,限制系统调用与资源访问,执行前二次鉴权,并建立行为基线实时告警。
核心原则是“最小权限+职责分离+动态验证”,不是单纯给服务加个账号密码就完事。高权限服务组件一旦被劫持或误用,往往直接绕过应用层逻辑,直击系统底层,所以权限配置必须从系统账户、执行上下文、调用链路三个层面同时收紧。
绝不能让关键服务(如定时任务调度器、日志采集 agent、API 网关后台进程)以 root 或 Administrator 身份运行。应为每个服务创建专用系统用户,仅赋予其完成本职工作所必需的文件读写路径、系统调用能力(如 cap_net_bind_service)和 SELinux/AppArmor 上下文。
useradd -r -s /sbin/nologin service-a 创建无登录能力的受限用户setcap cap_net_bind_service=+ep /usr/bin/service-a 授予绑定低端口能力,而非开放整个 root 权限越权指令常通过 exec、syscall、反射加载等方式突破边界,因此需在运行时主动收窄能力暴露面。
readOnlyRootFilesystem: true,并显式挂载必要可写目录(如 /var/log/service-a)execveat、ptrace、open_by_handle_at)-Djava.security.manager 并定制 policy;Python 设置 sys.path 白名单 + 禁用 __import__ 动态导入不依赖服务自身逻辑做权限判断,而是在内核/中间件层拦截并验证每一次敏感操作请求。
aud(目标服务标识)与 act(操作意图)字段RestrictSUIDSGID=true、NoNewPrivileges=true,并配合 Delegate=false 阻止子进程提权静态配置只是起点,真实攻击常表现为合法账户下的异常行为模式。
真正有效的越权防护不在防火墙规则里,而在服务启动那一刻的 UID、它能碰的文件描述符数量、它被允许发出的系统调用集合,以及每次动作发生时有没有人盯着它的手指往哪按。