Nginx 安全加固与轻量 WAF 实践:10 分钟提升一线防护
Nginx 安全加固与轻量 WAF 实践:10 分钟提升一线防护
笨鸟先飞基础加固
- 关闭版本泄露:
server_tokens off; - 最小暴露面:仅监听必要端口/域名,禁用默认站点。
- TLS:启用 HTTPS,使用现代套件(ECDHE),强制 HSTS;使用 ACME 自动续期证书。
- 请求体限制:
client_max_body_size、client_body_timeout防大包慢传。
访问控制与限速
- IP 级封禁/白名单:对管理路径或私有接口做
allow/deny。 - 限速:
1
2
3
4
5
6limit_req_zone $binary_remote_addr zone=req:10m rate=10r/s;
server {
location /api/ {
limit_req zone=req burst=20 nodelay;
}
} - 连接数限制:
limit_conn_zone/limit_conn防并发耗尽。
轻量 WAF 规则(示例)
- 拦截常见探测:
(?i)(select\\s+.*from|union\\s+select|/etc/passwd|\\.\\./) - 阻断恶意 UA/扫描器:匹配常见扫描 UA 直接 403。
- 对管理路径加基本认证或 IP 白名单。
- 建议用
ngx_http_lua_module或ModSecurity(OWASP CRS) 做可维护规则集。
防暴破与登录保护
- 登录接口加
limit_req+ 图形/短信验证码。 - 加强 Cookie/Session:
HttpOnly、Secure、SameSite。 - 记录失败次数,触发临时封禁。
日志与可观测性
- 结构化日志:输出 JSON 便于集中收集与检索(EFK/Loki)。
- 关键字段:客户端 IP、UA、Referer、请求体大小、上游状态、耗时。
- 告警:对 4xx/5xx 激增、限速命中、WAF 拦截设阈值告警。
示例片段(精简)
1 | server_tokens off; |
运维建议
- 定期更新 Nginx 与 OpenSSL,避免已知 CVE。
- 回源鉴权:对后端启用 JWT/签名校验,Nginx 只做粗筛。
- 压测规则:上线前用 ab/wrk/locust 验证限速与 WAF 不影响关键路径。
- 旁路模式观察:复杂规则先旁路记录,再切换阻断。
结论
简单可落地的 Nginx 加固和轻量 WAF,可以显著降低暴露面、阻断通用漏洞与爆破。保持最小暴露、限速、基础规则、日志告警四件套,就能在 10 分钟内把防护水位拉高一截。***


