CR1MS0N-Operator/veil

GitHub: CR1MS0N-Operator/veil

一套生产级红队基础设施即代码项目,通过多节点 WireGuard 网状网络整合 Mythic C2、蜜罐检测、自动化威胁评分与 nftables 动态防护。

Stars: 0 | Forks: 0

# Veil **CR1MS0N Security — 进攻性安全基础设施** 由 [CR1MS0N-Operator](https://github.com/CR1MS0N-Operator) 构建与运营 | CR1MS0N Security™ ## 基础设施概览 | 节点 | 角色 | 操作系统 | WireGuard IP | LAN IP | |------|------|----|-------------|--------| | **Cerberus** | 边缘节点 — 服务、检测、蜜罐 | Arch Linux (无头模式) | `10.10.10.1` (中心) | `10.10.10.251` (静态) | | **NightForge** | 操作员工作站 — 工具、计算、开发 | Arch Linux + Niri WM | `10.10.10.3` | `10.10.10.156` (DHCP) | | **Tairn** | 攻击节点 — Mythic C2、agent 暂存、实验靶机 | NixOS 24.11 (声明式) | `10.10.10.4` | `10.10.10.230` (libvirt NAT) | | **Hermes** | 重定向器 VM — C2 出口、流量转发、即用即抛 | Alpine Linux 3.23.3 | `10.10.10.5` | `10.10.10.200` (libvirt NAT) | | **iPhone** | 移动端 WireGuard 客户端 | iOS | `10.10.10.2` | — | 所有节点间的通信均完全通过 WireGuard 中心辐射型网状网络运行。没有任何节点可以直接从 WAN 访问。 ## 架构 ``` Internet │ ┌──────▼──────┐ │ Cerberus │ │ 10.10.10.1 │ │ 10.10.10.x │ │ │ │ Cowrie │ │ Suricata │ │ Pi-hole │ │ Caddy TLS │ │ Gitea │ │ Vaultwarden │ │ Netdata │ │ Homepage │ └──────┬──────┘ │ WireGuard mesh (10.10.10.0/24) │ ┌────────────┼────────────────┐ │ │ │ │ 10.10.10.3 │ │ │ 10.10.10.4 │ │ 10.10.10.x │ │ │ 10.10.10.x │ │ │ │ │ (libvirt NAT, │ │ Operator WS │ │ │ NightForge-local) │ │ Niri WM │ │ │ │ │ Offensive tooling │ │ │ Mythic C2 │ │ Podman profiles │ │ │ Poseidon agent │ │ Neovim / tmux │ │ │ HTTP C2 profile │ │ Ollama (local AI) │ │ │ Lab target VMs │ │ │ │ │ NixOS declarative │ │ libvirt host │ │ └────────────────────────┘ │ ┌────────────────┴──┴────┐ │ │ Hermes │ │ │ 10.10.10.5 │ │ │ 10.10.10.200 │ │ │ (libvirt NAT, │ │ │ NightForge-local) │ │ │ │ │ │ Alpine Linux │ │ │ Nginx redirector │ │ │ C2 egress proxy │ │ │ WireGuard only access │ │ │ Disposable — rebuild │ │ │ from Terraform+XML │ │ └────────────────────────┘ │ │ └───────────────────┘ ``` **WireGuard 拓扑:** 通过 Cerberus 构成的中心辐射型架构。Cerberus 是始终在线的边缘节点和网状网络中心。NightForge、Tairn 和 Hermes 专门通过 Cerberus 进行对等连接。节点间的跨网状网络通信启用了发夹路由。NightForge 还在 libvirt NAT (`10.10.10.0/24`) 下托管了两个 VM(Tairn、Hermes),可通过网状网络上的 WireGuard IP 访问。 ## 拓扑 Veil 网络跨越了两个由 WireGuard 桥接的物理子网: ### 物理网络 (10.10.10.0/24) ``` Internet ─── Home Router ─── LAN (10.10.10.0/24) │ ┌──────────────┴──────────────┐ │ │ Cerberus (10.10.10.251) NightForge (10.10.10.156) Edge node, always-on Operator workstation ``` ### 虚拟网络 (10.10.11.0/24 — NightForge 上的 libvirt NAT) ``` NightForge ┌──────────────────┐ │ virbr0 bridge │ │ 10.10.11.1 │ └──┬───────────┬───┘ │ │ Tairn VM Hermes VM 10.10.11.230 10.10.11.200 NixOS Alpine ``` ### WireGuard 网状网络 (10.10.10.0/24) ``` Cerberus (10.10.10.1) ─── hub, always-on │ │ │ │ │ └── Hermes (10.10.10.5) — C2 redirector │ │ │ └──────── Tairn (10.10.10.4) — Mythic C2 │ └────────────── NightForge (10.10.10.3) — operator workstation iPhone (10.10.10.2) — mobile client (connects to Cerberus only) ``` ### 网络规则 - 所有分支到分支的流量均通过 Cerberus 路由(发夹转发) - Tairn 仅向 Cerberus 发起连接 — Cerberus 上没有为 Tairn 配置 endpoint - Cerberus 无法访问 `10.10.11.x` — libvirt NAT 仅限于 NightForge 本地 - Hermes 和 Tairn 只能通过 WireGuard 访问;没有直接的 LAN 路径 - NightForge 的 SSH 配置使用 WireGuard IP(`10.10.10.4`、`10.10.10.5`),而不是 libvirt NAT IP ## 网络流量 流量如何从每个节点的角度在 Veil 网络中进行路由。 ### 操作员到 C2 (NightForge → Tairn) 10.10.10.3 10.10.10.1 10.10.10.4 │ nftables forward: iif "wg0" oif "wg0" accept rp_filter=0 on wg0 ``` The Mythic C2 web UI (`https://10.10.10.4:7443`) is accessed exclusively over WireGuard. Tairn's DOCKER-USER iptables chain restricts port 7443 to `10.10.10.0/24`. ### C2 Agent 回调 (Internet → Hermes → Tairn) WAN 10.10.10.1 10.10.11.1 port forward │ Hermes (10.10.10.5) Nginx reverse proxy │ Tairn (10.10.10.4) Mythic C2 (7443) ``` Hermes 充当 C2 重定向器。Hermes 上的 Nginx 终结面向外部的 TLS,并将流量转发到 Tairn 上的 Mythic。Hermes 是即用即抛的 — 根据需要通过 Terraform + libvirt XML 进行重建。这提供了一层操作安全机制:重定向器在可配置的时间间隔后或在出现失陷指标后被烧毁并替换。 ### 互联网威胁追踪 (Cerberus) ``` WAN ─── Cerberus (enp0s21f0u2c2) │ ├── Suricata (af-packet, all traffic) → fast.log → Shield scoring → nftables blackhole │ └── Cowrie (port 22, fake SSH) → cowrie.json → Shield scoring → nftables blackhole Shield scoring: suricata_exploit → +3 | cowrie_login → +4 suricata_c2 → +5 | cowrie_command → +3 suricata_scan → +1 | cowrie_download → +5 suricata_alert → +2 | Block threshold: ≥ 4 → 1hr blackhole ``` Shield 评分引擎同时读取 Suricata 警报和 Cowrie 事件。任何累计得分超过 4 的源 IP 都将被添加到 nftables 黑洞集合中,TTL 为 1 小时。被封锁的 IP 也会被加入 `/var/nightforge/scan-queue.txt` 队列,以便进行可选的后续 Nuclei 侦察。 ### 服务访问 (NightForge → Cerberus .lan services) ``` NightForge ──wg0── Cerberus:8489 (Caddy reverse proxy) │ ┌────────┴────────┐ │ │ git.lan:8486 dash.lan:8282 gitea.lan:3000 vault.lan:8081 search.lan:8888 pihole.lan:8083 ``` 所有 `.lan` 服务均通过 Caddy 本地 CA 经由 TLS 提供服务。NightForge 安装了 CA 根证书。WireGuard 发夹路由加上 Pi-hole 的 `.lan` DNS 解析,使得服务可以通过域名从任何网状节点访问。 ## 节点详情 ### Cerberus — 边缘节点 运行无头模式 Arch Linux 的 Chromebook。作为边界传感器平台和家庭实验室服务枢纽。所有服务均作为无 root 权限的 Podman Quadlets 在 systemd 下运行。 **检测栈:** - **Cowrie 2.9.13** — 端口 22 上的 SSH 蜜罐。捕获攻击者的 TTP、凭据和会话数据。 - **Suricata 8.0.3** — 具有实时规则更新的网络 IDS。 - **Pi-hole** — 所有节点的 DNS 沉洞 + `.lan` 域名解析。 **服务:** - **Gitea** — 自托管的 Git 服务器(所有 Veil 仓库的主要远程仓库) - **Vaultwarden** — 自托管的密码管理器 - **Caddy** — 为所有 `.lan` 域名提供自动本地 CA TLS 的反向代理 - **Netdata** — 实时性能监控 - **Homepage** — NOC 仪表板 **防火墙:** nftables。通过 `iif "wg0" oif "wg0" accept` 实现 WireGuard 发夹路由。wg0 接口上设置 rp_filter=0。用于封锁 IP 的动态黑洞集合(1小时 TTL)。 ### NightForge — 操作员工作站 主要操作员环境。Arch Linux 搭配 Niri Wayland 合成器。所有进攻性工具、开发和基础设施管理均在此运行。 - **硬件:** i3-10105F, 32GB RAM, GTX 1650 - **合成器:** Niri (Wayland, 滚动平铺布局) - **容器运行时:** Podman rootless (ad, re, web, toolbox 配置) - **编辑器:** 搭配 LSP 的 Neovim - **Shell:** Zsh + Starship - **VM 管理:** libvirt (Tairn、Hermes 作为 NAT VM 托管在此) - **本地 AI:** Ollama (`qwen2.5:14b`,用于 RAG 流水线) - **仪表板:** beszel agent (CR1MS0N-ops-dashboard) 通过端口 8489 汇报至 Cerberus 有关完整的工作站配置和操作员框架,请参见 [nightforge](https://github.com/CR1MS0N-Operator/nightforge)。 ### Tairn — 攻击节点 通过 libvirt NAT 托管在 NightForge 上的 NixOS 24.11 虚拟机。声明式配置 — 整个系统状态在 `configuration.nix` 中进行版本控制。专门用于进攻性操作和课程实验工作。 - **C2 框架:** Mythic (基于 Docker) - **主要 agent:** Poseidon (Go, Linux) - **C2 profile:** HTTP C2 - **行动:** Operation CR1MS0N - **访问:** 仅限 WireGuard (`10.10.10.4`)。Mythic UI 通过 DOCKER-USER iptables 链锁定在网状网络内 - **课程:** 经由 CyberWarfare Labs 获取认证红队分析师 (CRTA)、认证红队基础设施开发者 (CRT-ID) — 所有技术实践均附带 MITRE ATT&CK 映射文档 ### Hermes — 重定向器 VM 通过 libvirt NAT 托管在 NightForge 上的 Alpine Linux 3.23.3 虚拟机。充当 C2 出口重定向器和流量转发层。 - **角色:** C2 重定向器 — 终结面向外部的 TLS,代理至 Tairn 上的 Mythic - **操作系统:** Alpine Linux (极简,约 150MB 占用) - **代理:** Nginx 反向代理 (TLS 终结 + stream 转发) - **网络:** Nginx 监听 443 端口,上游指向 `10.10.10.4:7443` - **即用即抛:** 完整的 VM 状态记录在 libvirt XML + Terraform 配置中;2 分钟内即可重建 - **生命周期:** 静态配置位于 `/etc/nginx/nginx.conf`、`/etc/wireguard/wg0.conf`、`/etc/network/interfaces` - **访问:** 仅限 WireGuard (`10.10.10.5`)。无直接的 LAN 路径。 - **监控:** Netdata agent 汇报至 Cerberus ## 安全态势 | 控制措施 | 实现方式 | |---------|---------------| | 网络隔离 | WireGuard 网状网络 — 无节点可直接从 WAN 访问 | | C2 访问控制 | iptables DOCKER-USER — 7443 端口仅限 `10.10.10.0/24` 访问 | | C2 重定向器 | Hermes — 位于 WAN 和 Mythic 之间的即用即抛型 Alpine Nginx 代理 | | 流向隔离 | 中心辐射型网状网络;所有分支到分支的流量均通过 Cerberus 路由 | | 容器隔离 | Rootless Podman Quadlets (Cerberus),Docker (Tairn — Mythic 要求) | | 虚拟机隔离 | 用于 AD 实验环境的 Air-gapped libvirt 网络 (`virbr1`, `10.10.10.0/24`) | | 凭据管理 | Vaultwarden + `/etc/containers/secrets/` 用于 Quadlet 环境变量注入 | | DNS 安全 | Pi-hole (`.lan` 解析 + 广告/追踪器沉洞) | | TLS | Caddy 本地 CA (所有 `.lan` 服务),Nginx 自签名 (Hermes 重定向器) | | SSH 加固 | 仅限密钥认证,禁止 root 密码登录,22 端口为 Cowrie 蜜罐 | | 入侵检测 | Suricata 8.0.3 (网络 IDS),Cowrie 2.9.13 (SSH 蜜罐) | | 自动化封锁 | NightForge Shield — 评估威胁,通过 nftables 将 IP 拉黑 1 小时 | | 声明式基础设施 | Tairn 的整个操作系统状态都在 `configuration.nix` 中 — 可从零开始完全复现 | | 防火墙默认拒绝 | nftables input 策略为 DROP;仅有显式的允许规则 | | 审计日志 | Cerberus 上的 auditd,Suricata EVE JSON,Cowrie JSON 会话日志 | | 远程访问 | Tailscale (需认证的覆盖网络),无端口转发 | | libvirt 后端 | nftables — 与主机防火墙保持一致,避免 iptables/nftables 不匹配 | | 网络分区 | Tairn 和 NightForge 没有直接的 WireGuard endpoint — Cerberus 会动态发现它们 | ## 监控 ### NOC 仪表板 主要的运营仪表板在 Cerberus 的 `dash.lan:8282` 上运行。它提供对以下内容的实时可见性: - **威胁情报:** Suricata 警报计数、Cowrie 会话统计、Shield 黑洞拦截 - **节点指标:** Cerberus 的 CPU、内存(通过 Netdata),以及 Tairn 和 Hermes(通过 beszel agents) - **网络健康:** 带有握手时间戳的 WireGuard 对等状态;超过 300 秒未响应的对等方将被标记 - **服务链接:** 带有实时小部件的 Gitea、Vaultwarden、Pi-hole、SearXNG NOC 数据来源于: - `~/noc-status/*.json` — 由 systemd 定时器 `noc-update.timer` 每 5 分钟刷新一次 - `~/scripts/noc/` 中的 NOC 脚本:`wg-status.sh`、`cowrie-status.sh`、`suricata-status.sh`、`nftables-status.sh` - 数据由 Caddy 在 8484 端口提供(`/noc-status/` 文件服务器) ### CR1MS0N-ops-dashboard | 服务 | 端口 | Endpoint | ||------|----------| | CR1MS0N-ops-dashboard | 9090 | 经由 Cerberus Caddy 代理 `:8489` 的 `10.10.10.3:9090` | 它提供: - 多节点系统指标(CPU、RAM、磁盘、正常运行时间) - agent 状态(Cerberus、NightForge、Tairn、Hermes 上的 beszel agents) - 历史性能图表 ### NOC 脚本 所有脚本均位于 `edge-node/scripts/noc/`: | 脚本 | 输出 | 描述 | |--------|--------|-------------| | `wg-status.sh` | `wg.json` | WireGuard 对等健康状态 — 握手时间、每个对等方的状态 | | `cowrie-status.sh` | `cowrie.json` | 蜜罐会话统计 — 连接数、独立 IP 数、最集中的攻击 IP | | `suricata-status.sh` | `suricata.json` | IDS 警报统计 — 高危/严重警报、持续攻击源 | | `nftables-status.sh` | `nftables.json` | 防火墙统计 — 黑洞丢弃、入站丢弃 | | `noc-update.sh` | 以上所有 | 编排器 — 运行所有状态脚本,写入 `~/noc-status/` | ## 部署 Veil 采用混合部署模型,结合了声明式配置、基础设施即代码以及针对受限硬件的手动设置。 ### 节点部署矩阵 | 节点 | 方法 | 工具 | 配置方式 | |------|--------|---------|-------------| | Cerberus | 手动 + Podman Quadlets | systemd, nftables, Caddy | Chromebook (ARM) — IaC 支持有限 | | NightForge | 手动 + dotfiles | Niri, Podman, Neovim, Zsh | 桌面端,详见 [nightforge](https://github.com/CR1MS0N-Operator/nightforge) | | Tairn | 声明式 | NixOS `configuration.nix` | `nixos-rebuild switch` — 完整 OS 状态在 VCS 中 | | Hermes | IaC | Terraform + libvirt XML | `terraform apply` + Alpine 安装 | ### Terraform + Ansible 流水线 (Hermes) Hermes 重定向器 VM 是唯一具有完整 IaC 覆盖的节点: ``` veil/ ├── terraform/ │ ├── main.tf # libvirt provider config, VM definition │ ├── variables.tf # CPU, RAM, disk sizing │ └── outputs.tf # VM IP, SSH config ├── ansible/ │ ├── playbooks/ │ │ └── hermes.yml # Alpine setup: WireGuard, Nginx, Netdata │ └── roles/ │ └── hermes/ │ ├── tasks/ │ │ ├── main.yml │ │ ├── wireguard.yml │ │ └── nginx.yml │ └── templates/ │ ├── wg0.conf.j2 │ └── nginx.conf.j2 └── configs/ └── libvirt/ ├── tairn.xml └── hermes.xml ``` **部署序列:** ``` # 1. 配置 VM cd veil/terraform terraform init terraform plan terraform apply # 2. 安装 Alpine (手动挂载 ISO + 通过 virt-viewer 运行 setup-alpine) # 3. 配置 redirector cd veil/ansible ansible-playbook playbooks/hermes.yml -i inventories/hermes.ini ``` ### NixOS 部署 (Tairn) ``` # 应用配置更改 ssh tairn # 10.10.10.4 via WireGuard sudo nixos-rebuild switch --show-trace # 配置文件位于 /etc/nixos/configuration.nix # 已提交至 veil/configs/nixos/ ``` ### Cerberus Quadlet 部署 ``` # 参见下方的 Quickstart 部分 # Quadlet 文件位于 edge-node/containers/ # nftables 配置位于 configs/nftables/cerberus.nft ``` ### Hermes 即用即抛生命周期 ``` 1. terraform apply → VM provisioned on NightForge libvirt 2. Alpine setup-alpine → OS installed 3. ansible-playbook → Nginx + WireGuard + Netdata configured 4. wg-quick up → Connects to Veil mesh (10.10.10.5) 5. ── active ── → Redirecting C2 traffic for Tairn 6. terraform destroy → VM destroyed, redirector burned 7. Return to step 1 → New VM, new SSH keys, new WireGuard keys ``` 这种烧毁并重建的周期是一种操作安全控制措施:即使重定向器被攻破,它也不包含任何持久化机密,并且可以在 5 分钟内从零开始替换。 ## 仓库结构 ``` veil/ ├── README.md ├── configs/ │ ├── sysctl/ │ │ └── 99-wireguard.conf # Kernel tuning for WireGuard hairpin │ └── nftables/ │ └── cerberus.nft # nftables ruleset ├── edge-node/ │ ├── containers/ # Podman Quadlet unit files │ ├── systemd/ # User systemd units │ └── scripts/ # Shield + NOC automation scripts ├── dotfiles/ # Shared shell/prompt configs (Starship) ├── terraform/ # Hermes redirector IaC ├── ansible/ # Hermes redirector Ansible playbooks └── docs/ ├── architecture.md ├── wireguard-mesh.md ├── cerberus-setup.md ├── tairn-setup.md ├── services.md # Full service reference ├── ops.md # Operations runbook ├── troubleshooting.md # Issue catalog ├── known-gaps.md # Active and resolved gaps └── infra.md # Node registry, key paths, port map ``` ## 快速开始 — Cerberus 边缘节点 ``` # 1. 应用 sysctl 设置 sudo cp configs/sysctl/99-wireguard.conf /etc/sysctl.d/ sudo sysctl -p /etc/sysctl.d/99-wireguard.conf # 2. 创建数据目录 sudo mkdir -p /var/nightforge/{cowrie-logs,cowrie-lib,scan-queue} sudo chown -R $USER:$USER /var/nightforge/ sudo chown -R 100998:100998 /var/nightforge/cowrie-logs /var/nightforge/cowrie-lib # 3. 部署 Cowrie honeypot cp edge-node/containers/nightforge-cowrie.container ~/.config/containers/systemd/ systemctl --user daemon-reload systemctl --user start nightforge-cowrie.service # 4. 启用 linger loginctl enable-linger $USER ``` ## 运维手册 维护 Veil 网状网络和 Cerberus 边缘节点的常见操作任务。 ### 健康检查 ``` # 节点整体健康状况 systemctl --user status nightforge-cowrie nightforge-shield sudo systemctl status suricata container-pihole container-gitea container-vaultwarden # WireGuard mesh 健康状况 sudo wg show sudo nft list set inet filter blackhole # 扫描队列深度 wc -l /var/nightforge/scan-queue.txt tail -5 /var/nightforge/scan-queue.txt ``` ### 服务重启 ``` # NightForge Shield (scoring engine) systemctl --user restart nightforge-shield journalctl --user -u nightforge-shield -f --output=cat # Cowrie honeypot systemctl --user restart nightforge-cowrie journalctl --user -u nightforge-cowrie -n 50 # Suricata IDS sudo systemctl restart suricata sudo journalctl -u suricata -n 30 # 手动服务 (直到 Quadlet 迁移完成) podman restart homepage podman restart vaultwarden ``` ### WireGuard 管理 ``` # 查看 mesh 状态 sudo wg show # 向 mesh 添加新 peer # 1. 在新节点上生成密钥: wg genkey | tee privatekey | wg pubkey > publickey # 2. 将 peer 添加到 Cerberus wg0.conf: # [Peer] # PublicKey = # AllowedIPs = 10.10.10.x/32 # 3. 在 Cerberus 上重启 WireGuard: sudo systemctl restart wg-quick@wg0 # 4. 配置新节点与 Cerberus 建立 peer 连接 # 强制重新握手 (排查过时 peer) sudo wg set wg0 peer endpoint : # 配置更改后重新加载 sudo systemctl restart wg-quick@wg0 ``` ### 防火墙操作 ``` # 查看完整 ruleset sudo nft list ruleset # 查看 blackhole set (当前被封禁的 IP) sudo nft list set inet filter blackhole # 手动封禁 IP (1小时) sudo nft add element inet filter blackhole '{ 1.2.3.4 timeout 1h }' # 手动解封 IP sudo nft delete element inet filter blackhole '{ 1.2.3.4 }' # 从配置重新加载 nftables sudo systemctl restart nftables ``` ### NOC 仪表板 ``` # 查看 NOC 状态文件 cat ~/noc-status/wg.json cat ~/noc-status/cowrie.json cat ~/noc-status/suricata.json cat ~/noc-status/nftables.json # 强制 NOC 更新 systemctl --user start noc-update.service # NOC 更新定时器每 5 分钟运行一次 systemctl --user status noc-update.timer # 监控 WireGuard peer 健康状况 watch -n 5 sudo wg show ``` ### 备份程序 ``` # 自动化: 每日 02:00 UTC 通过 cron 运行 # 备份 Vaultwarden SQLite → ~/backups/vaultwarden/ → Gitea repo # 手动备份 bash ~/backup-script.sh cat ~/backup.log # 验证备份 repo 最新 commit curl -s http://git.lan/foreverlx/backups | grep "commit" ``` ### 维护 ``` # 每周自动维护 (周日 03:00 UTC) # - pacman -Syu (全系统更新) # - 记录日志至 /var/log/security-updates.log # 手动维护 bash ~/scripts/maintenance.sh # - Suricata 规则更新 # - 日志轮转 (移除超过 3 天的 cowrie.json 条目) # - Vaultwarden SQLite 备份 # - Homepage 配置备份 # - Arch 包缓存预下载 ``` ### 重启程序 Cerberus 重启后,请按顺序验证以下内容: ``` # 1. 核心服务 systemctl --user status nightforge-cowrie nightforge-shield sudo systemctl status suricata container-pihole container-gitea container-vaultwarden # 2. 手动启动 (直到 Quadlet 迁移完成) podman start homepage podman start vaultwarden # 3. Firewall 正常运行 sudo nft list ruleset | grep policy sudo nft list set inet filter blackhole # 4. Cowrie 位于端口 22 ss -tlnp | grep :22 # 5. WireGuard mesh sudo wg show ``` ### 故障排除 ``` # Cowrie 未记录日志 ls -la /var/nightforge/cowrie-logs/ # should be owned by UID 100998 sudo chown -R 100998:100998 /var/nightforge/cowrie-logs /var/nightforge/cowrie-lib # Shield 未封禁 systemctl --user status nightforge-shield sudo nft list sets | grep blackhole # Vaultwarden 无法访问 podman ps | grep vault ss -tlnp | grep 8081 sudo nft list ruleset | grep 8081 # 重启后用户 Quadlets 丢失 systemctl --user daemon-reload ``` 有关包含根本原因和解决方法的完整问题目录,请参见 `docs/troubleshooting.md`。 ## 已知缺陷 Veil 基础设施中追踪的活跃缺陷。有关包含已解决缺陷在内的完整详细信息,请参见 `docs/known-gaps.md`。 ### 活跃缺陷 | 缺陷 | 严重性 | 阶段 | 工作量 | |-----|----------|-------|--------| | Netdata 未监控容器(未挂载 Podman socket) | 中等 | D1 | 低 | | NightForge 未集成到集中式监控中 | 中等 | N1 | 中等 | | Homepage 的 Netdata 服务小部件显示相同的数据 | 低 | D1 | 低 | | SearXNG 自动补全功能失效 | 低 | D1 | 低 | | 扫描队列没有 worker 消费该队列 | 低 | 4 | 高 | | 无网络隔离 (VLANs) — 扁平化的 10.10.20.0/24 | 改进项 | 6 | 非常高 | ### 缺陷详情 **缺陷 1 — Homepage 的 Netdata 服务小部件显示相同的数据** Suricata、Cowrie 和 Netdata 卡片全都显示相同的 Netdata CPU 图表。修复:分配不同的指标 — Suricata → `suricata.alerts`,Cowrie → container cgroup 图表,Netdata → `system.cpu`。 **缺陷 2 — SearXNG 自动补全功能失效** Homepage 搜索的 `suggestionUrl` 指向 SearXNG 自动补全器,但建议未显示。可能是 CORS 或 endpoint 格式问题。 **缺陷 3 — Netdata 未监控容器** Netdata 能看到主机指标,但容器级别的指标不可见。Podman socket 未挂载到 Netdata 容器中。修复:在 Netdata Quadlet 中添加 `Volume=/run/user/1000/podman/podman.sock:/var/run/docker.sock:ro`。 **缺陷 4 — 无扫描队列 Worker** 被封锁的 IP 在扫描队列中积累,但没有 worker 执行 Nuclei 侦察。计划:每 5 分钟运行一次 `recon-worker.sh` 的 `nightforge-recon.timer`。 **缺陷 5 — NightForge 未集成到集中式监控中** NightForge 已连接到网状网络 (10.10.10.3),但未向 NOC 仪表板汇报。计划:Netdata agent、Homepage 服务卡片、集中式日志聚合。 **缺陷 6 — 无网络隔离 (VLANs)** 网络是扁平化的 10.10.20.0/24。建议的分区:DMZ (蜜罐)、Ops (服务)、Red/C2 (NightForge, Mythic)、Management (OOB)。前提条件:管理型交换机、pfSense/OPNsense 路由器。 ### 已解决缺陷 以下缺陷在阶段 S1 (服务清理) 期间已关闭: - Pi-hole 密码明文存储 → 使用带有凭据文件的系统 Quadlet - Vaultwarden 服务冲突 → 在端口 8081 上使用单用户 Quadlet - 无 TLS 前端 → 部署带有本地 CA 的 Caddy - Homepage 无自启动 → 用户 Quadlet + 启用 linger - WireGuard 重启持久化 → 启用 wg-quick@wg0 - WireGuard 网状网络不完整 → 添加 Tairn,解决发夹路由问题 - 手写的 Caddy/Gitea/Vaultwarden/Pi-hole 单元 → 迁移至 Quadlet - NightForge DNS 单点故障 → Cloudflare 后备 DNS - Cerberus 主机名 b-k3s → 重命名为 cerberus - Tairn/Mythic C2 部署 → 部署 NixOS + Mythic + Poseidon - 子网迁移 → ISP 变更后将所有配置更新至 10.10.20.0/24 ## 免责声明 所有工具均部署在由作者拥有和运营的基础设施上,用于授权的安全研究和作品集开发。仅限授权使用。 **作者:** Darrius Grate (CR1MS0N-Operator) | CR1MS0N Security™ **许可证:** MIT
标签:IP 地址批量处理, Metaprompt, Mythic C2, NixOS, WireGuard组网, 流量重定向, 红队基础设施, 网络信息收集, 请求拦截