Nginx配置防火墙规则有哪些技巧
小樊
43
2025-12-27 15:36:39
Nginx 配置防火墙规则实用技巧
一 分层设计与最小暴露
- 在系统层仅开放必要端口:优先只放通 TCP 80/443(HTTP/HTTPS),远程管理端口如 22/3389 建议限制来源 IP 或改为跳板机访问;云上通过安全组实现同样的“最小权限”。
- 在主机层使用 iptables/firewalld/UFW 实施默认拒绝(或严格区域策略),再按需放行;Windows 上用 Windows Defender 防火墙仅允许 nginx.exe 对 80/443 的入站。
- 在应用层用 Nginx 的 allow/deny、limit_req/limit_conn 做细粒度控制,形成“系统防火墙 + 主机防火墙 + Nginx 应用层”的三道防线。
- 对外隐藏源站真实 IP,前置 CDN/WAF/云清洗,减少直接暴露带来的风险。
二 关键规则清单与示例
- 系统层端口与进程放行(示例)
- Linux(firewalld):仅放行 80/443/22,并限制管理端口来源;必要时对 http 设置速率限制(如每秒 10 次)。
- Windows(PowerShell):仅允许 nginx.exe 监听 80/443;管理端口(如 8080)可基于 IP/时间段 精细化放行。
- Nginx 应用层访问控制
- IP 白名单/黑名单:对 /admin/ 等敏感路径仅允许内网段;对恶意 IP 直接 deny。
- 请求方法限制:仅允许 GET/POST/HEAD,其他方法返回 405/444。
- 速率与并发:限制每秒请求数与并发连接数,抑制暴力破解与爬虫占线。
- 协议与加密:强制 HTTPS,启用 TLS 1.2/1.3 与强套件,配置 HSTS。
- 示例(可直接复用)
- firewalld 最小放行与限速
- 放行端口:firewall-cmd --permanent --add-service=http --add-service=https --add-service=ssh && firewall-cmd --reload
- 限速示例:firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” service name=“http” limit value=“10/s” accept’ && firewall-cmd --reload
- Windows 防火墙仅放行 Nginx
- New-NetFirewallRule -DisplayName “Nginx HTTP” -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow
- New-NetFirewallRule -DisplayName “Nginx HTTPS” -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow
- Nginx 应用层关键片段
- IP 白名单与黑名单
location /admin/ { allow 192.168.1.0/24; deny all; }
deny 203.0.113.5; allow all;
- 方法限制
if ($request_method !~ ^(GET|POST|HEAD)$) { return 405; }
- 速率与并发
http { limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; limit_conn_zone $binary_remote_addr zone=ops:10m; }
server { limit_req zone=one burst=20 nodelay; limit_conn ops 10; }
- 安全响应头与跳转
add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff;
server { listen 80; return 301 https://$host$request_uri; }
ssl_protocols TLSv1.2 TLSv1.3; add_header Strict-Transport-Security “max-age=31536000; includeSubDomains” always;
三 缓解 DDoS 与恶意流量
- 速率与连接控制:在 Nginx 侧用 limit_req/limit_conn 限制单 IP 的 QPS 与并发,优先丢弃异常突发;在 iptables/firewalld 侧可对 NEW 连接做速率阈值控制,作为第二道闸门。
- 协议与 ICMP 治理:限制 ICMP 速率,避免 ping 洪水;禁用不必要的协议与端口。
- 边界与上游协同:启用 CDN/WAF/云清洗 吸收与过滤大流量;对管理口与敏感接口设置来源 IP 白名单与时间窗(如仅工作时间开放调试端口)。
- 监控与处置:对 Nginx 访问/错误日志与防火墙日志建立基线告警,异常时联动封禁;必要时临时切换为检测模式验证误报后再全量启用。
四 进阶与维护
- 部署 WAF(如 ModSecurity):在 Nginx 中集成 ModSecurity,加载核心规则集,拦截 SQLi/XSS/目录遍历 等常见攻击;对误报使用 DetectionOnly 模式与按规则/参数排除,逐步上线。
- 地理与内容治理:基于 GeoIP 模块按国家/地区限制访问;对异常 User-Agent/Referer 与可疑参数进行拦截或挑战。
- 版本隐藏与超时加固:关闭 server_tokens,设置 client_body_timeout/client_header_timeout/keepalive_timeout/send_timeout 抵御慢速攻击;限制 client_max_body_size 防止滥用上传。
- 持续运营:定期更新 Nginx/模块/规则库,开展季度渗透测试与日志审计,验证规则有效性与覆盖率。