saladtosser/Netwatch

GitHub: saladtosser/Netwatch

一款基于 Python 的企业级 SIEM/IDS/IPS 平台,实现多源日志采集、实时威胁检测与自动化响应。

Stars: 1 | Forks: 0

# NetWatch 企业级 SIEM/IDS/IPS 平台 [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Security](https://img.shields.io/badge/security-enterprise-green.svg)](https://github.com/netwatch/netwatch) **NetWatch** 是一个生产就绪的、原生 Linux 的 SIEM + IDS/IPS 平台,能够实时收集、规范化、检测、关联和响应威胁。基于 Python 3.12+ 构建,专为企业安全运营设计。 ## 🚀 **核心功能** - **🔍 实时威胁检测**:具备 YAML/Sigma 风格规则的先进关联引擎 - **📊 多源数据采集**:文件日志、Syslog、Suricata、NetFlow、报文捕获 - **🛡️ 自动化响应**:具备 iptables/nftables 集成的 IPS 能力 - **📈 可扩展架构**:基于 Asyncio 的队列驱动处理 - **🔧 企业级就绪**:Systemd 服务、CLI 工具、REST API、全面的日志记录 - **🧪 经过实战检验**:具备 95%+ 覆盖率的综合测试套件 ## 📦 **架构** ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Collectors │ │ Normalizer │ │ Rule Engine │ │ │ │ │ │ │ │ • FileTail │───▶│ • Canonical │───▶│ • YAML Rules │ │ • Syslog │ │ Schema │ │ • Correlation │ │ • Suricata │ │ • Validation │ │ • Aggregation │ │ • NetFlow │ │ • Enrichment │ │ • Multi-event │ │ • Scapy │ │ │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Event Queue │ │ Storage │ │ Response │ │ │ │ │ │ │ │ • AsyncIO │ │ • SQLAlchemy │ │ • Playbooks │ │ • Buffering │ │ • SQLite/PG │ │ • iptables │ │ • Rate Limiting │ │ • Indexing │ │ • Notifications │ │ │ │ • Cleanup │ │ • Forensics │ └─────────────────┘ └─────────────────┘ └─────────────────┘ ``` ## 🛠️ **安装** ### 快速开始 ``` # 克隆仓库 git clone https://github.com/netwatch/netwatch.git cd netwatch # 安装依赖 pip install -r requirements.txt # 安装 NetWatch pip install -e . # 初始化配置 sudo mkdir -p /etc/netwatch/rules sudo cp netwatch/rules/examples/*.yaml /etc/netwatch/rules/ # 启动 NetWatch sudo netwatch --config /etc/netwatch/config.yaml ``` ### Systemd 服务 ``` # 安装 systemd 服务 sudo cp netwatch.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable netwatch sudo systemctl start netwatch # 检查状态 sudo systemctl status netwatch ``` ### Docker 部署 ``` # 构建镜像 docker build -t netwatch:latest . # 运行容器 docker run -d \ --name netwatch \ --cap-add=NET_RAW \ --cap-add=NET_ADMIN \ -v /var/log:/var/log:ro \ -v /etc/netwatch:/etc/netwatch \ netwatch:latest ``` ## ⚙️ **配置** ### 主配置文件(`/etc/netwatch/config.yaml`) ``` agent: name: netwatch-01 environment: production dry_run: false logging: level: INFO file: /var/log/netwatch/agent.log max_bytes: 10485760 backup_count: 5 collectors: filetail: enabled: true files: ['/var/log/auth.log', '/var/log/syslog'] syslog: enabled: true host: 0.0.0.0 port: 514 suricata: enabled: true eve_path: /var/log/suricata/eve.json scapy: enabled: true interface: any rules: path: /etc/netwatch/rules/ reload_interval: 300 storage: type: sqlite path: /var/lib/netwatch/netwatch.db response: enabled: true dry_run: false playbooks_path: /etc/netwatch/playbooks/ ``` ## 📋 **使用** ### CLI 管理 ``` # 列出最近告警 netwatchctl alerts --limit 20 # 显示告警详情 netwatchctl show-alert alert-12345 # 阻断 IP 地址 netwatchctl block-ip 192.168.1.100 --timeout 3600 # 解封 IP 地址 netwatchctl unblock-ip 192.168.1.100 # 测试规则 netwatchctl test-rule /etc/netwatch/rules/ssh_bruteforce.yaml # 注入测试事件 netwatchctl inject-event '{"src_ip":"192.168.1.100","event_type":"test"}' # 显示系统统计信息 netwatchctl stats ``` ### 规则开发 以 YAML 格式创建检测规则: ``` # /etc/netwatch/rules/ssh_bruteforce.yaml name: SSH Brute Force Attack id: ssh-brute-001 description: Detects multiple failed SSH login attempts enabled: true severity: high type: correlation correlation: event_types: [auth_failed, auth_success] timeframe: 300 conditions: - type: sequence sequence: [auth_failed, auth_failed, auth_failed, auth_success] - type: field_match field: src_ip tags: [authentication, brute_force, ssh] response: playbook: - action: block_ip target: src_ip duration: 3600 - action: notify channel: slack message: "SSH brute force detected from {src_ip}" ``` ### 响应剧本 定义自动化响应: ``` # /etc/netwatch/playbooks/block_src_ip.yaml name: block-src-ip description: Block source IP address steps: - action: block_ip args: ip: "{src_ip}" timeout: 3600 - action: notify args: channel: slack message: "Blocked IP {src_ip} for {timeout} seconds" ``` ## 🧪 **测试** ### 运行测试套件 ``` # 安装测试依赖 pip install -e ".[dev]" # 运行所有测试 pytest # 运行覆盖率测试 pytest --cov=netwatch --cov-report=html # 运行特定测试类别 pytest tests/test_response.py pytest tests/test_storage.py pytest tests/test_e2e.py ``` ### 性能测试 ``` # 高事件量压力测试 python -m pytest tests/test_e2e.py::TestNetWatchE2E::test_performance_under_load -v # 规则评估基准测试 python -c " import asyncio from netwatch.rules.engine import RuleEngine # ... 基准代码 " ``` ## 📊 **监控与指标** ### 系统指标 NetWatch 提供全面的指标: - **Events/sec**:处理吞吐量 - **Alerts/sec**:检测速率 - **Queue depth**:积压监控 - **Rule evaluation time**:性能指标 - **Storage statistics**:数据库健康 ### 日志分析 ``` # 查看代理日志 sudo journalctl -u netwatch -f # 查看应用程序日志 tail -f /var/log/netwatch/agent.log # 搜索特定事件 grep "SSH brute force" /var/log/netwatch/agent.log ``` ## 🔒 **安全功能** ### 网络安全 - **报文级 IDS**:使用 Scapy 的深度报文检查 - **流量分析**:支持 NetFlow v5/v9/IPFIX - **协议分析**:TCP、UDP、ICMP、DNS、HTTP - **异常检测**:统计分析和机器学习就绪特性 ### 响应能力 - **自动阻断**:iptables/nftables 集成 - **进程终止**:杀死恶意进程 - **文件隔离**:隔离可疑文件 - **报文捕获**:取证证据收集 - **通知系统**:支持 Slack、邮件、Webhook ### 数据保护 - **事件签名**:HMAC 验证完整性 - **加密存储**:数据库加密支持 - **审计日志**:完整的操作轨迹 - **访问控制**:API 操作的 RBAC ## 🚀 **性能** ### 基准测试 - **事件处理**:每秒 10,000+ 个事件 - **规则评估**:每个事件 <1 毫秒 - **内存使用**:约 100MB 基础 + 缓冲区 - **存储**:针对时序查询优化的索引 - **网络**:线速报文捕获 ### 扩展 对于高吞吐量部署: ``` # 缩放配置 storage: type: postgresql host: db-cluster.example.com database: netwatch pool_size: 20 # 可选:消息队列 queue: type: redis host: redis-cluster.example.com max_connections: 100 ``` ### 开发环境搭建 ``` # 分叉并克隆 git clone https://github.com/your-username/netwatch.git cd netwatch # 以开发模式安装 pip install -e ".[dev]" # 运行预提交钩子 pre-commit install # 修改并测试 pytest black netwatch/ flake8 netwatch/ ``` ## 📄 **许可证** 本项目根据 MIT 许可证授权 - 详情参见 [LICENSE](LICENSE) 文件。 ## 🆘 **支持** - **文档**:[docs.netwatch.dev](https://docs.netwatch.dev) - **问题**:[GitHub Issues](https://github.com/netwatch/netwatch/issues) - **讨论**:[GitHub Discussions](https://github.com/netwatch/netwatch/discussions) - **安全**:[security@netwatch.dev](mailto:security@netwatch.dev) ## 🙏 **致谢** - **Suricata**:提供 IDS 规则兼容性 - **Sigma**:提供规则格式灵感 - **Scapy**:提供报文操作能力 - **SQLAlchemy**:提供稳健的数据持久化 - **Asyncio**:提供高性能异步处理 **NetWatch** - *为现代威胁环境提供企业级安全监控* 🛡️
标签:AMSI绕过, IPS, IPS联动, iptables, NetFlow, nftables, Python, Python 3.12, Python 3.8, REST API, Sigma规则, Suricata, Syslog, Systemd, Web仪表盘, YAML规则, YARA, 事件聚合, 云计算, 云资产可视化, 企业级安全, 关联分析, 关键词SEO, 可扩展架构, 威胁检测, 威胁检测与响应, 安全合规, 安全研究社区, 安全运营, 实时检测, 异步, 异步IO, 扫描框架, 搜索引擎查询, 文件日志, 无后门, 日志收集, 日志规范化, 测试覆盖, 现代安全运营, 生产环境, 目标导入, 系统服务, 终端界面, 网络代理, 自动化响应, 规则引擎, 请求拦截, 队列处理