我在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
不幸的是,这已经造成了一些问题。 我想暂时停止阻止人,但是当这些限制被打时logging时间和知识产权,所以我可以玩弄规则,看看什么有效,什么不可以。 我怎样才能做到这一点?
而不是阻止滥用者,您可以添加指示破坏规则的客户端IP地址的响应标头。 像这样的东西:
http-request add-header X-Haproxy-Abuse %ci if connabuse http-request add-header X-Haproxy-Kill %ci if connkill
其中%ci表示客户端IP地址,您可以logging此处提及的任何其他参数: 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