Gitlovess/pfSense-Suricata-IPS-lab

GitHub: Gitlovess/pfSense-Suricata-IPS-lab

基于 pfSense 与 Suricata 构建的内联入侵防御系统实验室,实现实时数据包拦截与地理封锁验证。

Stars: 0 | Forks: 0

# 🔥 pfSense 防火墙 + Suricata IPS 实验室 一个企业级网络安全实验室,部署 pfSense 作为边界防火墙,并运行在主动式 **入侵防御系统 (IPS)** 模式下的 Suricata —— 从仅检测升级为实时拦截攻击。 ## 🧪 实验室架构 ``` ┌─────────────────────────────────────────────────────────┐ │ VirtualBox Environment │ │ │ │ Internet │ │ │ │ │ ▼ │ │ ┌─────────────────────────────┐ │ │ │ pfSense Firewall │ │ │ │ WAN: NAT (Internet) │ │ │ │ LAN: Host-Only (.254 GW) │ │ │ │ │ │ │ │ ┌─────────────────────┐ │ │ │ │ │ pfBlockerNG │ │ ← Geo-blocking │ │ │ │ Malicious IP Alias │ │ ← Known bad IPs │ │ │ │ Suricata IPS │ │ ← Inline packet drop │ │ │ └─────────────────────┘ │ │ │ └──────────────┬──────────────┘ │ │ │ Secure LAN (192.168.x.0/24) │ │ ┌────────────┼────────────┐ │ │ ▼ ▼ ▼ │ │ Ubuntu Ubuntu Windows 10 │ │ Server Desktop (Endpoint) │ │ (Monitor) (Attacker) │ └─────────────────────────────────────────────────────────┘ ``` 所有虚拟机流量都**严格通过 pfSense 路由** —— 终端设备无法直接访问互联网。 ## 🔧 工具与技术栈 | 工具 | 用途 | |------|---------| | **pfSense CE** | 边界防火墙与网络网关 | | **pfBlockerNG-devel** | 地理封锁与恶意 IP 封锁 | | **MaxMind GeoLite2** | 地理 IP 数据库 | | **Suricata IPS** | 内联入侵防御(60,000+ 特征码) | | **VirtualBox** | 虚拟化平台 | ## 🛠️ 实验室设置 ### 1. pfSense 虚拟机配置 | 设置 | 值 | |---------|-------| | 操作系统 | FreeBSD (pfSense CE ISO) | | CPU | 2 核 | | 内存 | 2 GB | | 存储 | 20 GB | | 网卡 1 (WAN) | NAT | | 网卡 2 (LAN) | 仅主机网络 | ### 2. pfSense Web GUI 初始设置 - DNS 服务器更新为 Google (`8.8.8.8`) - 锁定管理员凭证 - 分配自定义域名:`cdm.local` ## 🌍 防火墙情报与地理封锁 ### 恶意 IP 别名 自定义的防火墙别名 (`malicious_IPs`) 将已知的恶意 IP 地址整合到单个条目中 —— 只需一条规则即可在 WAN 层封锁整个威胁群组。 ### 使用 pfBlockerNG 进行地理封锁 1. 在 pfSense 中安装 `pfBlockerNG-devel` 软件包 2. 注册免费的 **MaxMind GeoLite2** 账号 3. 将地理 IP 范围同步到 pfSense 4. 创建 WAN 规则以**自动丢弃来自高风险地区的所有流量** ## 🚨 Suricata 内联 IPS 模式 ### 核心区别:IDS 与 IPS | 模式 | 操作 | |------|--------| | IDS(实验室 1) | 检测并**告警** —— 流量仍然放行 | | IPS(实验室 2) | 检测并**丢弃** —— 实时拦截流量 | ### 配置步骤 1. 在 pfSense 上安装 Suricata 2. 启用 **Block Offenders** 选项 3. 将模式设置为 **Inline Mode** 4. 加载威胁情报规则集: - 恶意软件特征码 - 系统扫描检测 - 漏洞利用行为模式 ## 🔒 网络强化 ### 隔离终端设备 - 禁用所有实验室虚拟机(Ubuntu Server、Ubuntu Desktop、Windows 10)上的直接 NAT 网卡 - 所有互联网流量现在都**强制通过 pfSense 网关** ### 网关重新配置 **Linux (Ubuntu) — Netplan:** ``` network: version: 2 ethernets: enp0s3: dhcp4: no gateway4: 192.168.x.254 # pfSense LAN IP nameservers: addresses: [8.8.8.8] ``` **Windows 10:** - 网络适配器 → IPv4 属性 - 默认网关:`192.168.x.254` (pfSense LAN IP) ## ✅ 验证测试 ### 测试:使用 testmynids.org 触发与拦截 从 Ubuntu Desktop 运行: ``` curl http://testmynids.org/uid/index.html ``` **结果 1 — 告警模式:** 标记了流量但仍允许通过 **结果 2 — 将规则切换为 Drop 后:** 连接超时 —— 数据包在边界被拦截 pfSense 仪表板日志确认数据包在到达任何终端之前**已在 WAN 层被丢弃**。 ## 📁 仓库结构 ``` pfsense-ips-lab/ ├── README.md # This file ├── docs/ │ └── setup-notes.md # Detailed configuration notes ├── rules/ │ └── custom-notes.md # Suricata rule modifications used └── screenshots/ └── .gitkeep # Evidence screenshots ``` ## 🎯 展示的技能 - 从零开始部署和配置 pfSense 防火墙 - 双接口 WAN/LAN 网络分段 - 使用 pfBlockerNG + MaxMind GeoLite2 实施地理封锁 - 创建自定义防火墙别名以封锁威胁群组 - 将 Suricata 从被动 IDS 升级 → 主动式 IPS 内联模式 - 终端设备网络隔离与网关重路由 - 使用 testmynids.org 验证 IPS - 通过 pfSense 仪表板日志进行实时丢包验证 ## 📌 参考 - [pfSense 文档](https://docs.netgate.com/pfsense/en/latest/) - [pfBlockerNG 指南](https://docs.netgate.com/pfsense/en/latest/packages/pfblocker.html) - [Suricata IPS 模式](https://suricata.readthedocs.io/en/latest/setting-up-ipsinline-for-linux.html) - [MaxMind GeoLite2](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) - [实验室 1 — NSM 实验室](https://github.com/Gitlovess/nsm-lab) ## 🔗 SOC 家庭实验室系列 | 实验室 | 项目 | 状态 | |-----|---------|--------| | 实验室 1 | [NSM 技术栈 — TShark + Zeek + Suricata IDS](https://github.com/Gitlovess/nsm-lab) | ✅ 已完成 | | 实验室 2 | pfSense 防火墙 + Suricata IPS(当前仓库) | ✅ 已完成 |
标签:Metaprompt, 入侵防御系统, 威胁猎捕, 流量监控, 网络安全, 虚拟化实验环境, 进程监控, 防火墙, 隐私保护