ExploitGd/raspberry-pi-security-lab
GitHub: ExploitGd/raspberry-pi-security-lab
基于树莓派5的一键式家庭网络安全实验室,集成系统加固、入侵检测、蜜罐和实时监控仪表盘,帮助安全学习者在低成本硬件上实践蓝队防御技能。
Stars: 0 | Forks: 0
# 🛡️ Raspberry Pi 5 — 家庭安全实验室
一个基于运行 Ubuntu Desktop 的 Raspberry Pi 5 (8GB) 构建的完全自动化的网络安全家庭实验室。本项目展示了跨越四个阶段的实用蓝队安全技能:系统加固、入侵检测、蜜罐部署以及实时日志可视化。
## 📸 仪表盘预览

## 🏗️ 架构
```
Internet Traffic
│
▼
┌─────────────────────────────────────────────┐
│ Raspberry Pi 5 (Ubuntu) │
│ │
│ ┌─────────┐ ┌──────────┐ ┌────────┐ │
│ │ UFW │ │ Suricata │ │ Cowrie │ │
│ │Firewall │ │ IDS │ │Honeypot│ │
│ └─────────┘ └────┬─────┘ └───┬────┘ │
│ │ │ │
│ ┌───────▼──────────────▼────┐ │
│ │ Promtail │ │
│ │ (Log Shipper) │ │
│ └───────────┬───────────────┘ │
│ │ │
│ ┌───────────▼───────────────┐ │
│ │ Loki │ │
│ │ (Log Aggregator) │ │
│ └───────────┬───────────────┘ │
│ │ │
│ ┌───────────▼───────────────┐ │
│ │ Grafana │ │
│ │ (Live Dashboard) │ │
│ └───────────────────────────┘ │
└─────────────────────────────────────────────┘
```
## 🔧 硬件
| 组件 | 规格 |
|---|---|
| 设备 | Raspberry Pi 5 |
| 内存 | 8GB |
| 操作系统 | Ubuntu Desktop 24.x |
| 网络 | 有线以太网 (eth0) |
## 📋 项目阶段
### 阶段 1 — 安全加固
**脚本:** [`pi5_hardening.sh`](pi5_hardening.sh)

遵循 CIS 基准原则,自动执行全新 Ubuntu 安装的加固。
| 控制项 | 实现方式 |
|---|---|
| 用户管理 | 专用管理员用户,禁用 root 登录 |
| 身份验证 | 基于 SSH 密钥的身份验证,禁用密码身份验证 |
| 网络 | UFW 防火墙,默认拒绝入站策略 |
| 暴力破解防护 | fail2ban (3 次重试,封禁 1 小时) |
| 服务精简 | 禁用蓝牙、CUPS、Avahi、ModemManager |
| 补丁管理 | 启用无人值守安全更新 |
**展示的关键概念:**
- 最小权限原则
- 攻击面缩减
- 纵深防御
- CIS 基准控制
### 阶段 2 — 入侵检测系统 (Suricata)
**脚本:** [`pi5_suricata_setup.sh`](pi5_suricata_setup.sh)

部署 Suricata 7.x 作为网络 IDS,监控主接口上的所有流量。
| 特性 | 详情 |
|---|---|
| 引擎 | Suricata 7.x (OISF 官方仓库) |
| 模式 | IDS (被动监控) |
| 规则 | 49,770+ 条 Emerging Threats 签名 |
| 接口 | eth0 (自动检测) |
| 输出 | eve.json (JSON), fast.log (告警) |
| 日志轮转 | 每天,保留 7 天,压缩存储 |
**捕获的示例告警:**
```
[1:2100498:7] GPL ATTACK_RESPONSE id check returned root
Classification: Potentially Bad Traffic | Priority: 2
3.169.231.53:80 -> 192.168.1.23:52254
```
**展示的关键概念:**
- 网络流量分析
- 基于签名的检测
- 规则管理与更新
- JSON 日志解析
- 蓝队 / SOC 分析师工具
### 阶段 3 — SSH 蜜罐 (Cowrie)
**脚本:** [`pi5_cowrie_setup.sh`](pi5_cowrie_setup.sh)

部署 Cowrie 2.9. x 作为中等交互的 SSH 蜜罐,记录所有攻击者活动。
| 特性 | 详情 |
|---|---|
| 引擎 | Cowrie 2.9.17 |
| 协议 | SSH (端口 2222) |
| 隔离 | 专用的非特权用户 |
| 环境 | Python virtualenv |
| 日志记录 | 带有完整 TTY 录制的 JSON 会话日志 |
| 服务 | systemd,自动重启 |
**捕获的示例会话:**
```
{"eventid":"cowrie.login.success","username":"root","password":"yes1234"}
{"eventid":"cowrie.command.input","input":"whoami"}
{"eventid":"cowrie.command.input","input":"cat /etc/passwd"}
{"eventid":"cowrie.session.closed","duration":"39.5"}
```
**针对每次攻击者会话记录的内容:**
- 源 IP 和端口
- SSH 客户端版本和指纹 (HASSH)
- 每一次凭据尝试
- 输入的每一条命令
- 下载/上传的文件
- 完整的 TTY 会话重播
**展示的关键概念:**
- 蜜罐部署与运营
- 威胁情报收集
- 攻击者行为分析
- 最小权限原则(隔离的服务用户)
- Python virtualenv 管理
### 阶段 4 — 实时安全仪表盘 (Grafana + Loki)
**脚本:** [`pi5_dashboard_setup.sh`](pi5_dashboard_setup.sh)
构建一个聚合 Suricata 和 Cowrie 日志的实时安全仪表盘。
| 组件 | 角色 |
|---|---|
| Grafana | 仪表盘 UI (端口 3000) |
| Loki | 日志聚合与存储 (端口 3100) |
| Promtail | 来自 Suricata + Cowrie 的日志发送 |
**仪表盘面板:**
- Suricata 告警日志流 (实时)
- Cowrie 蜜罐事件流 (实时)
- 24 小时内 Suricata 告警计数 (统计)
**使用的 LogQL 查询:**
```
{job="suricata"} # All IDS alerts
{job="cowrie"} # All honeypot events
count_over_time({job="suricata"}[24h]) # Alert volume stat
{job="cowrie"} |= "login.success" # Successful honeypot logins
{job="suricata"} |= "ATTACK_RESPONSE" # Specific attack category
```
**展示的关键概念:**
- 日志聚合管道 (Promtail → Loki → Grafana)
- 基础设施即代码 (通过配置文件配置 Grafana)
- LogQL 查询语言
- 安全运营中心 (SOC) 工具
- 可观测性与监控
## 🚀 快速开始
### 前置条件
- 已安装 Ubuntu Desktop 的 Raspberry Pi 5
- 已配置 SSH 访问
- 互联网连接
### 安装
将此仓库克隆到你的 Pi 上:
```
git clone https://github.com/yourusername/raspberry-pi-security-lab.git
cd raspberry-pi-security-lab
```
按顺序运行每个阶段:
```
# 阶段 1 - 系统加固
sudo bash pi5_hardening.sh
# 阶段 2 - 部署 Suricata IDS
sudo bash pi5_suricata_setup.sh
# 阶段 3 - 部署 Cowrie 蜜罐
sudo bash pi5_cowrie_setup.sh
# 阶段 4 - 部署 Grafana 仪表板
sudo bash pi5_dashboard_setup.sh
```
### 访问仪表盘
```
http://YOUR-PI-IP:3000
Default credentials: admin/admin
```
## 📁 仓库结构
```
raspberry-pi-security-lab/
├── README.md
├── pi5_hardening.sh # Phase 1: System hardening
├── pi5_suricata_setup.sh # Phase 2: Suricata IDS
├── pi5_cowrie_setup.sh # Phase 3: Cowrie honeypot
├── pi5_dashboard_setup.sh # Phase 4: Grafana dashboard
└── screenshots/
├── grafana-dashboard.png
├── suricata-alerts.png
└── cowrie-session.png
```
## 🔍 常用命令
```
# Suricata
sudo tail -f /var/log/suricata/fast.log # Live alerts
sudo suricata-update # Update rules
sudo systemctl status suricata # Service status
# Cowrie
sudo cat /home/cowrie/cowrie/var/log/cowrie/cowrie.json | tail -20
sudo systemctl status cowrie # Service status
# Grafana 技术栈
sudo systemctl status grafana-server loki promtail
# 防火墙
sudo ufw status verbose
# fail2ban
sudo fail2ban-client status sshd
```
## 🛠️ 展示的技能
| 技能领域 | 工具 / 概念 |
|---|---|
| Linux 管理 | Ubuntu, systemd, bash 脚本编写, 用户管理 |
| 网络安全 | UFW 防火墙, SSH 加固, 端口管理 |
| 入侵检测 | Suricata, Emerging Threats 规则集, EVE JSON |
| 威胁情报 | Cowrie 蜜罐, 攻击者画像, HASSH 指纹识别 |
| 日志管理 | Loki, Promtail, LogQL, 日志轮转 |
| 可视化 | Grafana, 仪表盘设计, 实时监控 |
| 自动化 | Bash 脚本编写, systemd 服务, 基础设施即代码 |
| 安全加固 | CIS 基准, 攻击面缩减, 最小权限 |
## 📚 参考资料
- [Suricata 文档](https://suricata.readthedocs.io)
- [Cowrie 文档](https://cowrie.readthedocs.io)
- [Grafana 文档](https://grafana.com/docs)
- [Emerging Threats 规则集](https://rules.emergingthreats.net)
- [CIS Ubuntu 基准](https://www.cisecurity.org/benchmark/ubuntu_linux)
## ⚠️ 免责声明
本项目仅供教育目的和个人家庭实验室使用。该蜜罐只能部署在你拥有或获得明确授权进行监控的网络上。切勿未经授权在网络上部署安全工具。
*使用 🍓 Raspberry Pi 5 | Ubuntu | Suricata | Cowrie | Grafana 构建*
标签:AMSI绕过, CISA项目, Grafana, IoT安全, IP 地址批量处理, Loki, Metaprompt, PB级数据处理, PE 加载器, Promtail, Raspberry Pi, Suricata, TGT, UFW防火墙, 入侵检测系统, 内存执行, 威胁检测, 安全仪表盘, 安全数据湖, 安全架构, 安全运维, 家庭实验室, 应用安全, 开源自建, 插件系统, 攻防演练, 日志可视化, 日志聚合, 树莓派5, 现代安全运营, 系统加固, 网络安全, 网络安全审计, 蜜罐, 证书利用, 边缘计算, 逆向工具, 隐私保护