411A/RAVELIN
GitHub: 411A/RAVELIN
一个基于 Rust 的终端式入侵防御系统,通过读取 Suricata 日志进行行为评分并自动执行 ipset 封禁,为 Linux VPS 提供低误报的实时防护。
Stars: 6 | Forks: 0
# RAVELIN
## 主要功能
- 处理来自 `/var/log/suricata/eve.json` 的 Suricata 警报和 HTTP 请求/响应元数据。
- 维持有限的内存状态:简短的 UI 日志、简短的可疑详情历史、紧凑的去重哈希以及紧凑的 HTTP 行为窗口。
- 对 IDS 警报、HTTP 错误突发、高频成功突发以及可预测的请求节奏进行评分。
- 避免封禁本地、私有、已封禁以及受信任的 IP。
- 仅在学习模式结束后,且仅在满足评分、事件计数和高可信度要求时才执行自动封禁。
## 安全模型
RAVELIN 将 Suricata 视为数据包传感器,将 Rust 引擎作为决策层。成功的稀疏流量、webhook 重试和偶发的错误会被追踪,但不会立即受到惩罚。自动封禁需要重复的证据和高置信度信号,从而降低误封合法服务(如 Cloudflare、Telegram 或其他上游提供商)的风险。
## 安装
最新的 Linux x86_64 版本:
```
curl -fsSL https://raw.githubusercontent.com/411A/RAVELIN/main/install-latest.sh | sudo sh
```
从源码构建:
```
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
sudo apt update
sudo apt install -y build-essential libsqlite3-dev suricata ipset iproute2
cargo build --release
```
## 运行
```
# 仅限 TUI;protection backbone 单独管理。
./target/release/ravelin
# 仅限 backbone;使用 systemctl/SIGTERM 停止,而不是 TUI。
sudo ./target/release/ravelin daemon
# TUI 和 backbone 在一个前台 root 进程中。
sudo ./target/release/ravelin standalone
```
实用的环境变量:
```
export RAVELIN_TRUSTED_IPS="203.0.113.10,198.51.100.20"
```
## TUI 控制
| 按键 / 命令 | 操作 |
| --- | --- |
| `q`, `Esc` | 优雅退出 TUI |
| `Tab` | 切换可疑/已封禁面板 |
| `j`, `k` | 移动选择 |
| `Enter` | 封禁选中的可疑对象或解封选中的 IP |
| `i` | 查看选中的可疑对象详情 |
| `/text` | 过滤可疑对象 |
| `:block ` | 手动封禁 IP |
| `:unblock ` | 解封 IP |
| `:whitelist ` | 在本次运行中信任该 IP |
| `:clearlogs` | 清空 TUI 日志面板 |
## 注意事项
- RAVELIN 会在本地写入 `ravelin.db`,并在启动时恢复已持久化的封禁状态。
- 安装程序的自检功能会自动配置 `ipset`、`iptables` 以及 Suricata 的日志轮转。
- 如果您的服务位于 Cloudflare 或其他代理之后,请在启用自动封禁之前配置 Suricata/反向代理日志,以确保真实的客户端 IP 可见。
## 主要功能
- 处理来自 `/var/log/suricata/eve.json` 的 Suricata 警报和 HTTP 请求/响应元数据。
- 维持有限的内存状态:简短的 UI 日志、简短的可疑详情历史、紧凑的去重哈希以及紧凑的 HTTP 行为窗口。
- 对 IDS 警报、HTTP 错误突发、高频成功突发以及可预测的请求节奏进行评分。
- 避免封禁本地、私有、已封禁以及受信任的 IP。
- 仅在学习模式结束后,且仅在满足评分、事件计数和高可信度要求时才执行自动封禁。
## 安全模型
RAVELIN 将 Suricata 视为数据包传感器,将 Rust 引擎作为决策层。成功的稀疏流量、webhook 重试和偶发的错误会被追踪,但不会立即受到惩罚。自动封禁需要重复的证据和高置信度信号,从而降低误封合法服务(如 Cloudflare、Telegram 或其他上游提供商)的风险。
## 安装
最新的 Linux x86_64 版本:
```
curl -fsSL https://raw.githubusercontent.com/411A/RAVELIN/main/install-latest.sh | sudo sh
```
从源码构建:
```
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
sudo apt update
sudo apt install -y build-essential libsqlite3-dev suricata ipset iproute2
cargo build --release
```
## 运行
```
# 仅限 TUI;protection backbone 单独管理。
./target/release/ravelin
# 仅限 backbone;使用 systemctl/SIGTERM 停止,而不是 TUI。
sudo ./target/release/ravelin daemon
# TUI 和 backbone 在一个前台 root 进程中。
sudo ./target/release/ravelin standalone
```
实用的环境变量:
```
export RAVELIN_TRUSTED_IPS="203.0.113.10,198.51.100.20"
```
## TUI 控制
| 按键 / 命令 | 操作 |
| --- | --- |
| `q`, `Esc` | 优雅退出 TUI |
| `Tab` | 切换可疑/已封禁面板 |
| `j`, `k` | 移动选择 |
| `Enter` | 封禁选中的可疑对象或解封选中的 IP |
| `i` | 查看选中的可疑对象详情 |
| `/text` | 过滤可疑对象 |
| `:block 标签:Metaprompt, PB级数据处理, Rust, Suricata, TUI, 入侵防御系统, 可视化界面, 威胁猎捕, 安全, 安全运维, 现代安全运营, 网络流量审计, 超时处理, 通知系统, 防火墙