BanForge
BanForge — это современная система защиты от атак на базе Linux, разработанная как облегченная альтернатива fail2ban с поддержкой реал-тайм мониторинга и расширяемой архитектурой.
🎯 Назначение
BanForge автоматически обнаруживает и блокирует подозрительную активность на сервере путём анализа логов сервисов в реальном времени и применения правил через встроенные бан-провайдеры (UFW, iptables и т.д.).
🔧 Технический стек
- Язык: Go 1.21+
- ОС: Linux (Alpine, Debian, Ubuntu, Arch)
- Основные возможности:
- Логирование и конфигурация
- Системные вызовы для управления файрволом
- Real-time file watching
📁 Структура проекта
BanForge/
├── cmd/banforge/ # Основное CLI приложение
│ └── main.go # Точка входа
├── internal/ # Внутренние пакеты
│ ├── firewall/ # Реализации бан-провайдеров (UFW, iptables)
│ ├── logger/ # Система логирования
│ ├── monitor/ # Мониторинг логов в реальном времени
│ └── config/ # Парсинг конфигурации
├── .gitea/workflows/ # CI/CD pipeline (Gitea Actions)
├── go.mod # Go модули
├── Makefile # Утилиты для сборки
└── LICENSE # GPL 3.0
🚀 Быстрый старт
Требования
- Linux система с установленным Go 1.21+
- UFW или iptables для управления правилами файрвола
- Root привилегии для запуска демона
Сборка
git clone https://gitea.d3m0k1d.ru/d3m0k1d/BanForge.git
cd BanForge
make build
Запуск
# Развёртывание демона
sudo ./bin/banforge daemon init
# Просмотр логов
journalctl -u banforge -f
🏗️ Архитектура
Модульная система провайдеров
BanForge использует интерфейс-ориентированный подход для работы с файрволами:
type BanProvider interface {
Ban(ip string) error
Unban(ip string) error
Status(ip string) (bool, error)
}
Текущие реализации:
- UFW — встроенный файрвол Ubuntu/Debian
- iptables — базовая поддержка нативного Linux файрвола
Real-time мониторинг
Система использует file watchers для отслеживания изменений в логах сервисов без постоянного полинга диска.
📋 Roadmap
v0.1 (текущая разработка)
- Базовая архитектура с интерфейсами
- Реализация UFW провайдера
- Система инициализации демона
- Real-time Nginx log monitoring — следующий приоритет
- Unit тесты и интеграционные тесты
v0.2 (планируется)
- Поддержка Apache, OpenSSH логов
- Пользовательские правила с regex
- REST API для управления
v1.0 (видение)
- TUI интерфейс для управления
- Prometheus метрики
- Clustering поддержка
- Веб-дашборд
💾 Релизы на Gitea вместо GitHub
Почему релизы и артефакты находятся на self-hosted Gitea?
GitHub Actions имеет ограничения:
- Лимиты на хранилище артефактов (35 дней)
- Лимиты на размер бинариев в одном релизе
- Rate limiting для автоматизированных загрузок
- Недостаточная гибкость при работе с большими файлами
- Отсутствие полного контроля над инфраструктурой
На self-hosted Gitea:
- ✅ Полный контроль над хранилищем
- ✅ Неограниченные размеры артефактов
- ✅ Собственные CI/CD pipelines
- ✅ Приватные релизы если нужны
- ✅ Быстрые загрузки в локальной сети
Исходный код доступен на GitHub для удобства, но binary releases публикуются на Gitea.
🤝 Разработка
Запуск тестов
make test
Сборка для разных платформ
make build-linux-amd64
make build-linux-arm64
📞 Поддержка
- Issues & Discussions: GitHub Issues
- Releases & Artifacts: Gitea Releases
📄 Лицензия
GNU General Public License v3.0 — см. LICENSE
BanForge — созданный для автоматизации защиты Linux серверов с минимальными накладными расходами на ресурсы.