GitHub – williamofai/c-sentinel: Observabilidade Semântica para Sistemas UNIX

PUBLICIDADE

GitHub - williamofai/c-sentinel: Observabilidade Semântica para Sistemas UNIX

Observabilidade Semântica para Sistemas UNIX

Um analisador de sistema leve e portátil escrito em C que captura “impressões digitais do sistema” para análise de riscos não óbvios auxiliada por IA. Apresenta integração auditada, pontuação de risco explicável e um painel da web ao vivo com autenticação multiusuário de nível empresarial.

Demonstração ao vivo: sentinela.speytech.com

Perfil de usuário e configurações de segurança

Autenticação de dois fatores

ConfigurarConecte-se

  • 👥 Autenticação multiusuário – Controle de acesso baseado em função (Administrador/Operador/Visualizador)
  • 🔐 Autenticação de dois fatores – Suporte TOTP com Google Authenticator, Authy, etc.
  • 🔑 Chaves de API pessoais – Chaves de API por usuário para automação e CI/CD
  • 📋 Registro de auditoria administrativa – Acompanhe todas as ações do usuário com filtragem
  • 💻 Gerenciamento de sessão – Ver sessões ativas, revogar acesso, forçar logout
  • 📧 Alertas por e-mail e Slack – Notificações proativas com formatação avançada
  • 🎨 Notificações modernas do brinde – Chega de alertas JavaScript da década de 1990!
  • 👁️ Modo de demonstração pública – Acesso somente leitura para exibir seu painel
  • 📱 Responsivo a dispositivos móveis – Funcionalidade completa em telefones e tablets

v0.5.x: Resumo da postura de segurança, gráfico de tendência de risco, indicador de aprendizagem, fatores de risco explicáveis, alertas por e-mail, histórico de eventos

v0.4.0: Integração auditd, detecção de força bruta, hash de nome de usuário que preserva a privacidade, atribuição de processo, pontuação de risco

v0.3.0: Painel da Web, somas de verificação SHA256, serviço systemd, aprendizado de linha de base, investigação de rede, modo de observação

Ferramentas modernas de observabilidade como Dynatrace, Datadog e Prometheus são excelentes na coleta de métricas e alertas de limite. Mas eles respondem a uma pergunta restrita: “Esta métrica está fora do intervalo esperado?”

Eles lutam com:

  • Raciocínio causal: Por que algo falhou?
  • Síntese de contexto: Conectando uma alteração de configuração na semana passada ao pico de latência de hoje
  • Degradação não óbvia: Coisas que não estão “quebradas”, mas estão caminhando para o fracasso
  • Contexto de segurança: Entendimento Quem acessado o que e por que isso importa

O C-Sentinel adota uma abordagem diferente: captura uma impressão digital abrangente do sistema – incluindo eventos de segurança – e usa o raciocínio LLM para identificar os “fantasmas na máquina”.

# Clone and build
git clone https://github.com/williamofai/c-sentinel.git
cd c-sentinel
make

# Quick analysis
./bin/sentinel --quick --network

# Quick analysis with security events (requires root for audit logs)
sudo ./bin/sentinel --quick --network --audit

# Learn baselines (automatic with --audit flag)
./bin/sentinel --learn --network

# Continuous monitoring with full context
sudo ./bin/sentinel --watch --interval 300 --network --audit

O painel da web fornece monitoramento de segurança em tempo real em toda a sua infraestrutura.

Autenticação multiusuário

Controle de acesso de nível empresarial com três funções:

PapelPermissões
AdministradorAcesso total: gerencie usuários, visualize logs de auditoria, todas as operações
OperadorReconheça eventos, redefina contadores, visualize todos os dados
VisualizadorAcesso somente leitura a painéis e dados

Autenticação de dois fatores (TOTP)

Proteja sua conta com TOTP padrão do setor:

  • Funciona com Google Authenticator, Authy, Microsoft Authenticator
  • Configuração de código QR para fácil configuração
  • Obrigatório em todos os logins quando ativado
  • Notificações por e-mail ao ativar/desativar

Cada usuário pode criar suas próprias chaves de API para automação:

  • Chaves nomeadas (por exemplo, “CI/CD Pipeline”, “Monitoring Script”)
  • Datas de validade opcionais
  • Ativar/desativar sem excluir
  • Rastreamento usado pela última vez
  • As chaves herdam as permissões de função do usuário
# Use your personal API key
curl -X POST https://sentinel.example.com/api/ingest \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sk_your_personal_key" \
  -d @fingerprint.json

Acompanhe todas as ações do usuário para conformidade e segurança:

  • Eventos de login/logout com endereços IP
  • Ações de gerenciamento de usuários (criar, atualizar, excluir)
  • Alterações de senha
  • Revogações de sessão
  • Filtrável por usuário, tipo de ação e intervalo de tempo

Visibilidade total das sessões ativas:

  • Veja quem está logado e de onde
  • Detecção de dispositivo e navegador
  • Revogar sessões individuais
  • “Sair de todos os outros” para incidentes de segurança
  • Limpeza automática de sessões expiradas

Explicação simples em inglês do status de segurança do seu sistema:

“Este sistema não mostra preocupações de segurança. Os padrões de autenticação são normais, sem falhas detectadas. Nenhuma atividade de escalonamento de privilégios detectada. Postura geral: SAUDÁVEL.”

Cada pontuação de risco inclui fatores que explicam por que:

FatorPeso
10 falhas de autenticação (200% acima da linha de base – alta)+30
Padrão de ataque de força bruta detectado+10
2 arquivos confidenciais acessados+4
Total44

Indicador de aprendizagem/calibração

O sistema aprende o que é “normal” para o seu ambiente:

AmostrasStatusSignificado
<10🧠 AprendizagemConstruindo a linha de base inicial
10-50🧠 CalibrandoRefinando padrões normais
> 50(escondido)Totalmente calibrado

Um minigráfico que mostra o histórico de pontuação de risco de 24 horas – veja instantaneamente se as coisas estão melhorando ou piorando.

Notificações automáticas por e-mail e/ou Slack quando:

  • Pontuação de risco ≥ 16 (alto/crítico)
  • Ataque de força bruta detectado
  • Execuções de /tmp ou /dev/shm
  • Login do usuário do novo IP
  • Alterações de senha ou 2FA

Os alertas do Slack incluem formatação avançada com gravidade codificada por cores, links de painel clicáveis ​​e detalhes estruturados de fatores de risco.

C-Sentinel resume logs auditados para análise de segurança semântica.

C-Sentinel Quick Analysis
========================
Hostname: axioma-validator
Uptime: 14.5 days
Load: 0.02 0.04 0.00
Memory: 49.2% used
Processes: 120 total

Potential Issues:
  Zombie processes: 0
  High FD processes: 1
  Long-running (>7d): 95
  Config permission issues: 0

Network:
  Listening ports: 26
  Established connections: 14
  Unusual ports: 12 ⚠

Security (audit):
  Auth failures: 6
  ⚠ BRUTE FORCE PATTERN DETECTED
  Sudo commands: 81
  Sensitive file access: 2
    - /etc/passwd by touch
    - /etc/shadow by touch ⚠

  Risk: high (score: 25)
{
  "audit_summary": {
    "enabled": true,
    "period_seconds": 300,
    "authentication": {
      "failures": 6,
      "failure_users_hashed": ["user_c4c5", "user_b91b"],
      "brute_force_detected": true
    },
    "privilege_escalation": {
      "sudo_count": 81,
      "sudo_baseline_avg": 12.5,
      "sudo_deviation_pct": 548.0,
      "su_count": 5
    },
    "file_integrity": {
      "sensitive_file_access": [
        {
          "path": "/etc/shadow",
          "access": "write",
          "count": 2,
          "process": "touch",
          "process_chain": ["touch", "bash", "sshd"],
          "suspicious": true
        }
      ]
    },
    "learning": {
      "sample_count": 42,
      "confidence": "medium"
    },
    "risk_factors": [
      {"reason": "6 auth failures (200% above baseline - high)", "weight": 18},
      {"reason": "Brute force attack pattern detected", "weight": 10}
    ],
    "risk_score": 25,
    "risk_level": "high"
  }
}

Para obter melhores resultados, adicione regras de auditoria para arquivos confidenciais:

# Add audit rules
sudo auditctl -w /etc/passwd -p wa -k identity
sudo auditctl -w /etc/shadow -p wa -k identity
sudo auditctl -w /etc/sudoers -p wa -k priv_esc
sudo auditctl -w /var/log/lastlog -p wa -k auth

# Make permanent (add to /etc/audit/rules.d/sentinel.rules)
  • Hash de nome de usuário: Nomes de usuário de login com falha são criptografados (por exemplo, user_c4c5) preservando a detecção de padrões sem expor identidades
  • Sem senhas: Argumentos de comando e dados confidenciais nunca capturados
  • Processar apenas nomes: Caminhos completos higienizados para privacidade

C-Sentinel inclui um painel web para monitorar vários hosts em tempo real.

  • Autenticação multiusuário – Controle de acesso baseado em função
  • Autenticação de dois fatores – TOTP com configuração de código QR
  • Chaves de API pessoais – Chaves de automação por usuário
  • Registro de auditoria administrativa – Histórico de ação completo
  • Gerenciamento de sessão – Controle de sessão ativo
  • Resumo da postura de segurança – Status do sistema em inglês simples
  • Minigráfico de tendência de risco – Histórico visual de 24 horas
  • Fatores de risco explicáveis – Saber por que a pontuação é o que é
  • Indicador de aprendizagem – Progresso da calibração da linha de base
  • Histórico de eventos – Linha do tempo com reconhecimento
  • Alertas por e-mail – Notificações proativas
  • Monitoramento em tempo real – Todos os anfitriões em resumo
  • Gráficos históricos – Memória e carga durante 24 horas
  • Visualização de rede – Todas as portas e conexões de escuta
  • Acompanhamento de configuração – Somas de verificação SHA256 de arquivos monitorados
# Install dashboard
cd dashboard
sudo ./install-dashboard.sh

# Run database migration
sudo -u postgres psql -d sentinel -f migrate.sql

# Install 2FA dependencies (optional)
sudo /opt/sentinel-dashboard/venv/bin/pip install pyotp qrcode pillow

# Configure agent to report (with audit)
*/5 * * * * sudo /usr/local/bin/sentinel --json --network --audit | curl -s -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_KEY" \
  -d @- https://your-dashboard.com/api/ingest

Configuração de alerta por e-mail

Adicione ao seu serviço ou ambiente systemd:

ALERT_EMAIL_ENABLED=true
ALERT_SMTP_HOST=smtp.gmail.com
ALERT_SMTP_PORT=587
ALERT_SMTP_USER=your@email.com
ALERT_SMTP_PASS=your-app-password
ALERT_FROM=your@email.com
ALERT_TO=alerts@email.com
ALERT_COOLDOWN_MINS=60

Configuração do Webhook do Slack

ALERT_SLACK_ENABLED=true
ALERT_SLACK_WEBHOOK=https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
ALERT_SLACK_CHANNEL=#security-alerts    # Optional - override default webhook channel
ALERT_SLACK_USERNAME=C-Sentinel         # Optional - bot display name

Para obter um URL de webhook:

  1. Acesse api.slack.com/apps
  2. Crie um novo aplicativo → “Do zero”
  3. Habilite “Webhooks de entrada”
  4. Clique em “Adicionar novo webhook ao espaço de trabalho”
  5. Selecione um canal e copie o URL do webhook

Consulte dashboard/README.md para obter instruções completas de configuração.

Habilite o acesso público somente leitura para exibir seu painel:

Environment="DEMO_MODE=true"

No modo de demonstração:

  • Não é necessário fazer login – os visitantes vão direto para o painel
  • Acesso somente leitura (função de visualizador)
  • Recursos de administração ocultos
  • Links de perfil/logout substituídos pelo link do GitHub
  • Banner amarelo indica modo de demonstração

Ótimo para postagens no LinkedIn, artigos de blog ou para permitir que clientes em potencial explorem antes da implantação.

Para implantação de produção:

# Install
sudo ./install.sh

# Enable and start
sudo systemctl enable sentinel
sudo systemctl start sentinel

# Check status
sudo journalctl -u sentinel -f

RecursoComandoDescrição
Análise rápida--quickResumo legível por humanos
Sonda de rede--networkPortas e conexões de escuta
Sonda de auditoria--auditEventos de segurança (requer root)
Modo de exibição--watch --interval 60Monitoramento contínuo
Aprendizado de linha de base--learnSalvar o estado atual como “normal”
Linha de base da auditoria--audit-learnAprenda padrões normais de segurança
Comparação de linha de base--baselineDetectar desvios
Saída JSON--jsonImpressão digital completa para LLM/painel
Saída colorida--colorSaída terminal colorida
Configuração--configMostrar configurações atuais

A saída colorida é detectada automaticamente (TTY) e respeita o padrão NO_COLOR.

CódigoSignificado
0Nenhum problema detectado
1Avisos (problemas menores)
2Crítico (zumbis, problemas de permissão, portas incomuns, eventos de segurança de alto risco)
3Erro (falha na análise)

CategoriaDadosPropósito
SistemaNome do host, kernel, tempo de atividade, carga, memóriaContexto básico de saúde
ProcessosProcessos notáveis ​​com metadadosZumbi, vazamento, detecção de travamento
ConfiguraçõesMetadados de arquivo + somas de verificação SHA256Detecção de desvio criptográfico
RedeOuvintes, conexões, portasMonitoramento de serviço
SegurançaFalhas de autenticação, uso de sudo, acesso a arquivosDetecção de ameaças

  • 🧟 Processos zumbis: Sempre um problema
  • 📂 Contagens altas de FD: Vazamentos potenciais do descritor (>100 abertos)
  • Processos de longa duração: >7 dias sem reiniciar
  • 🔓 Problemas de permissão: Configurações graváveis ​​mundialmente
  • 🌐 Portas incomuns: Serviços que não estão na lista de portas comuns
  • 📡 Novos ouvintes: Portas que não estavam na linha de base
  • Serviços ausentes: Portas esperadas que pararam de escutar

Problemas de segurança (com –audit)

  • 🔐 Força bruta: Picos de falha de autenticação (>5 na janela)
  • 📊 Desvio da linha de base: Atividade significativamente acima do normal
  • 📝 Acesso a arquivos confidenciais: modificações em /etc/shadow, /etc/sudoers
  • ⚠️ Processos suspeitos: Processo incomum de acesso a arquivos confidenciais
  • 💀 Indicadores de malware: Execuções de /tmp ou /dev/shm
┌─────────────────────────────────────────────────────────────────┐
│                      Web Dashboard                              │
│  • Multi-user auth (RBAC)      • Two-factor authentication      │
│  • Personal API keys           • Session management             │
│  • Admin audit log             • Email & Slack alerts           │
│  • Security posture summary    • Risk trend sparkline           │
│  • Explainable risk factors    • Event history timeline         │
│  • Multi-host view             • Historical charts              │
└─────────────────────────────────────────────────────────────────┘
                              ▲
                              │ JSON via HTTP POST
                              │
┌─────────────────────────────────────────────────────────────────┐
│                     C Foundation (99KB)                         │
│  • /proc parsing              • SHA256 checksums                │
│  • Process analysis           • Drift detection                 │
│  • Network probing            • Baseline learning               │
│  • Auditd parsing             • Risk scoring                    │
│  • Process chains             • Anomaly detection               │
└─────────────────────────────────────────────────────────────────┘

PreocupaçãoPitãoC
DependênciasRequer tempo de execução Python (~100 MB)Binário estático (~99 KB)
Hora de inicialização~500ms de inicialização do intérprete~1ms
MemóriaLinha de base de aproximadamente 30 MB<2MB
PortabilidadePrecisa de versão Python correspondenteFunciona em qualquer sistema POSIX

make              # Release build
make DEBUG=1      # Debug build with symbols
make test         # Run basic tests
make install      # Install to /usr/local/bin
  • GCC ou Clang com suporte C99
  • GNU Make
  • Linux (usa /proc sistema de arquivos)
  • auditd (opcional, para --audit bandeira)
c-sentinel/
├── include/
│   ├── sentinel.h        # Core data structures
│   └── audit.h           # Audit integration types
├── src/
│   ├── main.c            # CLI entry point
│   ├── prober.c          # System probing (/proc)
│   ├── net_probe.c       # Network probing
│   ├── audit.c           # Auditd log parsing
│   ├── audit_json.c      # Audit JSON serialisation
│   ├── process_chain.c   # Process ancestry walking
│   ├── baseline.c        # Baseline learning
│   ├── sha256.c          # Pure C SHA256
│   └── ...
├── dashboard/            # Flask web dashboard
├── deploy/               # Systemd service files
└── docs/
    ├── AUDIT_SPEC.md     # Audit integration design
    └── DESIGN_DECISIONS.md

Licença MIT – consulte LICENÇA para obter detalhes.

Willian Murray – 30 anos de engenharia de sistemas UNIX


“O objetivo não é substituir as ferramentas de monitoramento – é adicionar sabedoria aos seus dados.”

Fonte: theverge

Mais recentes

PUBLICIDADE

WP Twitter Auto Publish Powered By : XYZScripts.com