
Segurança em nível de kernel e resposta a ataques para servidores Linux.
Inteligência de tráfego em nível de kernel e remediação de ameaças para servidores Linux.
KernelEye é uma plataforma de monitoramento de segurança auto-hospedada para servidores Linux. Ela usa eBPF, TC e XDP em um agente Go para observar metadados de rede, pontuar atividades suspeitas e aplicar remediação através de bloqueio XDP em nível de kernel e regras ipset/iptables. Um backend Go armazena e analisa eventos, enquanto um painel React oferece gerenciamento de servidores, tráfego ao vivo, visualizações de ameaças, IPs bloqueados, lista de permissões, relatórios e análises.
shared/scoring.Host Linux monitorado
Sonda de tráfego eBPF + hooks de largura de banda TC
Firewall XDP e remediação ipset/iptables
Agente Go (verificação de comando HMAC, registro de auditoria)
|
| gRPC (TLS/mTLS) + comandos de bloqueio assinados com HMAC
v
API backend Go
API HTTP Fiber
Serviços gRPC de ingestão/bloqueio (TLS/mTLS, assinatura de comandos)
worker de análise, gerenciador de bloqueios, retenção, relatórios
manipulador de relatório de integridade
|
v
PostgreSQL
^
|
Painel React
API REST + atualizações ao vivo WebSocket
O agente reside em agent/ e é o processo do host Linux.
agent/main.go inicia o registro, carregamento do eBPF, rastreamento de largura de banda, remediação, pontuação, agregação e streaming de comandos de bloqueio.agent/ebpf/traffic_probe.c captura metadados de tráfego.agent/ebpf/xdp_firewall.c implementa filtragem de pacotes XDP.agent/tc.go configura rastreamento de largura de banda via TC.agent/aggregator.go agrupa e envia eventos para o backend.agent/history_store.go e agent/flush.go lidam com persistência local e comportamento de repetição.agent/remediation/ contém analisador, bloqueio automático, XDP, ipset e remediadores híbridos.O agente requer Linux e privilégios elevados para operações eBPF/XDP.
O backend reside em backend/.
backend/cmd/api/main.go inicia a API HTTP Fiber e os serviços gRPC.backend/internal/api/ contém autenticação, manipuladores de painel, manipuladores gRPC, APIs de bloqueio, APIs de lista de permissões, tratamento WebSocket e limitação de taxa.backend/internal/analysis/ contém workers de pontuação, gerenciamento de bloqueios, retenção de dados e lógica de relatórios mensais.backend/internal/database/ contém código de acesso ao banco de dados gerado pelo sqlc.backend/internal/geoip/ lida com enriquecimento GeoIP.backend/internal/email/ envia e-mails com suporte a Mailtrap quando configurado.backend/migrations/ contém migrações PostgreSQL.HTTP padrão na porta 8080; gRPC padrão na porta 9091.
O painel reside em dashboard/ e é uma aplicação React Vite.
dashboard/src/pages/ inclui páginas de visão geral, servidores, detalhes do servidor, ameaças, alertas, relatórios, visualizador, IPs bloqueados, lista de permissões, login, perfil e callback OAuth.dashboard/src/components/ contém tráfego ao vivo, feed de bloqueios, gráficos, listas de servidores, configuradores e componentes de layout compartilhados.dashboard/src/api/client.ts define o cliente da API REST.dashboard/src/context/WebSocketContext.tsx gerencia atualizações de eventos ao vivo.O servidor de desenvolvimento está configurado para http://localhost:3000.
O site de marketing público reside em kerneleye-landing-page/. A imagem de frontend de produção constrói tanto a landing page quanto o painel, e os serve através do nginx.
shared/scoring/ contém o módulo de pontuação de ameaças compartilhado usado pelo agente e backend.shared/cmdsigning/ contém o módulo de assinatura de comandos HMAC-SHA256 e proteção contra repetição de nonces.proto/kerneleye/v1/ contém definições protobuf para serviços de ingestão e bloqueio.proto/gen/go/ contém código Go gerado a partir dos protobufs.KernelEye não inspeciona payloads de pacotes ou conteúdo de aplicações.
Os metadados coletados incluem:
Não coletados:
A pontuação de ameaças é implementada em shared/scoring/scorer.go. O pontuador atual é mais sutil do que uma única fórmula linear: considera taxa de SYN, acesso a portas únicas, handshakes com falha, comportamento de explosão, abuso de serviços, direção, confiança e decaimento da pontuação ao longo do tempo.
Limiares de classificação padrão:
< 20 normal
20-39 suspeito
>= 40 malicioso
>= 40 elegível para bloqueio automático quando a remediação está ativada
O worker de análise do backend também usa janelas de tráfego acumuladas e pode acionar o gerenciamento de bloqueios para fontes de alto risco.
KernelEye suporta remediação ativa quando ativada no agente.
| Camada | Implementação | Propósito |
|---|---|---|
| XDP | agent/remediation/xdp_remediator.go | Quedas rápidas em nível de kernel antes da pilha de rede |
| IPSet | agent/remediation/ipset_remediator.go | Gerenciamento de bloqueios via ipset/iptables |
| Híbrido | agent/remediation/hybrid_remediator.go | Coordena comportamento XDP e ipset |
| Bloqueador automático | agent/remediation/auto_blocker.go | Bloqueia fontes acima dos limiares de pontuação configurados |
| Gerenciador de bloqueios do backend | backend/internal/analysis/block_manager.go | Coordena o estado de bloqueio e comandos gerados pelo backend |
O painel também expõe o gerenciamento de IPs bloqueados e lista de permissões.
cp .env.example .env
Defina pelo menos:
DATABASE_URL=postgres://kerneleye:<senha>@localhost:5432/kerneleye?sslmode=disable
JWT_SECRET=<pelo-menos-32-caracteres>
API_KEY_SECRET=<segredo-forte>
CORS_ORIGINS=http://localhost:3000
Integrações opcionais incluem limite de taxa com Redis, e-mail Mailtrap, OAuth GitHub/Google e GeoIP MaxMind.
cd backend
go mod download
go run cmd/api/main.go
O backend inicia:
http://localhost:8080localhost:9091cd dashboard
npm install
npm run dev
Abra http://localhost:3000.
O login é exclusivamente OAuth. Defina AUTH_OWNER_EMAIL e configure pelo menos um provedor OAuth (GitHub ou Google) para acesso ao painel. Apenas o e-mail do proprietário configurado tem permissão para fazer login.
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=<chave-api-do-servidor> \
KERNELEYE_SERVER=localhost:8080 \
KERNELEYE_GRPC_URL=localhost:9091 \
./kerneleye-agent
Flags úteis do agente:
-enable-remediation ativa bloqueio ativo e bloqueio automático
-xdp ativa bloqueio de caminho rápido via XDP
-interface <nome> seleciona interface de rede XDP
--read-only monitora e relata apenas, nunca bloqueia
--insecure desativa TLS (apenas desenvolvimento)
--tls-ca-file <caminho> certificado CA do backend para verificação TLS
--tls-cert-file <caminho> certificado de cliente do agente para mTLS
--tls-key-file <caminho> chave privada do cliente do agente para mTLS
-list-blocked imprime estado atual do ipset e sai
-flush-blocklists limpa listas de bloqueio ipset e XDP e sai
-clear-data remove armazenamentos SQLite locais do agente e sai
-version imprime versão da build
Quando --enable-remediation está definido, CMD_SIGNING_KEY deve ser configurado tanto no agente quanto no backend. Gere com openssl rand -base64 32.
kerneleye/
├── agent/ Agente de monitoramento Go eBPF/XDP
│ ├── ebpf/ Programas C eBPF e objetos compilados
│ ├── remediation/ Analisador, XDP, ipset, remediação híbrida
│ ├── assets/ Ativos de objetos XDP incorporados
│ └── scripts/ Scripts auxiliares ipset e arquivos de serviço
├── backend/ Backend Go Fiber e gRPC
│ ├── cmd/api/ Ponto de entrada do backend
│ ├── internal/api/ HTTP, autenticação, WebSocket, gRPC, APIs de bloqueio
│ ├── internal/analysis/ Workers, bloqueio, retenção, relatórios
│ ├── internal/database/ Consultas e auxiliares gerados pelo sqlc
│ ├── internal/email/ Serviço de e-mail Mailtrap
│ ├── internal/geoip/ Serviço GeoIP MaxMind
│ └── migrations/ Migrações PostgreSQL
├── dashboard/ Aplicação painel React
├── kerneleye-landing-page/ Aplicação landing page React
├── proto/ Definições protobuf e código Go gerado
├── shared/
│ ├── scoring/ Módulo Go compartilhado de pontuação de ameaças
│ └── cmdsigning/ Assinatura de comandos HMAC e rastreamento de nonces
├── docs/ Documentação adicional do projeto
├── tests/ Scripts shell de simulação de tráfego
├── docker/ Nginx frontend e templates de scripts de instalação
├── Dockerfile.backend Build do contêiner do backend
├── Dockerfile.frontend Landing + dashboard + imagem de download do agente
├── docker-compose.yml Stack Compose orientada à produção
└── Makefile Alvos de geração, build e docker
| Camada | Tecnologias |
|---|---|
| Agente | Go, cilium/ebpf, XDP, TC, gRPC, armazenamentos locais SQLite, zap |
| Backend | Go, Fiber, gRPC, PostgreSQL, sqlc, Redis, Mailtrap |
| Painel | React, TypeScript, Vite, Ant Design, React Query, Recharts |
| Landing page | React, TypeScript, Vite, Tailwind CSS |
| Protocolos | Protobuf, gRPC |
| Implantação | Docker, Docker Compose, nginx, rótulos Traefik |
O agente KernelEye foi testado nas seguintes configurações. Esta tabela é atualizada à medida que novos ambientes são validados.
| SO | Kernel | CPU | RAM | Arquitetura | Observações |
|---|---|---|---|---|---|
| Ubuntu 26.04 LTS | 7.0.0-15-generic | AMD EPYC-Genoa (2 vCPU) | 3.7 GB | x86_64 | — |
Usamos ebpf-go para a integração eBPF no espaço do usuário.
Alvos Make comuns:
make gen-proto
make gen-sql
make gen-ebpf
make build-backend
make build-agent
make build
make docker-build
A imagem Docker do frontend constrói a landing page, o painel e um binário do agente Linux para download.
KernelEye é código aberto sob a Licença Apache, Versão 2.0 (Apache-2.0). Veja LICENSE.
Copyright 2026 Abdeljalil Aitetaleb.
O nome KernelEye, logotipos e identidade visual não são licenciados sob a Licença Apache. Veja TRADEMARKS.md para termos de uso da marca.