docs: write comprehensive README with project overview and roadmap

This commit is contained in:
Ilya Chernishev
2026-01-11 17:51:48 +03:00
parent 1bbbd97190
commit f46d3242b6

149
README.md
View File

@@ -0,0 +1,149 @@
# 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 серверов с минимальными накладными расходами на ресурсы.