别再依赖“防火墙万能”了!Nginx 本身就是一个强大的安全网关,只需几行配置,就能实现企业级防护。
✅ 无需额外软件✅ 零成本加固✅ 符合等保 2.0 要求今天,手把手教你从 0 搭建一个安全、干净、合规的 Nginx 网关!
🛡️ 第一步:隐藏身份 —— 隐藏 Nginx 版本号
攻击者第一步就是探测你的服务版本。暴露版本 = 送漏洞地图!
🔧 配置方法
在 nginx.conf 的 http 块中添加:
server_tokens off;✅ 效果:原响应头:Server: nginx/1.24.0优化后:Server: nginx📌 额外建议:
如果使用了 error_page 自定义错误页,确保页面中也不包含版本信息!
🚫 第二步:封堵入口 —— 禁止敏感文件与目录访问
很多数据泄露,都是因为一个 .env 或 .git 文件被公开下载!通用防护配置(推荐放在 http 或 server 块)
# 禁止访问隐藏文件(以 . 开头)location ~ /. { deny all; return 404;}# 禁止访问特定敏感文件location ~* .(env|git|svn|htaccess|htpasswd|bak|log|sql|zip|tar.gz)$ { deny all; return 403;}# 禁止访问备份文件(如 config.php.bak)location ~* .bak$ { deny all; return 403;}# 禁止目录遍历(Nginx 默认已防,但显式加固更安全)location ~ ../ { deny all; return 403;}原理说明: ~ 表示正则匹配 ~* 表示不区分大小写 deny all 直接拒绝访问,不返回文件内容🌐 第三步:锁定身份 —— 防 Host 头攻击(关键!)
什么是 Host 头攻击?
当 Nginx 配置了宽松的 server_name(如 server_name _; 或未设置默认拒绝 server)时,攻击者可构造恶意 Host 头:
GET /password-reset HTTP/1.1Host: attacker.com如果后端代码使用 Host 头生成重置链接(如 https://attacker.com/reset?token=xxx),攻击者就能窃取用户凭证!
安全配置方案
1. 设置默认拒绝的 server 块
在所有 server 块之前,添加一个“兜底”配置:
server { listen 80 default_server; listen 443 ssl default_server; server_name _ ""; return 403;} 此配置会拒绝所有未明确匹配的域名请求。2. 明确指定合法域名
在你的业务 server 块中,只允许真实域名:
server { listen 80; server_name www.yourdomain.com yourdomain.com; # 你的业务配置...}3. (可选)在应用层二次校验
即使 Nginx 层做了防护,后端也应校验 Host 是否在白名单内,形成纵深防御。
🛠️ 第四步:添加安全响应头(提升浏览器防护)
现代浏览器支持多种安全策略,通过响应头启用:
add_header X-Content-Type-Options "nosniff" always;add_header X-Frame-Options "DENY" always;add_header X-XSS-Protection "1; mode=block" always;add_header Referrer-Policy "strict-origin-when-cross-origin" always;add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https:" always;说明: X-Frame-Options: DENY:防点击劫持 X-Content-Type-Options: nosniff:防 MIME 嗅探 always:确保错误页面也携带这些头🧪 验证是否生效
1. 检查版本是否隐藏
curl -I http://your-domain.com→ 确保 Server 字段不含版本号。
2. 测试敏感文件访问
✅ 效果:原响应头:Server: nginx/1.24.0优化后:Server: nginx0→ 应返回 403 或 404,不能返回 200。
3. 测试 Host 头攻击
✅ 效果:原响应头:Server: nginx/1.24.0优化后:Server: nginx1→ 应返回 403,而非业务页面。
📋 完整安全配置模板(推荐收藏)
✅ 效果:原响应头:Server: nginx/1.24.0优化后:Server: nginx2🌟 总结:安全网关 4 大核心原则
一个配置完善的 Nginx,胜过十台 WAF!
花 10 分钟加固,省下 100 小时救火。
👉 觉得实用?点赞 + 转发,让更多同事远离“低级漏洞”!
💬 你在生产环境还做了哪些 Nginx 安全加固?欢迎留言分享!
👨💻 作者: [Jack.Liu]
🔗 更多运维干货: 小柳实验室
推荐阅读
• • •
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...