MahdiHedhli/vedetta
GitHub: MahdiHedhli/vedetta
面向家庭和小型企业的轻量级开源 SIEM 平台,通过 Core + Sensor 架构实现网络设备发现、被动 DNS 分析和社区驱动的威胁情报共享。
Stars: 0 | Forks: 0
# Vedetta
**守护您的网络。** 面向家庭和小型企业的开源安全监控。
Vedetta 是您网络上的瞭望塔 —— 它能洞悉一切并用简单的方式加以解释。只需一条命令即可安装,在 Raspberry Pi 上运行,即可获得企业级的网络可见性,而无需经历企业级的学习曲线。Vedetta 通过设备发现、被动 DNS 分析以及由社区驱动的威胁情报来监控您的网络。选择加入的用户会将匿名化遥测数据贡献给共享的威胁网络 —— 每一个 Vedetta 实例都会让其他实例变得更加智能。
## 快速开始
### 1. 启动 Vedetta Core
```
git clone https://github.com/vedetta-network/vedetta.git
cd vedetta
docker compose up -d
```
仪表板:[http://localhost:3107](http://localhost:3107)
API:[http://localhost:8080/api/v1/status](http://localhost:8080/api/v1/status)
### 2. 部署 Sensor
Sensor 是轻量级的原生二进制文件,运行在您的局域网主机上,并将设备发现数据回传给 Core。您至少需要一个 Sensor 才能开始发现设备。
**一键安装**(macOS 和 Linux —— 安装 nmap、Go,构建 Sensor 并设置持久化服务):
```
curl -fsSL https://raw.githubusercontent.com/vedetta-network/vedetta/main/sensor/deploy/install.sh | sudo bash -s -- --core http://:8080
```
或者手动安装:
```
cd sensor
go build -o vedetta-sensor ./cmd/vedetta-sensor
sudo ./vedetta-sensor --core http://:8080
```
Sensor 会自动检测本地子网,向 Core 注册,并开始以 5 分钟为周期进行扫描。请使用 `sudo` 以进行基于 ARP 的 MAC 地址和供应商发现。
有关远程部署、服务管理和多 NIC 配置,请参阅[部署 Sensor](#deploying-sensors)。
## 架构
Vedetta 采用 **Core + Sensor** 架构。Core 是瞭望塔 —— 它作为一组 Docker 容器(API、数据库、仪表板、日志收集器)运行,为您提供跨整个网络的统一视图。Sensor 是轻量级的原生二进制文件,运行在具有直接局域网访问权限的主机上,负责扫描设备、被动捕获 DNS 流量并向 Core 汇报。
```
vedetta/
├── backend/ Go API server (Core)
├── frontend/ React + Tailwind dashboard
├── sensor/ Native network sensor binary
│ └── deploy/ systemd service file
├── collector/ Fluent Bit log collection & normalization
├── telemetry/ Opt-in anonymized telemetry daemon
├── siem/ SIEM storage layer, schema, migrations
├── threat-network/ Central threat intelligence backend
├── docs/ Architecture & schema documentation
└── docker-compose.yml
```
## 服务
| 服务 | 端口 | 描述 |
|---------|------|-------------|
| Backend | 8080 | Go API —— 设备存储、扫描协调、事件摄取 |
| Frontend | 3107 | React 仪表板(可通过 `VEDETTA_FRONTEND_PORT` 配置) |
| Sensor | — | 原生二进制文件 —— 基于 nmap 的设备发现、DNS 捕获,推送到 Core |
| Collector | 5140/udp | Fluent Bit —— 摄取防火墙 syslog(DNS 现由 Sensor 直接捕获) |
| Telemetry | — | 可选守护进程 —— 将去除个人身份信息 (PII) 的事件批量发送至威胁网络 |
| Threat Network | 9090 | 集中式威胁情报后端 |
## 部署 Sensor
### 自动安装(推荐)
安装脚本会检测您的操作系统,安装依赖项(nmap、Go),从源代码构建 Sensor,并将其注册为持久化服务 —— 在 macOS 上使用 launchd,在 Linux 上使用 systemd。
```
curl -fsSL https://raw.githubusercontent.com/vedetta-network/vedetta/main/sensor/deploy/install.sh | sudo bash -s -- --core http://:8080
```
#### 安装脚本选项
| 选项 | 描述 |
|--------|-------------|
| `--core ` | **(必需)** Vedetta Core API URL |
| `--cidr ` | 覆盖自动检测到的子网 |
| `--interval ` | 扫描间隔(默认:5m) |
| `--ports` | 启用 top-100 端口扫描 |
| `--primary` | 注册为主 Sensor |
| `--no-service` | 仅安装二进制文件,跳过服务设置 |
| `--uninstall` | 移除 Sensor 二进制文件和服务 |
#### 支持的平台
- **macOS**(Intel 和 Apple Silicon)—— 通过 Homebrew 安装,通过 launchd 管理服务
- **Debian / Ubuntu / Pop!_OS / Linux Mint** —— 通过 apt 安装
- **Fedora / RHEL / Rocky / AlmaLinux** —— 通过 dnf/yum 安装
- **Alpine** —— 通过 apk 安装
- **Arch / Manjaro** —— 通过 pacman 安装
### 手动安装
#### 前置条件
Sensor 主机需要 `nmap` 和 Go 工具链(用于从源代码构建),或者您可以交叉编译并复制二进制文件。
- **macOS:** `brew install nmap`
- **Debian/Ubuntu:** `sudo apt install nmap`
- **Alpine:** `sudo apk add nmap`
#### 构建
```
cd sensor
go build -o vedetta-sensor ./cmd/vedetta-sensor
```
或者为远程 Linux 主机交叉编译:
```
GOOS=linux GOARCH=amd64 go build -o vedetta-sensor ./cmd/vedetta-sensor
# 然后 scp vedetta-sensor 到目标机器
```
#### 运行
```
sudo ./vedetta-sensor --core http://:8080
```
#### Sensor 标志
| 标志 | 默认值 | 描述 |
|------|---------|-------------|
| `--core` | `http://localhost:8080` | Vedetta Core API URL |
| `--cidr` | `auto` | 要扫描的 CIDR(`auto` 自动检测本地子网) |
| `--interval` | `5m` | 扫描周期间隔 |
| `--ports` | `false` | 包含 top-100 端口扫描 |
| `--primary` | `false` | 注册为主 Sensor |
| `--once` | `false` | 运行单个扫描周期后退出 |
| `--dns` | `true` | 启用通过数据包嗅探的 DNS 捕获 |
| `--dns-iface` | `auto` | 用于 DNS 捕获的网络接口(如未指定则自动检测) |
### 服务管理
#### macOS (launchd)
```
# 状态
sudo launchctl list | grep vedetta
# 日志
tail -f /usr/local/var/log/vedetta-sensor.log
# 停止
sudo launchctl bootout system/com.vedetta.sensor
# 启动
sudo launchctl bootstrap system /Library/LaunchDaemons/com.vedetta.sensor.plist
# 卸载
curl -fsSL https://raw.githubusercontent.com/vedetta-network/vedetta/main/sensor/deploy/install.sh | sudo bash -s -- --uninstall
```
#### Linux (systemd)
```
# 状态
sudo systemctl status vedetta-sensor
# 日志
journalctl -u vedetta-sensor -f
# 重启
sudo systemctl restart vedetta-sensor
# 卸载
curl -fsSL https://raw.githubusercontent.com/vedetta-network/vedetta/main/sensor/deploy/install.sh | sudo bash -s -- --uninstall
```
模板服务文件可在 `sensor/deploy/` 中找到。
### 多 NIC / 多网段主机
如果 Sensor 主机在多个网段上拥有 NIC(例如,同时连接到主 LAN 和 IoT VLAN),单个 Sensor 实例即可处理所有网段。Sensor 在每个周期会向 Core 查询已启用的扫描目标,并使用操作系统的路由表通过正确的接口将流量发送到各个子网。无需特殊配置 —— 只需在 Vedetta 仪表板中将每个网络添加为扫描目标,Sensor 就会扫描所有这些网络。
### 网络发现限制
设备指纹识别(MAC 地址、供应商、主机名)依赖于 ARP,这是一种二层协议,仅在本地子网上有效。如果 Sensor 扫描的是它没有直接连接的远程子网,设备将通过 IP 被发现,但不会包含 MAC 地址或供应商识别信息。
要实现对每个网段的完整指纹识别,请在每个网络上部署一个 Sensor —— 或者使用一台在所有要监控的网段上均配有 NIC 的主机。
## 硬件要求
- **Core:** Raspberry Pi 4(4 GB 内存,32 GB 存储)或更高配置,装有 Docker 和 Docker Compose
- **Sensor:** 目标网络网段上的任何 Linux/macOS 主机,并已安装 nmap
## 许可证
AGPLv3 —— 详情请参阅 [LICENSE](LICENSE)。
标签:ARP扫描, Docker, Docker Compose, EVTX分析, Go语言, Nmap, 中小企业安全, 云存储安全, 企业级安全, 威胁情报, 安全仪表盘, 安全防御评估, 家庭网络, 局域网监控, 开发者工具, 开源SIEM, 插件系统, 日志审计, 测试用例, 社区威胁情报, 程序破解, 网络可见性, 网络安全监控, 网络扫描, 网络架构, 虚拟驱动器, 被动DNS分析, 设备发现, 请求拦截, 轻量级传感器, 进程隐藏, 遥测共享, 防御绕过, 驱动开发