У меня ЦА чисто русская, поэтому мне не особо не важны другие страны,В таком случае на уровне ОС/железа можно задать вайтлист ру сегмента, что сразу снимет вопрос с объемом хранения, так как ру сегмент адресов относительно скромный. Остаток вполне потянет nft. В общем случае я бы рекомендовал накинуть клоудфлейр, но вроде в РФ он не работает...
inetnum: 2.57.121.0 - 2.57.121.255
netname: UNMANAGED-LTD
org: ORG-UMNG1-RIPE
country: GB
origin: AS47890
какой язык в браузере стоит у пользователя и если RU, то он не пишет инфу для fail2ban.
как я проверю число запросов в секунду с одного IP, если они все разные?
Для настройки ограничения количества запросов с помощью Fail2ban необходимо использовать модуль лимитирования запросов в NGINX (ngx_http_limit_req_module). 2
Принцип работы: модуль лимитирования запросов ограничивает количество запросов от пользователей и записывает события в error.log. Fail2Ban парсит данные из лог-файла с использованием фильтров и блокирует IP-адреса, производящие подозрительные запросы. 2
Пример настройки: нужно ограничить 30 запросов в минуту от одного IP-адреса. 2
1. Подключить модуль лимитера запросов в NGINX:
В основном конфигурационном файле /etc/nginx/nginx.conf добавить команду
limit_req_zone $binary_remote_addr zone=example:100m rate=30r/m;
. Она создаёт зону лимитирования, которая использует IP-адрес клиента для идентификации, хранит данные в зоне example размером 100 МБ и ограничивает 30 запросов в минуту. 2
Далее необходимо применить зону для одного из location:
location = /admin { limit_req zone=example burst=1 nodelay; ...}
. nodelay гарантирует, что, как только лимит запросов будет превышен, будет возвращён код статуса HTTP 503 (Service Unavailable). 2
2. Подключить фильтр nginx-limit-req в Fail2Ban:
Создать новый jail.local командой:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
. 2
Отредактировать /etc/fail2ban/jail.local и привести содержимое фильтра nginx-limit-req к следующему виду:
[nginx-limit-req] enabled = true port = http,https logpath = %(nginx_error_log)s
. 2
По умолчанию в Fail2Ban при срабатывании определённого условия (например, обнаружении 5 совпадений) активируется правило, которое блокирует IP-адрес злоумышленника на 10 минут. Эти значения можно изменить в конфигурации jail.local, подправив параметры
maxretry
(максимальное количество попыток) и
bantime
(время блокировки). 2
После сохранения обоих конфигурационных файлов нужно перезапустить Fail2ban:
service fail2ban restart
я тож подсеть банил пару раз, но тут столько данных, это вручную надо будет все проштудировать. Я обычно тут прроверяю ip на спам cleantalk, ну и там же и подсет видна =)