Skip to content

GRPC сервер для защиты от bruteforce атак с поддержкой White/Black листов.

Notifications You must be signed in to change notification settings

romsar/antibrut

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7302035 · Nov 14, 2022

History

42 Commits
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 9, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 14, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022
Nov 5, 2022

Repository files navigation

AntiBrut

AntiBrut - это GRPC сервер для защиты от bruteforce атак с поддержкой White/Black листов, написанный на Go.

По умолчанию используется алгоритм Leaky Bucket (https://ru.wikipedia.org/wiki/Алгоритм_текущего_ведра).

White/Black листы, а также настройки лимитирования, хранятся в БД Sqlite3.

Бакеты хранятся в памяти (по умолчанию), но можно переключиться также на Sqlite3.

Go Go Report Card

Workflow

Делается запрос на /check с указанием логина, пароля и IP адреса.

По каждому этому значению проверяется заполнение ведра. Если хотя бы одно ведро переполнено, то в ответе вернется false, в остальных случаях вернется true.

Перед самой проверкой бакетов, происходит проверка IP на присутствие в белый и черных списках.

По умолчанию для логина установлен лимит - 10 запросов в минуту, для пароля - 100 запросов в минуту (защита от обратного brutforce), для IP - 1000 запросов в минуту.

Редактирование этих значений производится в таблице limitations.

Установка и запуск

Есть несколько вариантов для запуска приложения:

  1. С помощью go install:
go install github.com/romsar/antibrut/cmd/antibrut

antibrut run
  1. Скомпилировать из исходников и запустить через Docker:
git clone github.com/romsar/antibrut

cd antibrut

make run
  1. Скачать и запустить скомпилированный файл.

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

Конфигурация производится с помощью переменных окружения. Для удобства, можно задавать их через .env файл - при запуске приложение будет загружать переменные окружения из него.

ENV параметр Описание Значение по умолчанию
ANTIBRUT_GRPC_ADDRESS Хост и порт GRPC сервера :9090
ANTIBRUT_PRUNE_DURATION Количество времени, после которого бакеты считаются устаревшими и удаляются. Если указать "0", то удаление неактуальных бакетов производиться не будет. Указывается в виде числа и единицы измерения (s (секунды), m (минуты), h (часы). 1h
ANTIBRUT_RATE_LIMITER_DRIVER Механизм хранения бакетов. Может быть sqlite и inmem. inmem
ANTIBRUT_SQLITE_DSN DSN для подключения к SQLite3. file::memory:?cache=shared&_foreign_keys=on

CLI

Существует также интерфейс для командой строки, который позволяет сбрасывать бакеты и управлять черным/белым списком. Введите antibrut tool для просмотра раздела помощи CLI.

Тестирование

AntiBrut тестируется с помощью Unit и интеграционных тестов.

make test
make integration-test
make tests #for both

Для работы интеграционных тестов необходимо установить Docker.

About

GRPC сервер для защиты от bruteforce атак с поддержкой White/Black листов.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages