如何全面加固Nginx生产环境,从移除版本号到设置请求方法白名单?
- 内容介绍
- 文章标签
- 相关推荐
本文共计803个文字,预计阅读时间需要4分钟。
Nginx生产环境加固,非堆配置,而是围绕信息最小暴露、权限最小分配、行为最大约束三个核心展开。关键不在全开所有防护项,而在于每一条规则都有明确意图和验证效果。
一、彻底隐藏服务指纹:从响应头到错误页
攻击者第一眼就看 Server 头和 4xx/5xx 页面——这是最廉价的情报来源。仅靠 server_tokens off 不够,它只隐藏版本号,Server 字段仍为 nginx。
- 在
http块中启用基础隐藏:server_tokens off; - 若已编译安装
headers-more-nginx-module,添加:more_set_headers 'Server: WebServer'; - 源码安装用户建议直接修改
src/core/nginx.h:将NGINX_VER改为自定义字符串(如"AppServer/1.0"),再重新编译 - 验证方式必须包含两步:用
curl -I检查首页响应头;用curl http://domain/nonexist触发 404 页面,确认 HTML 中无 nginx 字样
二、运行身份与文件权限双隔离
默认以 root 或 nobody 运行是高危习惯。nobody 无组归属,root 则权限过大,都违背最小权限原则。
本文共计803个文字,预计阅读时间需要4分钟。
Nginx生产环境加固,非堆配置,而是围绕信息最小暴露、权限最小分配、行为最大约束三个核心展开。关键不在全开所有防护项,而在于每一条规则都有明确意图和验证效果。
一、彻底隐藏服务指纹:从响应头到错误页
攻击者第一眼就看 Server 头和 4xx/5xx 页面——这是最廉价的情报来源。仅靠 server_tokens off 不够,它只隐藏版本号,Server 字段仍为 nginx。
- 在
http块中启用基础隐藏:server_tokens off; - 若已编译安装
headers-more-nginx-module,添加:more_set_headers 'Server: WebServer'; - 源码安装用户建议直接修改
src/core/nginx.h:将NGINX_VER改为自定义字符串(如"AppServer/1.0"),再重新编译 - 验证方式必须包含两步:用
curl -I检查首页响应头;用curl http://domain/nonexist触发 404 页面,确认 HTML 中无 nginx 字样
二、运行身份与文件权限双隔离
默认以 root 或 nobody 运行是高危习惯。nobody 无组归属,root 则权限过大,都违背最小权限原则。

