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