UNIX系统的语义可观测性 - 一种基于C语言的轻量级系统探针,具备AI驱动的分析能力
UNIX 系统的语义可观测性
一个用 C 编写的轻量级、可移植的系统探测器,捕获“系统指纹”以实现 AI 辅助的非明显风险分析。功能包括 auditd 集成、可解释的风险评分,以及具有企业级多用户认证的实时 Web 仪表板。
在线演示: sentinel.speytech.com



| 设置 | 登录 |
|---|---|
![]() | ![]() |




v0.5.x:安全态势摘要、风险趋势迷你图、学习指标、可解释风险因素、电子邮件警报、事件历史
v0.4.0:Auditd 集成、暴力破解检测、隐私保护的用户名哈希、进程归属、风险评分
v0.3.0:Web 仪表板、SHA256 校验和、systemd 服务、基线学习、网络探测、监视模式
像 Dynatrace、Datadog 和 Prometheus 这样的现代可观测性工具在指标收集和阈值告警方面表现出色。但它们回答的问题范围很窄:“这个指标是否超出了预期范围?”
它们在以下方面存在困难:
C-Sentinel 采用不同的方法:捕获全面的系统指纹(包括安全事件),并使用 LLM 推理来识别“机器中的幽灵”。
git clone https://github.com/williamofai/c-sentinel.git cd c-sentinel make
./bin/sentinel --quick --network
sudo ./bin/sentinel --quick --network --audit
./bin/sentinel --learn --network
sudo ./bin/sentinel --watch --interval 300 --network --audit
## 仪表盘功能
Web 仪表盘提供跨基础设施的实时安全监控。
### 多用户认证
企业级访问控制,包含三种角色:
| 角色 | 权限 |
|------|------|
| **管理员** | 完全访问:管理用户、查看审计日志、所有操作 |
| **操作员** | 确认事件、重置计数器、查看所有数据 |
| **查看者** | 只读访问仪表盘和数据 |
### 双因素认证 (TOTP)
使用行业标准的 TOTP 保护您的账户:
- 兼容 Google Authenticator、Authy、Microsoft Authenticator
- 通过二维码轻松配置
- 启用后每次登录均需验证
- 启用/禁用时发送邮件通知
### 个人 API 密钥
每个用户可创建自己的 API 密钥用于自动化:
- 命名密钥(例如:"CI/CD 流水线"、"监控脚本")
- 可设置过期时间
- 可启用/禁用,无需删除
- 追踪最后使用时间
- 密钥继承用户角色的权限```bash
# 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
跟踪所有用户操作以满足合规性和安全性要求:
全面查看活动会话:
用通俗英语解释系统安全状态:
“该系统未发现安全问题。认证模式正常,未检测到失败。未检测到权限提升活动。整体态势:健康。”
每个风险评分包含解释原因的因素:
| 因素 | 权重 |
|---|---|
| 10次认证失败(超过基线200% - 高) | +30 |
| 检测到暴力攻击模式 | +10 |
| 访问了2个敏感文件 | +4 |
| 总计 | 44 |
系统学习您环境的“正常”行为:
| 样本数 | 状态 | 含义 |
|---|---|---|
| < 10 | 🧠 学习 | 建立初始基线 |
| 10-50 | 🧠 校准 | 完善正常模式 |
| > 50 | (隐藏) | 已完全校准 |
显示24小时风险评分历史的迷你图表 - 快速了解情况是变好还是变差。
通过邮件和/或Slack自动通知,当:
Slack警报包含丰富格式,带有颜色编码的严重性、可点击的仪表板链接以及结构化的风险因素详情。
C-Sentinel 汇总 auditd 日志以进行语义安全分析。
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)
### JSON 输出```json
{
"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"
}
}
为获得最佳效果,请为敏感文件添加审计规则:```bash
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
### 隐私功能
- **用户名哈希**:失败的登录用户名会被哈希处理(例如 `user_c4c5`),在保留模式检测能力的同时不暴露身份信息
- **无密码**:不会捕获命令行参数和敏感数据
- **仅进程名**:完整路径经过脱敏处理以保护隐私
## Web 仪表盘
C-Sentinel 包含一个 Web 仪表盘,用于实时监控多个主机。
### 功能特性
- **多用户认证** - 基于角色的访问控制
- **双因素认证** - 支持 QR 码设置的 TOTP
- **个人 API 密钥** - 按用户分配的自动化密钥
- **管理员审计日志** - 完整的操作历史
- **会话管理** - 活跃会话控制
- **安全态势总结** - 用通俗英语描述系统状态
- **风险趋势迷你图** - 24 小时可视化历史
- **可解释风险因素** - 了解评分*为何*如此
- **学习进度指示** - 基线校准进度
- **事件历史** - 带确认的时间线
- **邮件告警** - 主动通知
- **实时监控** - 所有主机一览无余
- **历史图表** - 过去 24 小时的内存和负载
- **网络视图** - 所有监听端口和连接
- **配置追踪** - 监控文件的 SHA256 校验和
### 快速设置```bash
# 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