Skip to content

Сервис предназначен для борьбы с подбором паролей при авторизации в какой-либо системе.

License

Notifications You must be signed in to change notification settings

petrenko-alex/api-rate-limiter

Repository files navigation

API Rate Limiter

Сервис предназначен для борьбы с подбором паролей при авторизации в какой-либо системе.

Сервис вызывается перед авторизацией пользователя и может либо разрешить, либо заблокировать попытку.

Предполагается, что сервис используется только для server-server, т.е. скрыт от конечного пользователя.

Алгоритм работы

Сервис ограничивает частоту попыток авторизации для различных комбинаций параметров, например:

  • не более N = 10 попыток в минуту для данного логина.
  • не более M = 100 попыток в минуту для данного пароля (защита от обратного brute-force).
  • не более K = 1000 попыток в минуту для данного IP (число большое, т.к. NAT).

White/black листы содержат списки адресов сетей, которые обрабатываются более простым способом:

  • Если входящий IP в whitelist, то сервис безусловно разрешает авторизацию (ok=true);
  • Если - в blacklist, то отклоняет (ok=false).

Архитектура

Микросервис состоит из API, базы данных для хранения настроек и black/white списков. Сервис предоставляет GRPC API.

Описание методов API

Попытка авторизации

Запрос:

  • login
  • password
  • ip

Ответ:

  • ok (true/false) - сервис должен возвращать ok=true, если считает что запрос нормальный и ok=false, если считает что происходит bruteforce.

Сброс bucket

Должен очистить bucket-ы соответствующие переданным login и ip.

  • login
  • ip

Добавление IP в blacklist

  • подсеть (IP + маска)

Удаление IP из blacklist

  • подсеть (IP + маска)

Добавление IP в whitelist

  • подсеть (IP + маска)

Удаление IP из whitelist

  • подсеть (IP + маска)

Конфигурация

Основные параметры конфигурации: N, M, K - лимиты по достижению которых, сервис считает попытку брутфорсом.

Развертывание

  • clone/download repo
  • init config ($cp configs/config.yml.dist configs/config.yml)
  • run service ($make run)

About

Сервис предназначен для борьбы с подбором паролей при авторизации в какой-либо системе.

Resources

License

Stars

Watchers

Forks