
Linuxサーバー向けのカーネルレベルのセキュリティと攻撃対応
Linuxサーバ向けのカーネルレベルトラフィックインテリジェンスと脅威修復。
KernelEyeは、Linuxサーバ向けのセルフホスト型セキュリティ監視プラットフォームです。GoエージェントでeBPF、TC、XDPを使用してネットワークメタデータを観測し、不審なアクティビティをスコアリングし、カーネルレベルのXDPブロッキングとipset/iptablesルールを通じて修復を適用します。Goバックエンドがイベントを保存・分析し、Reactダッシュボードがサーバ管理、ライブトラフィック、脅威ビュー、ブロックされたIP、ホワイトリスト、レポート、分析を提供します。
shared/scoring の共有Goスコアリングロジックによる脅威スコアリング。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:Fiber HTTP APIと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/ にあり、Vite Reactアプリケーションです。
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はエージェントで有効化されるとアクティブな修復をサポートします。
ダッシュボードはブロック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メール、GitHub/Google OAuth、MaxMind GeoIPが含まれます。
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 を設定し、少なくとも1つのOAuthプロバイダー(GitHubまたはGoogle)を設定してください。設定された所有者メールのみがサインインを許可されます。
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検証用のバックエンドCA証明書
--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
KernelEyeエージェントは以下の構成でテストされています。この表は新しい環境が検証されるたびに更新されます。
| OS | カーネル | CPU | RAM | アーキテクチャ | 備考 |
|---|---|---|---|---|---|
| Ubuntu 26.04 LTS | 7.0.0-15-generic | AMD EPYC-Genoa (2 vCPU) | 3.7 GB | x86_64 | — |
eBPFユーザースペース統合には ebpf-go を使用しています。
一般的な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 Licenseの対象ではありません。ブランド使用条件については TRADEMARKS.md を参照してください。
| 層 | 実装 | 目的 |
|---|
| 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 | バックエンド生成のブロック状態とコマンドを調整 |
| 層 | テクノロジー |
|---|
| エージェント | 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 |