Как настроить HAProxy для сброса соединения при совпадении значения ключа строки запроса? - PullRequest
0 голосов
/ 01 июня 2018

Я установил HAProxy 1.5.18 на Centos 7.

В /etc/haproxy/haproxy.cfg у меня есть следующая строка:

frontend free_api
        bind *:80
        stats uri /haproxy?stats
        mode http
        option forwardfor         
        acl key1 urlp(key) 12345
        acl key2 urlp(key) 6789

        http-request deny if key1
        http-request deny if key2

       # use_backend api if api
 default_backend api

Сейчас доступ к URL для строки запроса запрещенключ с совпадающим значением 12345 или 6789 .HAProxy возвращает код состояния 403 Forbidden назад.

Что мне нужно, это просто сбросить соединение, чтобы пользователю ничего не возвращалось?Как это сделать в HAProxy?

Спасибо.

1 Ответ

0 голосов
/ 02 июня 2018

используйте haproxy v1.6 и выше, а директиву silent-drop

http-request silent-drop if key1

"silent-drop": это останавливает оценку правил и внезапно исчезает соединение с клиентомиспользуя системно-зависимый способ, который пытается предотвратить уведомление клиента.Это приводит к тому, что клиент все еще видит установленное соединение, а в HAProxy его нет.Цель состоит в том, чтобы добиться эффекта, сравнимого с «tarpit», за исключением того, что он вообще не использует локальный ресурс на машине с HAProxy.Он может противостоять гораздо более высоким нагрузкам, чем «тарпит», и замедлять сильных атакующих.Важно понимать влияние использования этого механизма.Все оборудование с состоянием, расположенное между клиентом и HAProxy (брандмауэры, прокси-серверы, балансировщики нагрузки) также будет сохранять установленное соединение в течение длительного времени и может пострадать от этого действия.В современных системах Linux, работающих с достаточными привилегиями, опция сокета TCP_REPAIR используется для блокировки передачи сброса TCP.В других системах TTL сокета уменьшается до 1, поэтому сброс TCP не проходит первый маршрутизатор, хотя он все еще доставляется в локальные сети.Не используйте его, если вы не полностью понимаете, как он работает.

...