conatus11/ramshield

GitHub: conatus11/ramshield

RamShield 是一个基于 Rust 的高性能实时限流与威胁检测引擎,通过内存级拦截管道保护 Web 应用与 API 免受 DDoS、暴力破解和恶意爬虫攻击。

Stars: 0 | Forks: 0

# RamShield - 高性能基于 Rust 的限流与威胁检测 RamShield 是一个使用 Rust 编写的稳健、并发且高度优化的安全服务,旨在保护 Web 应用程序和 API 免受各种形式的恶意流量攻击,包括 DDoS 攻击、暴力破解和数据抓取。它作为一个实时的内存检测与拦截引擎,利用先进的数据结构和异步编程来维持高吞吐量和低延迟。 ## 核心功能 - **高性能架构**:基于 Tokio 的多线程 runtime 构建,使用 DashMap 进行并发存储,并使用 `crossbeam_channel` 进行高效的线程间通信,确保在高负载下保持最佳性能。 - **可配置的检测引擎**:采用批处理优先的 pipeline,聚合连接事件,应用指数加权移动平均(EWMA)进行速率跟踪,并利用 Bloom filter 进行概率性 IP 追踪。 - **自适应威胁情报**:结合 Holt-Winters 时间序列预测和香农熵分析来检测异常并识别新出现的威胁。 - **基于 WAL 的持久化**:预写式日志确保在重启后能恢复已拦截 IP 的状态,防止丢失关键的安全决策。 - **感知资源的存储**:一个内存存储器,具有可配置的 RAM 限制(`ram_limit_mb`)和一个用于高效清除过期条目的生存时间轮。支持对 IP 记录进行有界历史记录,以防止内存无限制增长。 - **用于集成的 IPC**:一个基于 TCP 的 JSON 进程间通信服务器允许外部系统与 RamShield 交互,以报告事件、查询统计信息和管理拦截。 - **实时仪表板**:一个基于 `Axum` 的 HTTP 服务器提供实时仪表板(`/api/snapshot`、`/api/stream`),用于监控系统健康状况、流量指标和活跃拦截。该仪表板在专用线程上运行,以确保即使在峰值负载下也能保持响应能力。 - **CLI 工具**:提供命令行界面(`ramshield-cli`),便于与正在运行的 RamShield 实例进行交互,包括检查 IP 状态、手动拦截/解除拦截以及检索全局统计数据。 - **全面的测试**:包含大量的单元测试、集成测试以及基于 Python 的攻击模拟器(`attack_nexus.py`、`stress_test.py`),用于在各种攻击场景下验证功能和性能。 ## 技术细节 - **Rust 2021 Edition**:利用现代 Rust 特性实现安全性和高性能。 - **并发模型**:通过谨慎使用 `Arc`、`RwLock`、`Mutex` 和 `Atomic` 类型实现无畏并发,严格遵守 Rust 的所有权和借用规则。 - **错误处理**:使用 `thiserror` 进行库级别的错误定义,使用 `anyhow` 进行应用级别的错误处理,确保稳健且明确的错误传播。 - **可配置性**:所有主要参数均可通过 TOML 文件(`config.toml`、`config.stress.toml`)进行配置,并支持使用环境变量(例如 `RAMSHIELD_ENGINE__RAM_LIMIT_MB`)进行覆盖。 ## 项目结构 ``` rs/ ├── src/ │ ├── main.rs # Server entry point (binary) │ ├── cli.rs # CLI admin tool (binary) │ ├── lib.rs # Library root │ ├── config.rs # TOML config with validation │ ├── error.rs # RsError enum (thiserror) │ ├── engine/ # Core orchestrator (Engine struct) │ ├── detection/ # Batch-first detection pipeline │ │ ├── batch.rs # IP aggregation logic │ │ └── rate_tracker.rs # EWMA + threshold checks │ ├── storage/ # DashMap store + WAL + TTL wheel │ │ ├── blob_store.rs │ │ ├── ttl_wheel.rs │ │ └── wal.rs │ ├── metrics/ # Atomic counters + dashboard snapshot │ ├── forecasting/ # Holt-Winters + Shannon entropy │ ├── dns/ # DNS monitoring + forecaster │ │ └── forecasting/ │ ├── learning/ # Pattern learner │ ├── prediction/ # Prediction engine │ ├── dashboard/ # Axum HTTP server + SSE │ ├── ipc/ # TCP JSON protocol │ └── util/ # BoundedVecDeque, DataProcessor ├── scripts/ # Python attack simulators │ ├── attack_sim_100k.py │ ├── attack_nexus.py │ ├── attack_extreme.py │ └── stress_test.py ├── config.toml # Default configuration (512 MB, 256 shards) ├── config.stress.toml # Production-tuned configuration (8 GB, 1024 shards) └── Cargo.toml # Project dependencies and metadata ``` ## 入门指南 ### 前置条件 - Rustup:请按照 [rustup.rs](https://rustup.rs/) 上的说明进行操作 - Python 3:用于运行攻击模拟脚本。 ### 构建 导航到 `rs` 目录并构建项目: ``` cd rs cargo build --release ``` 这将在 `target/release/` 目录下生成主要的 `ramshield` 二进制文件和 `ramshield-cli`。 ### 运行 使用默认配置运行 RamShield: ``` cd rs ./target/release/ramshield ./config.toml ``` 使用生产环境调优的配置: ``` cd rs ./target/release/ramshield ./config.stress.toml ``` 使用环境变量覆盖配置值: ``` RAMSHIELD_DETECTION__RPS_THRESHOLD=500 RAMSHIELD_ENGINE__RAM_LIMIT_MB=4096 ./target/release/ramshield ./config.stress.toml ``` ### 仪表板 在浏览器中访问实时仪表板:`http://127.0.0.1:7891` 检查服务健康状况: ``` curl http://127.0.0.1:7891/healthz ``` ### CLI 用法 获取当前系统统计信息: ``` ./rs/target/release/ramshield-cli stats ``` 检查 IP 状态: ``` ./rs/target/release/ramshield-cli check 192.168.1.100 ``` 手动拦截 IP: ``` ./rs/target/release/ramshield-cli block 192.168.1.100 --reason "manual override" --ttl 3600 ``` ### 攻击模拟 使用提供的 Python 脚本来模拟流量并测试 RamShield 的性能: ``` # 运行 1 百万事件攻击 python3 rs/scripts/attack_sim_100k.py --events 1000000 --workers 64 ``` ## 贡献 欢迎贡献代码!请确保您的代码符合惯用的 Rust 编码标准,并通过 `AGENTS.md` 中定义的自愈协议。 ## 许可证 该项目采用 MIT 许可证授权。
标签:AMSI绕过, DDoS防护, Python安全, Rust, WAF, 可视化界面, 威胁检测, 网络安全, 网络流量审计, 逆向工具, 通知系统, 配置错误, 限流, 隐私保护