Nginx 安全配置:从响应头到目录穿越的十项检查

加固 · 3 分钟阅读· 312 次阅读

Web 服务器的加固有两层:不暴露多余信息,以及不给异常请求留口子。

很多事故不是漏洞利用,而是「配置允许了不该允许的事」。

先说结论

关版本号、加安全头、限方法与大包、上传目录禁执行。 四条覆盖大部分风险。

  • server_tokens off 隐藏版本
  • HSTS、X-Content-Type-Options、Referrer-Policy
  • 限制 client_max_body_size 与请求方法
  • location 精确匹配,禁用 autoindex

漏洞是怎么产生的

安全响应头是「低成本高收益」:浏览器据此启用防护,服务端不用改一行业务代码。

目录穿越类问题常出在 alias 与 try_files 的写法上,需要逐个 location 核对。

修复与验证

修复不是改一行代码,而是四件事一起做:

  • server_tokens off,隐藏版本与错误页细节
  • 统一加安全响应头(HSTS 需先确保全站 HTTPS)
  • 只允许必要方法,其余返回 405
  • 限制上传大小与超时,防慢速攻击
  • 上传目录 location 关闭脚本执行,禁用 autoindex

攻击面与检测点

按影响面排序,先修影响最大的:

配置 作用 建议
server_tokens 隐藏版本 off
Strict-Transport-Security 强制 HTTPS max-age=31536000
X-Content-Type-Options 禁 MIME 嗅探 nosniff
client_max_body_size 限制上传 按业务设

Nginx 安全配置

几个容易踩的坑

下面这些是最常见的错误做法:

  • HSTS 在还没全站 HTTPS 时开启:用户被锁在外
  • alias 路径拼接错误:可穿越目录
  • 上传目录可解析 PHP:一个文件就是后门
  • 错误页泄露堆栈与路径

写在最后

Nginx 加固是「删掉不需要的能力」,越简单越安全。

安全不是一次加固,是持续的假设:假设输入不可信、假设边界会破、假设有人会看错。

评论 (3)

半
半箱油

修复清单比漏洞描述有用多了,很多文章只讲怎么打不讲怎么防。

白
白帽小林

白名单那条永远是最有效的,正则黑名单迟早绕过。

运
运维老张

建议再补一条:把这类检查加到 CI 里,靠人记必然漏。

发表评论

验证码

提交后需站长审核,通过后才会显示。