温馨提示×

怎样通过Nginx提升网站安全性

小樊
36
2025-12-19 21:09:03
栏目: 云计算

通过 Nginx 提升网站安全性的实用清单

一 基础加固

  • 隐藏版本与标识:在 http/server 中设置 server_tokens off;,并隐藏上游或应用框架的 X-Powered-By 等头,减少信息泄露面。
  • 禁用目录列表:确保 autoindex off;,避免目录遍历与敏感文件暴露。
  • 禁用不必要方法:仅放行业务需要的 GET/POST/HEAD,对 PUT/DELETE/TRACE/OPTIONS 等未使用的方法返回 403/405
  • 自定义错误页面:为 4xx/5xx 配置简洁的错误页,避免泄露堆栈与版本信息。
  • 限制请求体与头大小:设置 client_max_body_size、client_header_buffer_size、large_client_header_buffers,既防溢出也抑制异常请求。
  • 超时与连接控制:合理设置 client_body_timeout、client_header_timeout、keepalive_timeout、send_timeout,降低慢速攻击与资源占用。
  • 运行权限最小化:以 非 root 用户运行 Nginx,分离配置、日志与网站根目录权限,防止提权与篡改。
  • 绑定特定接口:如非必要,避免监听 0.0.0.0,仅绑定业务所需 IP:端口
  • 安全响应头:统一添加 X-Frame-Options、X-XSS-Protection、X-Content-Type-Options、Strict-Transport-Security 等,增强浏览器侧防护。

二 传输加密与证书

  • 全站 HTTPS:将 HTTP 301 重定向至 HTTPS,仅开放 443/TLS
  • 协议与套件:启用 TLSv1.2/TLSv1.3,禁用 SSLv3/TLSv1.0/TLSv1.1;优先 ECDHEAEAD 套件,禁用 RC4/DES/MD5 等弱算法。
  • 证书链完整:配置 ssl_certificate / ssl_certificate_key / ssl_trusted_certificate,确保包含中间证书,避免链不完整导致信任问题。
  • 强化握手与性能:启用 ssl_prefer_server_ciphers on;、会话复用与合适的 HSTS(如 max-age=31536000; includeSubDomains; preload),在不影响兼容性的前提下提升安全与性能。

三 访问控制与速率限制

  • IP 白名单/黑名单:对 /admin、/api/internal 等敏感路径使用 allow/deny 控制来源;可将黑名单集中到独立文件并在 http 层引入,便于维护。
  • 请求频率限制:使用 limit_req_zone / limit_req 对登录、注册、API 等接口限流,设置 burst/nodelay 平滑突发流量并阻断滥用。
  • 并发连接限制:通过 limit_conn 限制单 IP/Key 的并发连接数,缓解连接耗尽型攻击。
  • 边界与上游协同:在反向代理/负载均衡侧配合 WAF/CDN 或云防护,Nginx 负责第一层过滤与速率控制,后端专注业务。

四 请求过滤与 WAF

  • 方法限制:在 server/location 中使用 limit_except GET POST HEAD { deny all; } 或条件判断,拒绝 PUT/DELETE/TRACE/OPTIONS 等非常用方法。
  • 恶意特征拦截:基于 $request_uri/$args 的正则匹配,拦截常见 SQL 注入、XSS、路径遍历 等特征(如 union select、