
Безопасность на уровне ядра и реагирование на атаки для Linux-серверов.
Интеллектуальный мониторинг трафика на уровне ядра и устранение угроз для серверов Linux.
KernelEye — это платформа безопасности с самостоятельным хостингом для мониторинга серверов Linux. Она использует eBPF, TC и XDP в агенте на Go для сбора метаданных сети, оценки подозрительной активности и применения мер реагирования с помощью блокировки на уровне ядра через XDP и правил ipset/iptables. Бэкенд на Go хранит и анализирует события, а панель управления React предоставляет управление серверами, просмотр трафика в реальном времени, представление угроз, заблокированных IP, белые списки, отчёты и аналитику.
shared/scoring.Monitored Linux host
eBPF traffic probe + TC bandwidth hooks
XDP firewall and ipset/iptables remediation
Go agent (HMAC command verification, audit log)
|
| gRPC (TLS/mTLS) + HMAC-signed block commands
v
Go backend API
Fiber HTTP API
gRPC ingest/block services (TLS/mTLS, command signing)
analysis worker, block manager, retention, reports
integrity report handler
|
v
PostgreSQL
^
|
React dashboard
REST API + WebSocket live updates
Агент находится в agent/ и представляет собой процесс на хосте Linux.
agent/main.go запускает регистрацию, загрузку eBPF, отслеживание пропускной способности, реагирование, оценку, агрегацию и потоковую передачу команд блокировки.agent/ebpf/traffic_probe.c собирает метаданные трафика.agent/ebpf/xdp_firewall.c реализует фильтрацию пакетов XDP.agent/tc.go настраивает отслеживание пропускной способности TC.agent/aggregator.go группирует и отправляет события в бэкенд.agent/history_store.go и agent/flush.go обрабатывают локальное хранение и повторные попытки.agent/remediation/ содержит анализатор, автоматическую блокировку, XDP, ipset и гибридные средства реагирования.Агенту требуется Linux и повышенные привилегии для операций eBPF/XDP.
Бэкенд находится в backend/.
backend/cmd/api/main.go запускает HTTP API на Fiber и службы gRPC.backend/internal/api/ содержит аутентификацию, обработчики панели управления, обработчики gRPC, API блокировок, API белых списков, обработку WebSocket и ограничение скорости.backend/internal/analysis/ содержит рабочие процессы оценки, управление блокировками, хранение данных и логику ежемесячных отчётов.backend/internal/database/ содержит код доступа к базе данных, сгенерированный sqlc.backend/internal/geoip/ обрабатывает обогащение GeoIP.backend/internal/email/ отправляет электронные письма через Mailtrap при настройке.backend/migrations/ содержит миграции PostgreSQL.HTTP по умолчанию использует порт 8080; gRPC — порт 9091.
Панель управления находится в dashboard/ и представляет собой приложение React на Vite.
dashboard/src/pages/ включает страницы обзора, серверов, деталей сервера, угроз, оповещений, отчётов, визуализатора, заблокированных IP, белых списков, входа, профиля и обратного вызова OAuth.dashboard/src/components/ содержит компоненты живого трафика, ленты блокировок, диаграмм, списков серверов, конфигураторов и общие компоненты макета.dashboard/src/api/client.ts определяет клиент REST API.dashboard/src/context/WebSocketContext.tsx управляет обновлениями событий в реальном времени.Сервер разработки настроен на http://localhost:3000.
Публичный маркетинговый сайт находится в kerneleye-landing-page/. Образ фронтенда для продакшена собирает как лендинговую страницу, так и панель управления, затем обслуживает их через nginx.
shared/scoring/ содержит общий модуль оценки угроз, используемый и агентом, и бэкендом.shared/cmdsigning/ содержит модуль подписи команд HMAC-SHA256 и защиты от повторного воспроизведения nonce.proto/kerneleye/v1/ содержит определения protobuf для служб приёма и блокировки.proto/gen/go/ содержит сгенерированный код Go protobuf.KernelEye не проверяет содержимое пакетов или приложений.
Собираемые метаданные включают:
Не собираются:
Оценка угроз реализована в shared/scoring/scorer.go. Текущий оценщик более нюансирован, чем одна линейная формула: он учитывает скорость SYN, количество уникальных портов, неудачные рукопожатия, всплески поведения, злоупотребление службами, направление, достоверность и снижение оценки со временем.
Пороги классификации по умолчанию:
< 20 normal
20-39 suspicious
>= 40 malicious
>= 40 eligible for auto-blocking when remediation is enabled
Рабочий процесс анализа бэкенда также использует накопленные окна трафика и может инициировать управление блокировками для источников с высоким риском.
KernelEye поддерживает активное реагирование при его включении на агенте.
| Уровень | Реализация | Назначение |
|---|---|---|
| XDP | agent/remediation/xdp_remediator.go | Быстрая блокировка на уровне ядра до сетевого стека |
| IPSet | agent/remediation/ipset_remediator.go | Управление блокировками ipset/iptables |
| Гибридный | agent/remediation/hybrid_remediator.go | Координирует поведение XDP и ipset |
| Автоблокировщик | agent/remediation/auto_blocker.go | Блокирует источники выше заданных порогов оценки |
| Менеджер блокировок бэкенда | backend/internal/analysis/block_manager.go | Координирует состояние блокировок и команды, генерируемые бэкендом |
Панель управления также предоставляет управление заблокированными IP и белыми списками.
cp .env.example .env
Установите как минимум:
DATABASE_URL=postgres://kerneleye:<password>@localhost:5432/kerneleye?sslmode=disable
JWT_SECRET=<at-least-32-characters>
API_KEY_SECRET=<strong-secret>
CORS_ORIGINS=http://localhost:3000
Опциональные интеграции включают ограничение скорости Redis, электронную почту Mailtrap, OAuth GitHub/Google и GeoIP MaxMind.
cd backend
go mod download
go run cmd/api/main.go
Бэкенд запускает:
http://localhost:8080localhost:9091cd dashboard
npm install
npm run dev
Откройте http://localhost:3000.
Вход только через OAuth. Установите AUTH_OWNER_EMAIL и настройте хотя бы одного провайдера OAuth (GitHub или Google) для доступа к панели. Только указанный email владельца может входить в систему.
cd agent
bpftool btf dump file /sys/kernel/btf/vmlinux format c > ebpf/vmlinux.h
go generate ./...
go build -o kerneleye-agent
sudo KERNELEYE_API_KEY=<server-api-key> \
KERNELEYE_SERVER=localhost:8080 \
KERNELEYE_GRPC_URL=localhost:9091 \
./kerneleye-agent
Полезные флаги агента:
-enable-remediation включить активную блокировку и автоблокировку
-xdp включить блокировку на быстром пути XDP
-interface <name> выбрать сетевой интерфейс XDP
--read-only только мониторинг и отчётность, без блокировки
--insecure отключить TLS (только для разработки)
--tls-ca-file <path> сертификат ЦС бэкенда для проверки TLS
--tls-cert-file <path> клиентский сертификат агента для mTLS
--tls-key-file <path> закрытый ключ клиента агента для mTLS
-list-blocked вывести текущее состояние ipset и выйти
-flush-blocklists очистить списки блокировок ipset и XDP и выйти
-clear-data удалить локальные хранилища SQLite агента и выйти
-version вывести версию сборки
Если установлен --enable-remediation, необходимо настроить CMD_SIGNING_KEY
как на агенте, так и на бэкенде. Сгенерируйте с помощью openssl rand -base64 32.
kerneleye/
├── agent/ Go eBPF/XDP monitoring agent
│ ├── ebpf/ eBPF C programs and compiled objects
│ ├── remediation/ analyzer, XDP, ipset, hybrid remediation
│ ├── assets/ embedded XDP object assets
│ └── scripts/ ipset helper scripts and service files
├── backend/ Go Fiber API and gRPC backend
│ ├── cmd/api/ backend entrypoint
│ ├── internal/api/ HTTP, auth, WebSocket, gRPC, block APIs
│ ├── internal/analysis/ workers, blocking, retention, reports
│ ├── internal/database/ sqlc generated queries and helpers
│ ├── internal/email/ Mailtrap email service
│ ├── internal/geoip/ MaxMind GeoIP service
│ └── migrations/ PostgreSQL migrations
├── dashboard/ React dashboard app
├── kerneleye-landing-page/ React landing page app
├── proto/ protobuf definitions and generated Go code
├── shared/
│ ├── scoring/ shared threat scoring Go module
│ └── cmdsigning/ HMAC command signing and nonce tracking
├── docs/ additional project documentation
├── tests/ traffic simulation shell scripts
├── docker/ frontend nginx and install script templates
├── Dockerfile.backend backend container build
├── Dockerfile.frontend landing + dashboard + agent download image
├── docker-compose.yml production-oriented compose stack
└── Makefile generation, build, and docker targets
| Уровень | Технологии |
|---|---|
| Агент | Go, cilium/ebpf, XDP, TC, gRPC, SQLite local stores, zap |
| Бэкенд | Go, Fiber, gRPC, PostgreSQL, sqlc, Redis, Mailtrap |
| Панель управления | React, TypeScript, Vite, Ant Design, React Query, Recharts |
| Лендинговая страница | React, TypeScript, Vite, Tailwind CSS |
| Протоколы | Protobuf, gRPC |
| Развёртывание | Docker, Docker Compose, nginx, Traefik labels |
Агент KernelEye был протестирован на следующих конфигурациях. Таблица обновляется по мере валидации новых окружений.
| ОС | Ядро | ЦП | ОЗУ | Архитектура | Примечания |
|---|---|---|---|---|---|
| Ubuntu 26.04 LTS | 7.0.0-15-generic | AMD EPYC-Genoa (2 vCPU) | 3.7 GB | x86_64 | — |
Мы используем ebpf-go для интеграции пользовательского пространства eBPF.
Общие цели Make:
make gen-proto
make gen-sql
make gen-ebpf
make build-backend
make build-agent
make build
make docker-build
Образ Docker для фронтенда собирает лендинговую страницу, панель управления и загружаемый бинарный файл агента Linux.
KernelEye является открытым программным обеспечением под лицензией Apache License, Version 2.0 (Apache-2.0). См. LICENSE.
Авторское право 2026, Abdeljalil Aitetaleb.
Название KernelEye, логотипы и визуальная идентификация не лицензируются по лицензии Apache. См. TRADEMARKS.md для условий использования бренда.