Ограничение скорости Nginx на уникальных IP-адресах
мы имеем дело с постоянными атаками на наш URL-адрес аутентификации, речь идет о миллионах запросов в день, я предполагаю, что они пытаются подобрать пароли.
Всякий раз, когда мы блокировали IP-адрес с помощью брандмауэра сервера, через несколько секунд атаки возобновлялись с другого IP-адреса.
В итоге мы реализовали комбинацию регулирования посредством атаки на стойку и специального кода для динамической блокировки IP-адресов в брандмауэре. Но по мере того, как мы улучшали безопасность нашего программного обеспечения, то же самое делали и злоумышленники, и теперь мы видим, что каждый запрос, который они делают, выполняется с другого IP, один вызов на каждый IP, по-прежнему несколько в секунду, не так много, но все еще проблема.
Теперь я пытаюсь выяснить, что еще я могу сделать, чтобы предотвратить это. Мы попробовали рекапчу, но быстро исчерпали ежемесячную квоту, и никто не смог войти в систему.
Я изучаю ограничитель скорости Nginx, но, насколько я вижу, он также использует IP-адрес, учитывая, что теперь они меняют IP-адреса для каждого запроса, есть ли способ, чтобы это работало?
Есть еще какие-нибудь предложения, как с этим справиться, может быть, кто-то из вас прошел через то же самое?
Стек: Nginx и Rails 4, Ubuntu 16.
1 ответ
Благодаря ограничению скорости вы отфильтровали некоторые из больших объемов распылителей паролей, что помогает. Однако само по себе ограничение скорости на основе IP не работает, когда злоумышленник имеет много IP-адресов, быстро переключается между ними и ограничивает запросы до человеческой скорости.
мы попробовали рекапчу, но месячная квота быстро исчерпалась, и никто не смог войти в систему.
Оплатите услугу CAPTCHA и наблюдайте, как она работает в течение месяца. Если вас не устраивает цена, посмотрите альтернативы . hCaptcha , например, имеет базовый уровень бесплатного пользования.
Более того, замените пароли чем-то лучшим, например, аппаратными ключами безопасности или биометрическими данными. Или хотя бы дополнить пароли дополнительными факторами аутентификации. Для этого существуют стандарты, а именно FIDO2. А для неинтерактивных учетных данных, не связанных с пользователем, ключи SSH, сертификаты x509 или сгенерированные ключи API также лучше, чем пароли, выбранные пользователем.