最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Nginx 中 Root 指令如何配置只读属性防止网站源码被恶意篡改
时间:2026-08-23 20:09:49 编辑:袖梨 来源:一聚教程网
Nginx的root指令仅声明静态文件根路径,防篡改靠系统权限与配置协同:目录chown root:nginx、chmod 750,文件chmod 640;关键目录用chattr +i锁定;Web层禁敏感路径、关autoindex、用try_files校验。
Nginx 的 root 指令本身不设“只读属性”,它只是声明静态文件的根路径;真正防止源码被篡改,靠的是操作系统级权限控制与 Nginx 配置协同加固。核心逻辑是:让 Nginx 工作进程(如 nginx 或 www-data 用户)只有读取权,没有写入或执行权,且路径本身不可被意外覆盖或遍历。
锁定目录与文件的系统权限
这是最直接有效的防护层:
- 将 根目录所有者设为 root,所属组设为 Nginx 运行组(如
nginx),禁止工作进程写入:chown -R root:nginx /var/www/html - 目录权限设为 750(
drwxr-x---):root 可读写执行,nginx 组可读执行,其他用户无权限 - HTML/CSS/JS 等静态文件统一设为 640(
-rw-r-----),避免泄露备份、配置片段或 .git 目录 - 严禁把
root指向/etc、/var/log、/home等系统或用户目录,防止路径误配导致敏感文件暴露
用 chattr +i 实现内核级防篡改
对不需运行时修改的核心静态目录,启用 Linux 文件不可变属性:
- 递归锁定整个站点 HTML 根目录:
chattr -R +i /var/www/html - 必须提前排除上传、缓存、日志等需写入的子目录,例如:
chattr -R -i /var/www/html/uploadschattr -R -i /var/www/html/cache - 验证是否生效:
lsattr /var/www/html/index.html应显示----i--------- - ⚠️ 注意:PHP 或 Node.js 若以 root 运行,
+i会彻底阻断所有写操作,务必确保动态路径已明确排除
在 Nginx 配置中切断越权访问链路
仅设好文件权限还不够,得堵住 Web 层可能的绕过路径:
- 在
http或server块中显式拒绝敏感路径:location ~ ^/(etc|usr|var/log|proc|sys|root|boot|dev)/ { deny all; } - 禁用目录浏览:
autoindex off;(默认已关,建议显式声明) - 清理或限制权限所有备份文件:
.bak、.swp、~文件统一设为640 root:root,防止被include意外加载 - 使用
try_files $uri =404;强制校验请求路径真实存在,避免内部重定向引发路径解析异常
容器环境下的只读强化(如适用)
若运行在 Docker 中,需叠加挂载级防护:
- 主配置目录用只读绑定挂载:
volumes: [{type: bind, source: /host/nginx/conf, target: /etc/nginx, read_only: true}] - 禁止挂载宽泛路径(如
/host),只挂载最小必要目录(如/host/nginx/conf) - 禁用通配 include:
include /etc/nginx/conf.d/*.conf;→ 改为显式列表:include /etc/nginx/conf.d/app.conf; - 宿主机上配置文件权限设为
640,属主root:root,确保即使容器内提权也无法绕过内核只读检查
相关文章
- 对于非计算机专业的人来说,学编程有意义吗? 08-23
- 给孩子讲讲AI:无数好答案都在等你的好问题 08-23
- 高中毕业后学编程有必要吗?别盲目学习... 08-23
- 机场休息室的抓拍肖像 08-23
- 小米路由器增强器怎么重置(小米路由器增强器重置方法) 08-23
- 掌握更新Excel表格数据的有效做法提升工作效率 08-23