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

отклонить X-Forwarded-For IP от nginx / iptables

ниже следующее


visitor --> Cloudflare proxy --> Front --> Back
                                ^^^^^^
                    -->iptables(fail2ban)-->nginx-->

Что я хочу сделать, так это отследить брутфорс IP через 401 отклонение и запретить этому IP делать любые последующие запросы.


   FE                    BE
    |                     |
..  |                     |
    |  POST /oauth/token  |
    |-------------------->|
    | 401 (access denied) |
    |<--------------------|
..  |                     |
    |                     |

Однако единственный входящий адрес на FE - это IP-адрес облачной вспышки, а не IP-адрес посетителя. Таким образом, я не могу запретить входящий IP-адрес через iptable.

Я вижу только два пути:

  1. Настройте nginx для использования X-Forwarded-For (или CF-Connecting-IP, дополнительно предоставляемого cloudflare) в сочетании с оценкой ответа 401 плюс limit_req (возможно ли это? Как?)
  2. Вместо того, чтобы помещать в тюрьму обнаруженный bruteforcingIP через fail2ban, сопоставьте его с запрещенным IP (например, 140.1.1.1 или любой другой IP-адрес в Африке) и отклоните HTTP-трафик с помощью директивы Deny на nginx.

Возможен ли один из последних? Если нет, то какая альтернатива?

Поскольку сеанс TCP завершается на серверах Cloudflare, это означает, что вы не можете напрямую или легко заблокировать своих клиентов с помощью iptables, за исключением случаев, когда вы собираетесь заблокировать с помощью iptables, ищущего строки, как здесь: Правило iptables для блокировки всех веб-запросов к domain.com.

Даже в этом случае некоторые запросы от клиента будут кэшироваться из cloudflare, в конце концов, это одна из причин использовать CDN, поэтому вы даже не увидите приходящий запрос.

Что вы можете сделать, так это выполнить сопоставление на nginx на основе содержимого X-Forwarded-For и применить к нему ограничение скорости, для получения более подробной информации проверьте этот ответ:

Ограничение скорости nginx с заголовком X-Forwarded-For