Назад | Перейти на главную страницу

Ведение журнала ограничения подключения 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-адрес при достижении этих ограничений, чтобы я мог поиграть с правилами и посмотреть, что работает, а что нет. Как я могу это сделать?

Вместо блокировки злоумышленников вы можете добавить заголовки ответов, указывающие 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