Gitlovess/network-security-monitoring-lab
GitHub: Gitlovess/network-security-monitoring-lab
该项目构建了一个三层网络安全监控实验室,集成 TShark、Zeek 和 Suricata 实现从原始流量捕获到协议分析再到入侵检测的完整 NSM 技术栈。
Stars: 0 | Forks: 0
# 🛡️ 网络安全监控 (NSM) 实验室
一个构建在虚拟化内部网络(`192.168.56.0/24`)上的三层网络安全监控技术栈,结合了原始数据包捕获、协议智能分析和主动威胁检测。
## 🧪 实验室架构
```
┌─────────────────────────────────────────────┐
│ Host-Only Network: 192.168.56.0/24 │
│ │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │Ubuntu Desktop│ │ Windows 10 │ │
│ │ (Attacker) │ │ (Target) │ │
│ └──────┬───────┘ └────────┬─────────┘ │
│ │ │ │
│ └──────────┬───────────┘ │
│ │ │
│ ┌──────────▼──────────┐ │
│ │ Ubuntu Server │ │
│ │ (Monitor - enp0s8) │ │
│ │ Promiscuous Mode │ │
│ │ ┌───────────────┐ │ │
│ │ │ TShark │ │ Layer 1 │
│ │ │ Zeek │ │ Layer 2 │
│ │ │ Suricata │ │ Layer 3 │
│ │ └───────────────┘ │ │
│ └─────────────────────┘ │
└─────────────────────────────────────────────┘
```
监控服务器的 `enp0s8` 接口被设置为 **混杂模式(允许虚机)**,以捕获终端节点之间的所有横向流量。
## 🔧 工具与技术栈
| 层级 | 工具 | 用途 |
|-------|------|---------|
| 第 1 层 | **TShark** | 原始数据包捕获与取证 PCAP 记录 |
| 第 2 层 | **Zeek** | 协议智能 — 结构化连接日志 |
| 第 3 层 | **Suricata** | IDS — 基于特征的实时威胁检测 |
## 📋 命令参考
### 系统设置
```
# 通过 SSH 连接到监控服务器
ssh username@
# 更新系统仓库
sudo apt update
```
### 第 1 层 — TShark(原始数据包捕获)
```
# 在 host-only 接口上捕获实时流量
sudo tshark -i enp0s8
# 仅捕获 ICMP (ping) 流量
sudo tshark -i enp0s8 -f "icmp"
# 将流量记录到文件中持续 40 秒
sudo tshark -i enp0s8 -w /tmp/capture.pcapng -a duration:40
# 读取已保存的 capture 文件
sudo tshark -r /tmp/capture.pcapng
# 在已记录的文件中过滤 ICMP 流量
sudo tshark -r /tmp/capture.pcapng -Y icmp
```
### 第 2 层 — Zeek(协议智能)
```
# 将 capture 文件提供给 Zeek 进行离线分析
cd /tmp
sudo /opt/zeek/bin/zeek -r capture.pcapng
# 查看结构化连接日志
cat con.log
# 以实时监控模式部署 Zeek
sudo /opt/zeek/bin/zeekctl deploy
# 检查 Zeek 运行状态
sudo /opt/zeek/bin/zeekctl status
# 实时监控实时连接数据
sudo tail -f /opt/zeek/spool/zeek/con.log
```
### 第 3 层 — Suricata(主动威胁检测)
```
# 安装 Suricata
sudo apt install suricata
# 启用开机自启动
sudo systemctl enable suricata
# 拉取最新的 Emerging Threats ruleset(60,000+ 签名)
sudo suricata-update
# 验证 config 和自定义规则的语法错误
sudo suricata -t -c /etc/suricata/suricata.yaml
# 重启 Suricata 以应用更改
sudo systemctl restart suricata
# 实时查看警报
sudo tail -f /var/log/suricata/fast.log
# 清除警报日志以进行全新测试
sudo truncate -s 0 /var/log/suricata/fast.log
```
### 攻击者模拟(在 Ubuntu 桌面端运行)
```
# 生成 HTTP 流量以触发 User-Agent 检测
sudo apt install curl
curl http://
# 针对 Windows VM 发起隐蔽的 TCP SYN 端口扫描
sudo apt install nmap
sudo nmap -sS
```
## ✍️ 自定义 Suricata 规则
位于 `/var/lib/suricata/rules/custom.rules`
### 规则 1 — 可疑 User-Agent 检测
```
alert http any any -> any any (
msg:"Suspicious non-browser HTTP client detected";
content:"curl";
http_user_agent;
sid:1000001;
rev:1;
)
```
**逻辑:** 检查出站 HTTP `User-Agent` 头。当检测到 `curl` 时触发,表明使用了命令行工具而非合法浏览器 — 这是脚本化网络侦察或数据外泄的常见早期指标。
### 规则 2 — 内部端口扫描检测
```
alert tcp $HOME_NET any -> $HOME_NET any (
msg:"Internal Port Scan Detected (SYN Flood)";
flags:S;
threshold:type threshold, track by_src, count 50, seconds 30;
sid:1000002;
rev:1;
)
```
**逻辑:** 跟踪所有内部到内部的 TCP SYN 数据包。如果单个主机在 30 秒内发送了 50 个以上的 SYN 请求,它将标记为一次活跃的端口扫描 — 这是横向移动和勒索软件前期侦察的核心技术。
### 规则 3 — SMB 枚举探测
```
alert tcp $HOME_NET any -> $HOME_NET 445 (
msg:"Potential Ransomware SMB Enumeration Probe";
flags:S;
sid:1000003;
rev:1;
)
```
**逻辑:** 在任何内部 TCP 尝试连接到端口 445 (SMB) 时触发。这是自传播勒索软件(例如 WannaCry)扫描内部易受攻击目标的关键指标。
## 📁 仓库结构
```
nsm-lab/
├── README.md # This file
├── rules/
│ └── custom.rules # All custom Suricata detection rules
├── docs/
│ └── setup-notes.md # Extended lab setup documentation
├── captures/
│ └── .gitkeep # PCAP samples (add your own)
└── screenshots/
└── .gitkeep # Evidence screenshots from detection tests
```
## 🎯 展示技能
- 开启混杂模式的 Virtualbox 仅主机网络配置
- 使用 TShark/Wireshark 进行数据包捕获与取证分析
- 使用 Zeek 分析协议日志(`conn.log`、`dns.log`、`http.log`)
- 使用 Suricata + Emerging Threats 规则集进行 IDS 部署与规则调优
- 编写自定义 Suricata 规则(阈值、内容匹配、标志检测)
- 攻击者模拟:基于 curl 的 HTTP 探测、Nmap SYN 扫描
- 使用 `fast.log` 进行实时告警监控
## 📌 参考
- [Suricata 文档](https://suricata.readthedocs.io/)
- [Zeek 文档](https://docs.zeek.org/)
- [Emerging Threats 开放规则集](https://rules.emergingthreats.net/)
- [TryHackMe SOC Level 1 路径](https://tryhackme.com/path/outline/soclevel1)
标签:CTI, Metaprompt, Rootkit, Suricata, TShark, Zeek, 入侵检测系统, 安全实验环境, 安全数据湖, 攻击面映射, 现代安全运营, 网络安全监控, 驱动开发