网络防御代理

W.O.P.R.是一款基于本地LLM的自主网络防御代理,用于监控网络边界、检测异常并协调多代理系统,适用于网络安全防御和矿机管理场景。

  • by sirrand27
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 sirrand27/Joshua-AI

使用说明

     ╔══════════════════════════════════════════════════════════════╗
     ║                                                              ║
     ║  ██╗    ██╗ ██████╗ ██████╗ ██████╗                         ║
     ║  ██║    ██║██╔═══██╗██╔══██╗██╔══██╗                        ║
     ║  ██║ █╗ ██║██║   ██║██████╔╝██████╔╝                        ║
     ║  ██║███╗██║██║   ██║██╔═══╝ ██╔══██╗                        ║
     ║  ╚███╔███╔╝╚██████╔╝██║     ██║  ██║                        ║
     ║   ╚══╝╚══╝  ╚═════╝ ╚═╝     ╚═╝  ╚═╝                        ║
     ║                                                              ║
     ║     Watchpoint Observation and                               ║
     ║              Perimeter Response                              ║
     ║                                                              ║
     ║           NETWORK DEFENSE SENTRY                             ║
     ╚══════════════════════════════════════════════════════════════╝

W.O.P.R.——网络防御哨兵

自主网络防御代理 通过微调的本地LLM供电 奥拉玛.W.OP.R.作为一个集装箱化的5服务堆栈在 杰森奥林纳米8GB通过UniFi监控网络边界,检测异常,管理BitAxe矿工队,并通过Blackboard MCP界面与其他代理进行协调。

多代理框架的一部分 约书亚 (Claude Code——高级分析师,面向操作员)和 TARS开发 (Windows——开发、部署)。

美学和呼号源自年的WOPR超级计算机 战争游戏 (1983).


代理人名册

代理 身份 角色 平台
约书亚 Claude Code(Opus 4.6) 面向运营商的交互分析师 Kali Linux
W.O.P.R。 当地Ollama哨兵(joshua:cybersec) 网络防御、矿工车队、被动监控 Jetson Orin Nano 8GB
TARS开发 Windows AI代理 开发、部署、微调 Windows 11

当前部署

主要主机: NVIDIA Jetson Orin Nano 8GB(192.168.100.191)

组件 状态 详细信息
NVMe启动 三星990 PRO 1TB 免费848GB,root /dev/nvme0n1p1
Docker CE 29.2.1+Compose v5.0.2 nvidia容器工具包1.16.2
JetPack 6.2.1 aarch64,最大功率模式, jetson_clocks
交换 NVMe上的16GB swappiness=60

Docker编写堆栈

集装箱 港口 服务 健康状况
wopr-ollama 11434 Ollama LLM服务器 ollama list 检查
wopr-blackboard 9700 黑板MCP+任务控制PWA HTTP /api/dashboard
wopr-unifi-mcp 9600 UniFi网络MCP服务器 HTTP健康端点
wopr-agent -- W.O.P.R.防御哨兵循环 日志文件新鲜度
wopr-voice 9876 Piper TTS语音服务器 TCP套接字检查

所有服务使用 绑定已装载的卷 用于无需容器重建的实时代码更新。


建筑

┌─────────────────────────────────────────────────────────────────────┐
│                    JETSON ORIN NANO 8GB                              │
│                                                                     │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │              W.O.P.R. DEFENSE SENTRY LOOP                     │  │
│  │                                                               │  │
│  │  ┌──────────┐  ┌──────────────┐  ┌────────────────────────┐  │  │
│  │  │ UniFi MCP│→ │  Behavioral  │→ │ Threat Classification  │  │  │
│  │  │  :9600   │  │  Baseline    │  │ + Auto-Response        │  │  │
│  │  └──────────┘  └──────────────┘  └────────────────────────┘  │  │
│  │                                                               │  │
│  │  ┌──────────┐  ┌──────────────┐  ┌────────────────────────┐  │  │
│  │  │  Miner   │  │  Device      │  │ Anomaly Deduplication  │  │  │
│  │  │ Monitor  │  │  Knowledge   │  │ + Suppression Window   │  │  │
│  │  │ (AxeOS)  │  │  Base        │  │                        │  │  │
│  │  └──────────┘  └──────────────┘  └────────────────────────┘  │  │
│  │                                                               │  │
│  │  ┌──────────┐  ┌──────────────┐  ┌────────────────────────┐  │  │
│  │  │Correlation│  │  Incident   │  │ Threat Intelligence    │  │  │
│  │  │ Engine   │  │  Timelines   │  │ (abuse.ch feeds)       │  │  │
│  │  │(RF+Net)  │  │  (HIGH+)     │  │ C2 IPs + domains       │  │  │
│  │  └──────────┘  └──────────────┘  └────────────────────────┘  │  │
│  └───────────────────────────────────────────────────────────────┘  │
│                                                                     │
│  ┌──────────┐  ┌──────────────┐  ┌──────────┐  ┌──────────────┐   │
│  │Blackboard│  │Mission Control│  │  Ollama  │  │  Piper TTS   │   │
│  │MCP :9700 │  │  PWA (v30)   │  │  :11434  │  │    :9876     │   │
│  │(auth+MCP)│  │(WarGames UI) │  │joshua:cs │  │ (voice alert)│   │
│  └──────────┘  └──────────────┘  └──────────┘  └──────────────┘   │
│                                                                     │
│  ┌──────────────────────────────────────────────────────────────┐   │
│  │  ESP32 Marauder (via Flipper Zero USB-UART)                  │   │
│  │  RF Monitor: deauth detection, probe requests, pwnagotchi    │   │
│  └──────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────┘
         │                                     ▲
         ▼                                     │
   ┌──────────┐                          ┌──────────┐
   │  JOSHUA  │  Blackboard MCP :9700    │ TARS Dev │
   │  (Kali)  │◄────────────────────────►│(Windows) │
   └──────────┘  (Bearer token auth)     └──────────┘

特性

网络防御(主要任务)

  • 通过UniFi MCP增强人工智能入侵检测系统(30秒轮询周期)
  • 行为基线学习(设备群体、OUI跟踪、网络分配)
  • 威胁分类:严重/高/中/低/信息
  • 自动阻止关键威胁(流氓AP、未经授权的设备)
  • 具有可配置抑制窗口的异常重复数据删除
  • DEFCON等级系统(1-5),可根据威胁态势自动计算
  • 内部记录防御周期状态(无实时活动混乱)
  • 仅当子系统降级时才发布每小时诊断

跨层关联引擎

  • RF事件(Marauder)与网络事件(UniFi)的滑动窗口相关性
  • 带可配置窗口的双环缓冲区(默认120秒)
  • 邪恶双胞胎检测:deauth攻击+具有匹配SSID的流氓AP→ 关键的
  • 迪厄斯→重新连接:deauth定位客户端+重新连接到不同的AP→ HIGH
  • Probe→副手:来自MAC+同一设备的可疑探测器加入网络→ HIGH
  • 协同攻击:3+个目标或2+个来源+人口激增→ 关键的
  • 每(类型,MAC)进行5分钟冷却,以防止警报洪水
  • 递归安全:合成相关异常不会重新触发相关性检查

事件时间表

  • 高严重性事件上的自动上下文快照
  • 捕获8个上下文源:最近的异常、设备配置文件、姿态状态、射频状态、诊断、矿工车队、关联引擎、基线状态
  • 每(MAC,类型)数据消除窗口(默认10分钟)可防止时间线洪水
  • 人类可读的摘要+结构化的JSON证据发布到Blackboard
  • 上下文缓冲区记录所有异常(甚至被抑制),以实现完全的态势感知

威胁情报(abuse.ch Feed)

  • 从3个公共威胁源中提取(不需要API密钥):
    • 菲奥多追踪器:C2服务器IP(Emotet、Dridex、TrickBot、QakBot)
    • 乌尔豪斯:当前在线恶意URL→ 提取的IP和域
    • 威胁福克斯:IoC主机文件(恶意域)
  • SQLite持久性+内存 set() 用于O(1)查找(~2K个IP,~48K个域)
  • 每日提要刷新(可配置),通过数据库缓存在容器重启后仍然有效
  • 每10个防御周期,将UniFi客户端IP与威胁数据库进行交叉引用
  • 火柴生产 threat_intel_match 严重异常

射频监测(ESP32掠夺者)

  • ESP32掠夺者通过Flipper Zero USB-UART桥接器连接
  • 4相扫描周期:AP扫描→ deauth检测→ 探测请求捕获→ pwnagotchi检测
  • 具有源/目标/信道跟踪功能的实时deauth攻击检测
  • 探测请求智能——来自广播探测的设备指纹识别
  • 基于信标帧指纹的Pwnagotchi检测
  • RF事件馈入相关引擎,用于跨层复合攻击检测
  • 集成到防御状态和任务控制雷达显示器中

矿工车队监控

  • AxeOS BitAxe矿工车队管理(针对7名AxeOS矿工的HTTP API轮询)
  • 公共池API集成,适用于27人的完整车队(AxeOS+NerdMiners+cgminers)
  • 实时哈希率、温度和效率跟踪
  • 基于温度的警报(65℃警告,75℃临界重启)
  • 自动重启离线矿工 在可配置的连续故障后(默认值5)
  • 持续的哈希率下降检测:连续N次民意调查低于平均值的50%后发出警报
  • 接近零哈希率检测:当哈希率降至0.01 GH/s以下时立即发出警报(可能危及固件)
  • 池故障转移恢复验证:在停机时快照工作人员状态,验证恢复后所有工作人员重新连接
  • 矿工健康评分 (0-100,A-F级):温度(25%),哈希率稳定性(25%)、正常运行时间(20%)、共享质量(15%)、WiFi RSSI(15%)
  • 池故障转移检测和报告
  • 共享质量监控和异常检测
  • W.O.P.R.状态报告中的舰队摘要

设备知识库

  • 具有行为配置文件的持久SQLite设备数据库
  • MAC地址、OUI供应商、主机名、网络分配跟踪
  • 信任评分和历史异常相关性
  • 响应行动审计日志记录

黑板MCP集成

  • 发布安全调查结果,包括严重性、证据和补救措施
  • 向实时活动终端报告周边状态
  • 代理间消息传递(JOSHUA、TARS Dev、操作员)
  • QLoRA微调培训示例提交
  • 任务控制中心的心跳监测
  • API密钥验证 在所有 /api/* 和 /mcp 端点(承载令牌)
  • 在以下情况下禁用优雅身份验证 BLACKBOARD_API_KEY 未设置(向后兼容)

任务控制PWA(v30)

  • 9700端口提供基于浏览器的仪表板
  • WarGames视觉主题:CRT扫描线叠加、屏幕渐晕、荧光粉发光
  • API密钥身份验证覆盖 具有本地存储持久性和锁定注销功能
  • 四窗格布局:网络防御、任务板、代理通信、实时活动
  • 网络防御窗格:DEFCON级别,包括上下文原因、威胁列表、射频雷达扫描
  • 帆布雷达显示器:来自活点数据的带有AP光点的动画扫掠线
  • 采矿车队仪表板:按类型细分(axeos/cgminer/nerdminer)、最佳难度、池状态
  • 引导顺序:加载WarGames风格的打字机动画
  • DEFCON级别屏幕色调(绿色→黄色→橙子→每个威胁级别为红色)
  • WarGames——带有滴答声的真实电传动画(Web Audio API)
  • 智能滚动跟随状态(自动跟随打字,用户滚动时脱离)
  • 增量消息呈现(轮询时不进行完整的DOM重建)
  • 快速赶上页面加载速度(所有历史记录立即渲染,只有新行有动画)
  • 关键事件DEFCON警报音频
  • 具有持久布局的可调整大小的窗格(localStorage)
  • 离线功能服务人员

警报声

  • Jetson上的Piper TTS(GPU加速)
  • 发出高+严重性威胁警报
  • 语音输出中的WarGames个性

学习系统

  • 每个有异常的防御周期都会生成结构化的训练示例
  • 上下文、推理、行动、观察、结论格式
  • 批量处理并冲洗到Blackboard,用于QLoRA微调管道

仓库结构

WOPR-AI/
├── wopr/                        # W.O.P.R. Agent Modules
│   ├── agent.py                 #   Defense sentry loop + inquiry system
│   ├── config.py                #   Configuration (env var overrides)
│   ├── unifi_defense.py         #   AI-augmented UniFi defense engine
│   ├── correlation.py           #   Cross-layer RF + network correlation engine
│   ├── incident_timeline.py     #   Automated incident timeline generator
│   ├── threat_intel.py          #   Threat feed integration (abuse.ch)
│   ├── device_db.py             #   Device knowledge base (SQLite)
│   ├── miner_monitor.py         #   AxeOS BitAxe miner fleet monitor + health scoring
│   ├── blackboard.py            #   Blackboard MCP JSON-RPC client
│   ├── blackboard_monitor.py    #   Message monitoring + auto-ACK
│   ├── tools.py                 #   Tool registry + MCP service wrappers
│   ├── voice.py                 #   TTS voice client
│   ├── learning.py              #   Training example auto-generation
│   ├── memory.py                #   Sliding window conversation memory
│   ├── marauder.py              #   ESP32 Marauder RF monitor (serial)
│   ├── Dockerfile               #   Agent container image
│   └── __init__.py
│
├── blackboard/                  # Blackboard MCP Server
│   ├── server.py                #   FastMCP server (0.0.0.0:9700)
│   ├── database.py              #   SQLite backing store
│   ├── models.py                #   Data models
│   ├── training.py              #   Training data export (JSONL)
│   ├── Dockerfile               #   Server container image
│   └── pwa/                     #   Mission Control Progressive Web App
│       ├── index.html           #     Dashboard UI (v29 — WarGames theme + auth)
│       ├── sw.js                #     Service worker (v29)
│       ├── manifest.json        #     PWA manifest
│       ├── tick.wav             #     Teletype tick sample (30ms, 2.9KB)
│       ├── defcon.wav           #     DEFCON alert sound
│       ├── icon-192.png         #     App icon
│       └── icon-512.png         #     App icon (large)
│
├── unifi-mcp/                   # UniFi Network MCP Server
│   ├── server.py                #   MCP tool server (:9600)
│   ├── unifi_client.py          #   UniFi controller API client
│   ├── syslog_listener.py       #   UDP syslog receiver
│   ├── models.py                #   Data models
│   └── Dockerfile               #   Server container image
│
├── voice/                       # Voice Server
│   ├── voice_server.py          #   Piper TTS server (:9876)
│   └── Dockerfile               #   Voice container image
│
├── scripts/                     # Deployment
│   ├── deploy.sh                #   Docker Compose deployment script
│   └── jetson-first-boot.sh     #   Jetson Orin Nano first-boot setup
│
├── docker-compose.yml           # 5-service stack definition
├── .env.example                 # Environment config template
├── joshua.modelfile             # Ollama Modelfile (base personality)
├── joshua_cybersec.modelfile    # Ollama Modelfile (fine-tuned cybersec)
├── finetune_wopr.py             # QLoRA fine-tuning pipeline
├── launch-wopr.sh               # Bare-metal launch script (non-Docker)
├── local-joshua.service         # Systemd service unit (non-Docker)
├── setup.sh                     # Quick setup script
├── requirements.txt             # Python dependencies
├── test_forensics.py            # Integration tests
└── README.md

配置

环境变量在中定义 .env (参见 .env.example):

安全

变量 默认值 描述
BLACKBOARD_API_KEY (空--身份验证已禁用) 用于黑板端点的API密钥。设置为在所有设备上启用承载令牌身份验证 /api/* 和 /mcp 路线。生成方式 python3 -c "import secrets; print(secrets.token_urlsafe(32))"

设置后,所有API请求都需要 Authorization: Bearer <key> 头球PWA在首次加载时提示输入密钥并将其存储在 localStorage.WOPR从容器环境中读取它。JOSHUA的投票钩读自 ~/.blackboard_key.

网络服务

变量 默认值 描述
BLACKBOARD_URL http://blackboard:9700 黑板MCP端点
UNIFI_MCP_URL http://unifi-mcp:9600 UniFi MCP端点
OLLAMA_URL http://ollama:11434 API终点
VOICE_HOST voice 语音服务器主机名
VOICE_PORT 9876 语音服务器端口

UniFi控制器

变量 默认值 描述
UNIFI_HOST 192.168.100.1 UDM Pro IP地址
UNIFI_PORT 443 控制器HTTPS端口
UNIFI_USER -- 控制器用户名
UNIFI_PASS -- 控制器密码
UNIFI_VERIFY_SSL 0 SSL验证(0=跳过)

W.O.P.R.代理人

变量 默认值 描述
WOPR_MODEL joshua:cybersec Olama型号名称
DEVICE_DB_PATH /data/wopr/wopr_devices.db 设备数据库路径
LOG_FILE /data/logs/wopr.log 日志文件路径
JOSHUA_VOICE_ENABLED false 语音输出(专为JOSHUA代理预留)
MARAUDER_ENABLED false 启用ESP32掠夺者射频监测
MARAUDER_DEVICE /dev/ttyACM0 掠夺者串行设备(Flipper Zero USB-UART)

跨层相关性

变量 默认值 描述
WOPR_CORRELATION_ENABLED true 启用RF+网络事件关联
WOPR_CORRELATION_WINDOW 120 相关窗口(秒)
WOPR_CORRELATION_BUFFER 500 每个环形缓冲区的最大事件数(RF/网络)

事件时间表

变量 默认值 描述
WOPR_TIMELINE_ENABLED true 在HIGH+事件上启用自动事件时间表
WOPR_TIMELINE_LOOKBACK 300 上下文回溯窗口(秒)(5分钟)
WOPR_TIMELINE_DEDUP 600 每(MAC,类型)个数据消除窗口(秒)(10分钟)

威胁情报

变量 默认值 描述
WOPR_THREAT_INTEL_ENABLED true 启用abuse.ch提要集成
WOPR_THREAT_INTEL_PULL 86400 进料刷新间隔(秒)(24小时)
WOPR_THREAT_INTEL_CHECK 10 每第N个防御周期交叉引用客户端

矿工车队自动化

变量 默认值 描述
WOPR_MINER_OFFLINE_RESTART 5 自动重启前连续轮询失败
WOPR_MINER_OFFLINE_AUTO_RESTART true 启用离线矿工的自动重启
WOPR_MINER_HR_DROP_POLLS 3 警报前连续低哈希率轮询

模型

W.O.P.R.继续奔跑 约书亚:网络安全 --QLoRA微调模型,针对网络防御、威胁分类和安全分析进行了优化。基于海豚米斯特拉尔:7b-v2.8,网络安全训练数据来自真实的防御观测。

资源要求:

  • 磁盘:约4.1 GB(Q4_K_M GGUF)
  • VRAM/统一内存:~4.5 GB
  • 推断:Jetson Orin Nano(MAXN模式)每次响应约3-8s

部署

Docker Compose(Jetson推荐)

# 1. Clone the repo
git clone https://github.com/sirrand27/WOPR-AI.git
cd WOPR-AI

# 2. Configure environment
cp .env.example .env
# Edit .env with your UniFi credentials and network settings
# Generate an API key for Blackboard auth:
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
# Add to .env as BLACKBOARD_API_KEY=<generated-key>

# 3. Import the model (transfer GGUF separately — not in repo)
# scp joshua_cybersec.gguf to the Jetson, then:
docker compose up -d ollama
docker exec wopr-ollama ollama create joshua:cybersec -f /opt/wopr/joshua_cybersec.Modelfile

# 4. Start the full stack
docker compose up -d

# 5. Verify
docker compose ps
# Open http://<jetson-ip>:9700 for Mission Control

实时更新

部署代码更改时无需重建容器:

# Edit files in the repo, then push to Jetson
scp blackboard/pwa/index.html user@jetson:/opt/wopr/blackboard/pwa/
# Changes take effect immediately (bind-mounted volumes)

# For Python changes that require restart:
docker compose restart wopr-agent

裸金属(传统)

# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
ollama create joshua:cybersec -f joshua_cybersec.modelfile

# Run directly
python3 wopr/agent.py

# Or install systemd service
cp local-joshua.service ~/.config/systemd/user/
systemctl --user enable --now local-joshua

网络防御管道

UniFi MCP Poll (30s) → Threat Summary → Client Baseline → Anomaly Detection
         │                                                        │
         │    ┌───────────────────────────────┐                   │
         └───►│ Threat Intel Cross-Reference  │───────────────────┤
              │ (abuse.ch: C2 IPs + domains)  │                   │
              └───────────────────────────────┘                   │
                          ┌───────────────────────────────────────┘
                          ▼
                   Threat Classification
                          │
                          ├──► Correlation Engine (RF + Network)
                          │         Evil Twin / Deauth→Reconnect / Coordinated
                          │
          ┌───────────────┼───────────────┐
          ▼               ▼               ▼
       CRITICAL        HIGH/MED        LOW/INFO
    Auto-Block +    Blackboard +      Log Only
    Voice Alert     Finding Post
    + Timeline      + Timeline

严重程度级别

严重性 异常类型 响应
关键 流氓AP、安全VLAN上的未经授权设备、检测到邪恶双胞胎、协同攻击、威胁情报匹配 自动阻止+语音+黑板查找+事件时间线
高 未知OUI、人口激增、身份验证失败突发、IPS警报、deauth→重新连接,探测→关联 黑板查找+语音警报+事件时间线
中等 新设备(已知OUI),异常DPI模式,矿工温度警告 黑板查找
LOW 设备网络变化,矿工共享异常 黑板查找
信息 基线学习,常规事件 仅记录

许可证

仅用于授权的安全测试、CTF竞赛和教育用途。