150 lines
5.7 KiB
Markdown
150 lines
5.7 KiB
Markdown
# 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 привилегии для запуска демона
|
||
|
||
### Сборка
|
||
|
||
```bash
|
||
git clone https://gitea.d3m0k1d.ru/d3m0k1d/BanForge.git
|
||
cd BanForge
|
||
make build
|
||
```
|
||
|
||
### Запуск
|
||
|
||
```bash
|
||
# Развёртывание демона
|
||
sudo ./bin/banforge daemon init
|
||
|
||
# Просмотр логов
|
||
journalctl -u banforge -f
|
||
```
|
||
|
||
## 🏗️ Архитектура
|
||
|
||
### Модульная система провайдеров
|
||
|
||
BanForge использует интерфейс-ориентированный подход для работы с файрволами:
|
||
|
||
```go
|
||
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 (текущая разработка)
|
||
- [x] Базовая архитектура с интерфейсами
|
||
- [x] Реализация UFW провайдера
|
||
- [x] Система инициализации демона
|
||
- [ ] **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](https://gitea.d3m0k1d.ru/d3m0k1d/BanForge)**.
|
||
|
||
## 🤝 Разработка
|
||
|
||
### Запуск тестов
|
||
|
||
```bash
|
||
make test
|
||
```
|
||
|
||
### Сборка для разных платформ
|
||
|
||
```bash
|
||
make build-linux-amd64
|
||
make build-linux-arm64
|
||
```
|
||
|
||
## 📞 Поддержка
|
||
|
||
- **Issues & Discussions**: [GitHub Issues](https://github.com/d3m0k1d/BanForge/issues)
|
||
- **Releases & Artifacts**: [Gitea Releases](https://gitea.d3m0k1d.ru/d3m0k1d/BanForge)
|
||
|
||
## 📄 Лицензия
|
||
|
||
GNU General Public License v3.0 — см. [LICENSE](./LICENSE)
|
||
|
||
---
|
||
|
||
**BanForge** — созданный для автоматизации защиты Linux серверов с минимальными накладными расходами на ресурсы.
|