Итак, я обнаружил, что серверы пытаются грубо использовать мой API, поэтому я хочу их заблокировать ... но мой конкретный сценарий затруднил работу с общими решениями, найденными в Интернете.
1) Я не хочу просто ограничивать скорость, если какой-либо IP пытается аутентифицироваться с помощью API и терпит неудачу более X раз за ~ 6 часов, я хочу их заблокировать. Больше никаких ответов. Нет даже 429 ответов
2) Я использую cloudflare, поэтому мне нужно использовать заголовок CF IP
3) Я не могу блокировать трафик на основе iptables или аналогичных решений, так как единственные IP-адреса, которые общаются с моим сервером, - это IP-адреса облачной вспышки.
4) API генерирует ошибки nginx, если аутентификация не выполняется с 2: no such file or directory
если это поможет в чем-то
Учитывая мой сценарий, каковы возможные решения?
Есть несколько вещей, которые вы можете сделать, вы можете передать задачу Cloudflare еще до того, как она попадет в вашу сеть, разработав систему мониторинга Cloudflare Worker на предмет злоупотреблений: https://workers.cloudflare.com/
Если вы хотите сохранить мониторинг на своей стороне, вам следует использовать модуль nginx Real IP, чтобы убедиться, что у вас есть правильные IP-адреса в своих журналах, Cloudflare имеет инструкции здесь: https://support.cloudflare.com/hc/en-us/articles/200170786-Restoring-original-visitor-IPs-Logging-visitor-IP-addresses-with-mod-cloudflare-
После того, как у вас есть реальные IP-адреса пользователей, включенные в ваши журналы доступа, вы можете использовать такую программу, как fail2ban, чтобы либо установить запрет на стороне Cloudflare (используя их API), либо поддерживая список блокировки в nginx с помощью директивы deny.