nginx.conf权限应设为640,属主root、属组nginx,禁止其他用户读写;/etc/nginx/目录权限750,日志文件640,worker进程须以非root用户运行,并禁用server_tokens、autoindex及硬编码密钥。

nginx.conf 文件本身是配置入口,权限不当会直接导致服务被篡改或提权。它不是“只读就行”,而是需要在可维护性与最小权限之间取得平衡——既要防止非授权修改,又要保障运维正常 reload 配置。
nginx.conf 文件权限设置原则
主配置文件应由 root 所有、仅 root 可写,Nginx 工作进程无需读取它(启动后只加载到内存),因此普通用户和 nginx 用户都不该有写权限,甚至读权限也应严格限制。
-
推荐权限:
640(即-rw-r-----) -
所有者:
root -
所属组:建议设为
nginx或专用运维组(如webadm),便于授权给可信人员维护 - 禁止 world 可读:避免敏感信息(如 upstream 密钥、代理凭证、内部路径)泄露
配套目录与日志权限管控
单改 nginx.conf 不够,整个 Nginx 配置生态需统一收紧:
-
/etc/nginx/目录:设为750,属主root,组nginx,禁止其他用户进入或列出内容 -
/etc/nginx/conf.d/及子配置:同样设为640,避免通过 include 引入被篡改的配置片段 -
/var/log/nginx/:属主root,组nginx,权限750;日志文件本身设为640,确保只有 root 和 nginx 组能读取访问日志(含 IP、URL、UA 等敏感字段) -
/usr/local/nginx/conf/(源码安装路径):权限策略同上,不可忽略
运行用户与进程权限分离
即使配置文件权限正确,若 Nginx 以 root 运行,攻击者一旦获得 shell 就能直接覆盖配置。必须降权启动:
- 在
nginx.conf的全局块中明确指定:user nginx nginx; - 创建专用系统用户:
useradd -r -s /sbin/nologin nginx,不分配家目录、禁用登录 - 验证进程归属:
ps aux | grep nginx应显示 worker 进程属用户nginx,master 进程属root(仅负责监听端口、管理 worker) - 配合 SELinux 或 AppArmor 限制 nginx 进程对配置目录的写权限,形成纵深防御
配置文件内容安全审计要点
权限只是表层,文件内容才是风险高发区:
-
server_tokens off;必须启用,防止暴露版本号,降低针对性攻击风险 - 检查是否有
autoindex on;,尤其在location块中,未授权目录浏览可能泄露源码或备份文件 - 确认无硬编码密钥、数据库密码、API token 出现在配置中(应移至环境变量或 secrets 管理系统)
- 验证
include路径是否可控,避免include /tmp/*.conf类危险写法 - 检查是否限制了 HTTP 方法:
if ($request_method !~ ^(GET|HEAD|POST)$) { return 405; },防非法请求滥用


















