Files
BanForge/README.md

150 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 серверов с минимальными накладными расходами на ресурсы.