最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
HAProxy 在负载均衡中如何过滤恶意请求
时间:2026-07-12 09:05:04 编辑:袖梨 来源:一聚教程网
HAProxy可通过ACL规则实现前置防御,支持基于请求方法、头字段、URL路径与长度、动态限速及隐藏后端等多重安全策略。
HAProxy 在负载均衡过程中能直接拦截和过滤恶意 HTTP 请求,不依赖后端服务,属于“前置防御”。它通过 ACL(访问控制列表)匹配请求特征,再用 block、redirect 或 http-request deny 等指令实时干预流量,既减轻后端压力,又提升整体安全性。
基于请求方法和头字段过滤
很多攻击(如扫描、注入试探)会使用非法 HTTP 方法或缺失关键头字段。HAProxy 可快速识别并阻断:
- 只允许 GET 请求:用
acl valid_method method GET+http-request deny if !valid_method - 强制要求 Cookie 头存在:用
acl need_cookie hdr_cnt(cookie) lt 1+http-request deny if need_cookie - 拒绝无 User-Agent 或含可疑 UA 的请求:
acl bad_ua hdr(user-agent) -i sqlmap|nmap|gobuster+http-request deny if bad_ua
按 URL 路径和长度做精准限制
针对短链接、API 接口等固定格式服务,可对路径结构设硬性约束:
- 只放行 10 位长度的短路径:
acl valid_path path_reg -i ^/[^/]{10}$+http-request deny if !valid_path - 屏蔽常见探测路径:
acl scan_path path_beg -i /phpmyadmin/ /wp-admin/ /admin.php+http-request deny if scan_path - 拒绝超长 URL(防缓冲区溢出):
acl long_url url_len gt 2048+http-request deny if long_url
利用 stick-table 实时限速与封禁
对高频恶意行为(如暴力扫描、CC 攻击),单靠静态规则不够,需结合动态状态跟踪:
- 每 IP 每秒最多 10 次请求:
stick-table type ip size 1m expire 10m store http_req_rate(10s) - 触发阈值即封禁:
http-request track-sc0 src+http-request deny deny_status 429 if { sc_http_req_rate(0) gt 10 } - 配合自动封禁(如 5 分钟):
http-request set-var(req.blocked) str(1) if { sc_http_req_rate(0) gt 50 }+http-request deny if { var(req.blocked) eq 1 }
隐藏后端细节并重定向异常请求
避免暴露架构信息,同时把误请求导向安全出口,减少日志噪音和误报干扰:
- 删除敏感响应头:
rspdel ^Server:|X-Powered-By: - 将 favicon.ico 请求统一跳转到主站:
acl is_favicon path_beg /favicon.ico+http-request redirect location https://example.com/favicon.ico code 301 if is_favicon - 返回统一错误页(需配置 errorfile):
errorfile 403 /etc/haproxy/errors/403.http
相关文章
- 尽管工作室已关闭:Wreckreation 2 仍正式公布:距离前作发布仅九个月 07-22
- 率土之滨武将强度排行 率土之滨武将开荒搭配攻略表 07-22
- 挖掘者米娜怎样召唤伙伴成就攻略分享 07-22
- 仙灵物语最强阵容搭配攻略:仙灵物语高战力阵容推荐与实战解析 07-22
- 天堂2盟约怎么升级快:天堂2盟约快速升级技巧与高效练级指南 07-22
- 《幻兽帕鲁》世界树内部进入方法介绍 07-22