Akrion — легковесная защита для вашего сервера!
Warning
Don't take the project too seriously, vibe coding project! xD
- 🔍 Анализ трафика: Захват и анализ TCP пакетов с использованием GoPacket
- 💾 Оптимизация памяти: Использование SnapLen для захвата только заголовков пакетов (96 байт)
- 🛡️ Обнаружение атак: Автоматическое обнаружение сканирования портов
- 📊 Веб-дашборд: Современный интерфейс с реал-тайм обновлениями через WebSocket
- 💻 Мониторинг системы: Отслеживание использования CPU и RAM
- 🗄️ База данных: Хранение статистики в SQLite через GORM
- Язык: Go 1.21+
- Анализ трафика: GoPacket
- HTTP-фреймворк: Gin
- WebSocket: Gorilla WebSocket
- База данных: GORM + SQLite
- Системный мониторинг: gopsutil
- Go 1.21 или выше
- Права root для захвата пакетов
- libpcap (обычно устанавливается через системный пакетный менеджер)
# Ubuntu/Debian
sudo apt-get install libpcap-dev# Клонирование репозитория
git clone <repository-url>
cd Akrion
# Установка зависимостей Go
go mod download
go mod tidyПрограмма должна запускаться с правами root для захвата сетевых пакетов.
sudo go run cmd/server/main.go -interface eth0 -port 1337 -db akrion.db# Сборка
go build -o akrion cmd/server/main.go
# Запуск
sudo ./akrion -interface eth0 -port 1337 -db akrion.db-interface(обязательно): Имя сетевого интерфейса для мониторинга (например,eth0,enp0s3)-port(опционально): Порт для веб-сервера (по умолчанию:1337)-db(опционально): Путь к файлу базы данных SQLite (по умолчанию:akrion.db)
# Запуск на интерфейсе eth0 с портом 1337
sudo go run cmd/server/main.go -interface eth0
# Запуск на интерфейсе enp0s3 с портом 3000 и кастомной БД
sudo go run cmd/server/main.go -interface enp0s3 -port 3000 -db /var/lib/akrion/data.dbПосле запуска сервера откройте браузер и перейдите по адресу:
http://localhost:1337
- Главная: Краткая статистика трафика и последние пакеты
- Detect: Обнаруженные аномалии и сканирования портов
- Honeypot: Активность honeypot (если настроена)
- CPU/RAM: Системные метрики в реальном времени
GET /api/traffic— Получить последние записи трафикаGET /api/detections— Получить обнаруженияGET /api/honeypot— Получить активность honeypotGET /api/system— Получить историю системных метрикGET /api/system/current— Получить текущие системные метрикиGET /api/summary— Получить сводку статистикиGET /api/stats— Получить статистику пакетов в реальном времени
WS /ws— WebSocket соединение для реал-тайм обновлений
akrion/
├── cmd/
│ └── server/ # Основной веб-сервер
├── internal/
│ ├── capture/ # Захват пакетов
│ ├── config/ # Конфигурация
│ ├── detection/ # Обнаружение атак
│ └── server/ # HTTP/WebSocket handlers
├── pkg/
│ ├── models/ # Модели данных (GORM)
│ ├── monitor/ # Системный мониторинг
│ └── websocket/ # WebSocket хаб
├── web/
│ ├── static/ # Статические файлы (CSS, JS)
│ └── templates/ # HTML шаблоны
└── go.mod # Зависимости Go
- SnapLen: Захват только первых 96 байт каждого пакета для экономии памяти
- Батчинг: Пакетная запись статистики в БД (каждые 5 секунд или при накоплении 100 записей)
- Горутины: Параллельная обработка пакетов и веб-запросов
- In-memory кеш: Быстрый доступ к статистике без обращения к БД
База данных SQLite автоматически создаётся при первом запуске. Структура включает:
traffic_stats— Статистика трафикаdetections— Обнаруженные аномалииhoneypot_activities— Активность honeypotsystem_metrics— Системные метрики
У меня возникла идея дать название концепции, которая, как я полагаю, возможно, уже существует и, возможно, имеет своё устоявшееся название, но я хочу назвать её «Unarmed Container/Server».
Концепция «Unarmed Container/Server» подразумевает минималистский подход к развертыванию и управлению инфраструктурой. Основная идея заключается в том, чтобы включать в контейнер или сервер только те компоненты и инструменты, которые действительно необходимы для выполнения конкретных задач. Это помогает снизить количество потенциальных уязвимостей, уменьшить размер образа и упростить управление.
Подробнее на Habr [RU]
📚 Полезные инструменты
PEASS-ng — Privilege Escalation Awesome Scripts SUITE. Поможет обнаружить ошибки в настройках.
# Установка зависимостей
go mod download
# Обычный запуск без сборки
sudo go run cmd/server/main.go -interface eth0См. файл LICENSE