记录 HAProxy 连接限制

记录 HAProxy 连接限制

我在 HAProxy 中有一些简单的连接和连接速率限制:

    # Store IPs to limit connection rate
    stick-table type ip size 200k expire 5m store gpc0,conn_cur,conn_rate(10s)
    tcp-request connection track-sc0 src

    # Abusers are immediately rejected
    tcp-request connection reject if { sc0_get_gpc0 gt 0 }

    # Test connection count and rate
    acl connabuse sc0_conn_cur gt 20
    acl connkill  sc0_inc_gpc0 gt 0
    tcp-request connection reject if connabuse connkill

    acl rateabuse sc0_conn_rate gt 30
    acl ratekill  sc0_inc_gpc0 gt 0
    tcp-request connection reject if rateabuse ratekill

不幸的是,这已经造成了一些问题。我想暂时停止屏蔽用户,但记录达到这些限制的时间和 IP,这样我就可以尝试规则,看看哪些有效,哪些无效。我该怎么做?

答案1

除了屏蔽滥用者,您还可以添加响应标头来指示违反规则的客户端 IP 地址。如下所示:

http-request add-header X-Haproxy-Abuse %ci if connabuse
http-request add-header X-Haproxy-Kill %ci if connkill

其中 %ci 代表客户端 IP 地址,您可以记录此处提到的任何其他参数:http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#8.2.4

然后您捕获这些标题并将它们放入日志中,如文档中所述:http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#capture%20response

capture response header X-Haproxy-Abuse 15
capture response header X-Haproxy-Kill len 15

相关内容