linux权限加固的关键是禁止服务以root运行,通过创建专用低权限用户、用capability替代root绑定低端口、限制文件路径访问、隔离运行环境并收紧系统调用,实现最小权限原则。

禁止系统服务以 root 权限运行,是 Linux 权限加固中关键一环。它不是简单地“不让服务用 root”,而是通过身份隔离、能力裁剪和环境约束,让每个服务只拥有完成自身任务所必需的最小权限。这能显著降低提权风险——即使某个服务被攻破,攻击者也无法直接获得系统最高控制权。
创建专用低权限运行用户
每个守护进程应使用独立的、无登录能力的专用用户,而非共享 root 或普通管理员账户:
- 用
useradd -r -s /sbin/nologin -d /var/lib/yourapp yourapp创建系统用户(-r表示系统账户,-s /sbin/nologin禁止交互登录) - 确保该用户不属
wheel、sudo或其他特权组 - 修改服务 unit 文件(如
/etc/systemd/system/nginx.service),明确指定:User=nginxGroup=nginx
用 capability 替代 root 绑定低端口
很多服务(如 Web 服务器)需监听 80/443 端口,传统做法是用 root 启动再降权,存在窗口期风险。更安全的方式是赋予精准能力:
- 在 systemd unit 文件中添加:
CapabilityBoundingSet=CAP_NET_BIND_SERVICEAmbientCapabilities=CAP_NET_BIND_SERVICE - 移除
root用户对端口的依赖,服务即可用普通用户启动并绑定 1-1023 端口 - 同时禁用危险能力:
CapabilityBoundingSet=~CAP_SYS_ADMIN CAP_SYS_MODULE CAP_SYS_PTRACE
限制文件与路径访问范围
防止服务越界读写敏感区域,利用 systemd 的命名空间保护机制:
- 启用
ProtectSystem=strict:将/usr、/boot、/etc挂载为只读 - 启用
ProtectHome=true:屏蔽/home、/root、/run/user - 显式声明可写路径:
ReadWritePaths=/var/log/yourapp /var/cache/yourapp - 对关键配置目录加不可变属性:
chattr +i /etc/yourapp/conf.d/(需 root 执行,更新时临时移除)
隔离运行环境并收紧系统调用
从内核层面限制服务行为,阻断常见逃逸路径:
- 启用
PrivateTmp=true:为服务分配独立/tmp,避免临时文件竞争 - 启用
PrivateDevices=true:隐藏/dev下敏感设备节点(如/dev/kvm、/dev/mem) - 启用
NoNewPrivileges=true:禁止服务通过execve提升权限 - 启用
SystemCallFilter=@system-service或自定义 seccomp 策略,过滤非必要系统调用











