Nicholas-Arcari/RaspberryPi
GitHub: Nicholas-Arcari/RaspberryPi
这是一个基于树莓派5构建的家庭安全运营实验室项目,集成了NAS存储、Wazuh SIEM监控、Cowrie蜜罐、WireGuard VPN及Pi-hole网络过滤等全栈SOC基础设施。
Stars: 2 | Forks: 0
# Raspberry Pi 5 - 网络安全家庭实验室与 NAS
本仓库记录了将 Raspberry Pi 5 配置为家庭安全基础设施的完整体验——从首次开机到最终部署。这不是一份从 StackOverflow 复制来的命令集合:每一部分都记录了做出每个选择的**原因**、遇到的问题以及采取的解决方案。
基础操作系统是 **OpenMediaVault 7**(基于 Debian),因其原生的 NAS 管理功能而入选。所有附加服务(SIEM、VPN、Honeypot、DNS Blocker)都运行在 **Docker 容器**中,确保了隔离性、可移植性,并且可以在不触碰主机系统的情况下销毁和重建服务。
## 目录索引
| # | 章节 | 描述 |
|---|---------|-------------|
| 1 | [First Setup](./First%20Setup/) | 安装操作系统、从 NVMe 启动、SSH 和 bootloader 初始配置 |
| 2 | [NAS (Network Attached Storage)](./NAS%20(Network%20Attached%20Storage)/) | OpenMediaVault 7、文件系统、SMB/NFS 共享、Plex Media Server |
| 3 | [Docker & Portainer](./Docker%20%26%20Portainer/) | 在 OMV 上安装 Docker、Portainer 作为管理平面 |
| 4 | [Secure your RaspberryPi](./Secure%20your%20RaspberryPi/) | SSH 加固、Fail2ban、UFW、自动更新、Wazuh FIM |
| 5 | [VLAN (Virtual LAN)](./VLAN%20(Virtual%20LAN)/) | 使用 IPVLAN 和 802.1Q VLAN 标签进行网络分段 |
| 6 | [VPN (Virtual Private Network)](./VPN%20(Virtual%20Private%20Network)/) | 配有 wg-easy 的 WireGuard 服务器、DDNS、Double NAT/CGNAT 管理 |
| 7 | [ADS Blocker](./ADS%20Blocker/) | 运行在 MacVLAN 网络上的 Pi-hole Docker 容器、DNS 和路由器配置 |
| 8 | [Honeypot](./Honeypot/) | 集成 Wazuh SIEM 的 Cowrie SSH/Telnet 蜜罐 |
| 9 | [SOC Analyst](./SOC%20Analyst/) | SOC 分析师的角色和工具,包含 Wazuh SIEM/XDR 子章节 |
| 10 | [Security Assessment & Hardening](./Security%20Assessment%20%26%20Hardening/) | 针对自己实验室的红队演练:Nmap、Hydra、风险分析、防火墙调优 |
### 跨章节资源
| 文档 | 内容 |
|---|---|
| [网络拓扑](docs/topologia-rete.md) | 包含所有组件、IP、端口和数据流的完整 ASCII 图表 |
| [快速参考卡](docs/quick-reference.md) | 地址、端口、默认凭据、紧急命令 |
| [安装后检查清单](docs/checklist-post-installazione.md) | 针对每个组件的 20+ 项检查,包含命令和预期结果 |
## 项目架构
```
Raspberry Pi 5 (8GB RAM) - Raspberry Pi OS Lite 64-bit (Bookworm)
|
|-- Hardware & Boot
| |-- Boot diretto da NVMe SSD (Patriot P320 256GB PCIe Gen 3x4)
| |-- Bootloader EEPROM aggiornato all'ultima versione stable
| |-- MicroSD mantenuta solo per recovery/emergenza
| +-- Alimentazione: alimentatore ufficiale 27W USB-C (5.1V / 5A)
|
|-- Sistema Base: OpenMediaVault 7
| |-- Gestione storage (NVMe, filesystem EXT4)
| |-- Condivisioni di rete: SMB/CIFS + NFS
| |-- Gestione utenti e permessi ACL
| |-- Monitoraggio SMART dei dischi
| +-- Web UI su porta 80 (IP locale)
|
|-- Container Platform: Docker + Portainer
| |-- Docker Engine (docker.io da repo Debian, non CE)
| |-- Docker Root Directory su NVMe (/var/lib/docker)
| |-- Portainer CE su porta 9443 (HTTPS)
| +-- Reti Docker segmentate:
| |-- bridge (default, per servizi interni)
| |-- macvlan (Pi-hole - IP dedicato su LAN)
| +-- ipvlan_150 (VLAN 150 per isolamento avanzato)
|
|-- Security Stack
| |-- Wazuh SIEM All-in-One (Manager + Indexer + Dashboard)
| |-- Wazuh Agents (self-monitoring + host Windows/Linux)
| +-- Regole custom per Cowrie (rule ID 100010-100013)
|
|-- Network Protection
| |-- WireGuard VPN (wg-easy, porta 51820 UDP)
| |-- Pi-hole DNS Sinkhole (79.000+ domini bloccati)
| +-- UFW Firewall (default deny incoming)
|
|-- Threat Detection
| |-- Cowrie Honeypot (SSH porta 2222, Telnet porta 2223)
| +-- Esposizione Internet (port forward + Ngrok fallback)
|
+-- Network Segmentation
|-- DMZ Network -> servizi esposti
|-- Internal Network -> servizi privati
+-- Management Network -> Portainer, Wazuh Dashboard
```
## 硬件要求
| 组件 | 详情 | 备注 |
|---|---|---|
| **开发板** | Raspberry Pi 5 (8GB RAM) | 4GB 版本无法满足 Wazuh Indexer + Dashboard 的需求 |
| **主存储** | NVMe SSD M.2 2280 PCIe Gen 3x4 | 我的配置:Patriot P320 256GB |
| **NVMe 适配器** | RPi5 专用的 HAT/PCIe 适配器 | 请检查兼容性和供电情况 |
| **辅助存储** | MicroSD 16GB+ | 仅用于恢复;系统从 NVMe 启动 |
| **电源** | 官方 RPi5 27W 电源适配器 (5.1V/5A) | 连接 NVMe 后,供电不足会导致系统不稳定 |
| **网络** | Cat5e/Cat6 网线 | 服务器不建议使用 Wi-Fi;MacVLAN 需要以太网 |
| **交换机** | 网管型交换机 | 仅在进行 802.1Q VLAN 标签时需要 |
| **路由器** | 支持 DDNS 和端口转发 | 我的配置:TP-Link Archer C50 |
## 项目核心原则
## 建议阅读顺序
对于从零开始的用户,建议顺序如下:
1. **First Setup** - 安装操作系统,配置启动和 NVMe
2. **NAS** - 配置 OpenMediaVault 和共享
3. **Docker & Portainer** - 安装容器平台
4. **Secure your RaspberryPi** - 在暴露服务之前进行基础加固
5. **VPN** - 安全的远程访问
6. **ADS Blocker** - DNS 保护
7. **VLAN** - 高级网络分段(可选,需要网管型交换机)
8. **Honeypot** - 部署陷阱
9. **SOC Analyst / Wazuh** - 用于集中监控的 SIEM
10. **Security Assessment** - 整个设置的测试与验证
## 技术栈
| 层级 | 技术 | 版本/备注 |
|---||---|
| OS | Raspberry Pi OS Lite 64-bit | Bookworm (Debian 12)。Trixie 尚不被 OMV 和 Wazuh 支持 |
| NAS | OpenMediaVault 7 | 通过官方 OMV-extras 脚本安装 |
| Container Runtime | Docker Engine (docker.io) | 来自 Debian 仓库,非 Docker CE |
| Container Management | Portainer CE | Web UI 位于 HTTPS:9443 |
| SIEM/XDR | Wazuh 4.9.x | 运行在 ARM64 上的 All-in-One(Manager + Indexer + Dashboard) |
| Log Shipper | Filebeat | 将告警从 Manager 传输到 Indexer |
| VPN | WireGuard (wg-easy v13) | Docker 容器,Web UI 位于端口 51821 |
| DNS Sinkhole | Pi-hole | Docker 容器,MacVLAN 网络 |
| Honeypot | Cowrie | Docker 容器,SSH 端口 2222 |
| Firewall | UFW (Uncomplicated Firewall) | iptables/nftables 的前端 |
| Brute Force Protection | Fail2ban | 集成到 Wazuh 用于告警 |
## 自动化脚本
[`scripts/setup.sh`](./scripts/setup.sh) 脚本可以从零开始复现整个实验环境。每条命令都附带注释,解释其作用及原因。支持模块化执行:
```
# 完整设置(按顺序排列所有模块)
sudo ./scripts/setup.sh all
# 单个模块
sudo ./scripts/setup.sh hardening
sudo ./scripts/setup.sh docker
sudo ./scripts/setup.sh pihole
# 检查所有服务的状态
sudo ./scripts/setup.sh verify
```
## 安全提示
本项目故意在互联网上暴露一个蜜罐。记录的配置包含了隔离措施(防火墙、网络分段、容器沙箱),但**一个暴露在互联网上的系统需要持续维护**:更新、日志监控、防火墙规则审查。
在不了解风险的情况下,请勿复现此配置。配置不当的蜜罐就是你家庭网络上的一扇敞开的大门。
## 许可证
本仓库出于教育目的公开。记录的命令和配置特定于我的网络环境,可能需要调整才能在您的环境中正常工作。
标签:CISA项目, DDNS, DevSecOps, DNS过滤, Docker, Fail2ban, GitHub Advanced Security, NAS, NAT穿透, NFS, NIDS, OpenMediaVault, PE 加载器, Pi-hole, Plex, Portainer, Raspberry Pi 5, SMB, SSH加固, UFW, VLAN, VPN, Wazuh, WireGuard, 上游代理, 动态API解析, 安全加固, 安全运营中心, 安全防御评估, 家庭实验室, 容器化, 红队评估, 网络安全, 网络安全审计, 网络映射, 网络隔离, 蜜罐, 证书利用, 请求拦截, 错误配置检测, 防火墙, 隐私保护