Сервис предназначен для борьбы с подбором паролей при авторизации в какой-либо системе.
Сервис вызывается перед авторизацией пользователя и может либо разрешить, либо заблокировать попытку.
Предполагается, что сервис используется только для 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.
Запрос:
- login
- password
- ip
Ответ:
- ok (true/false) - сервис должен возвращать ok=true, если считает что запрос нормальный и ok=false, если считает что происходит bruteforce.
Должен очистить bucket-ы соответствующие переданным login и ip.
- login
- ip
- подсеть (IP + маска)
- подсеть (IP + маска)
- подсеть (IP + маска)
- подсеть (IP + маска)
Основные параметры конфигурации: N, M, K - лимиты по достижению которых, сервис считает попытку брутфорсом.
- clone/download repo
- init config ($cp configs/config.yml.dist configs/config.yml)
- run service ($make run)