solomonhenry-afk/enterprise-suricata-ids-ips-deployment
GitHub: solomonhenry-afk/enterprise-suricata-ids-ips-deployment
该项目记录了在 pfSense 上部署企业级 Suricata IDS/IPS 的完整流程,涵盖规则管理、检测验证、eve.json 遥测及 Splunk SIEM 调查的端到端安全工程实践。
Stars: 0 | Forks: 0
# 企业级 IDS/IPS 部署 — Suricata 网络安全工程
## 概述
本项目记录了在基于 pfSense 的网络安全环境中,将 Suricata 作为企业级入侵检测和防御系统进行部署、配置、验证和操作使用的过程。
目标是构建网络级的可见性,能够检测可疑流量、侦察活动、策略违规和已知的威胁特征,同时通过防火墙日志、Suricata 遥测数据和 Splunk 保留用于调查的证据。
Suricata 被部署为分层防御架构的一部分,而不是作为独立的告警工具。该实现将网络执行、IDS/IPS 检查、安全日志记录和 SIEM 调查连接到一个操作工作流中。
## 目标
* 在 pfSense 上部署 Suricata。
* 在适当的网络接口上配置 IDS/IPS 检测。
* 启用和管理 Suricata 规则源。
* 生成受控流量以验证检测可见性。
* 查看 Suricata 告警和 `eve.json` 遥测数据。
* 一起验证防火墙和 IDS 证据。
* 在 Splunk 中转发和调查 Suricata 事件。
* 记录检测、限制、残余风险和改进机会。
## 环境范围
| 组件 | 角色 | 安全功能 |
| ------------------ | ------------------------------- | ---------------------------------------------- |
| pfSense | 防火墙和网关 | 路由、策略执行、Suricata 托管 |
| Suricata | IDS/IPS 引擎 | 特征检测、协议分析、告警生成 |
| Kali Linux | 安全工程工作站 | 受控验证和授权流量测试 |
| Windows Server | 企业基础设施 / 域控制器 | 内部服务和身份验证目标 |
| Windows Client | 企业终端 | 内部流量源和验证端点 |
| Splunk Enterprise | SIEM | 搜索、调查、事件关联、证据保留 |
## 架构
```
Internet / External Traffic
│
▼
┌───────────────────┐
│ pfSense │
│ Firewall + Router │
└─────────┬─────────┘
│
┌──────────────┴──────────────┐
│ │
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ Suricata IDS/IPS │ │ Firewall Logging │
│ Detection Engine │ │ Policy Evidence │
└─────────┬────────┘ └─────────┬────────┘
│ │
└──────────────┬──────────────┘
▼
┌───────────────────┐
│ Splunk Enterprise │
│ SIEM Investigation│
└───────────────────┘
```
## IDS 与 IPS
| 模式 | 目标 | 行为 |
| ------------------ | -------------------------- | -------------------------------------------- |
| IDS | 检测可疑流量 | 生成告警并记录证据 |
| IPS | 检测并阻止可疑流量 | 在配置的情况下丢弃或阻止匹配的流量 |
| 被动监控 | 可见性和调查 | 观察流量但不执行 |
| 内联防御 | 主动保护 | 对检查的流量执行阻断决策 |
本次部署首先强调可靠的检测可见性,随后进行受控的 IPS 评估。在启用激进的阻断规则之前,进行检测调优非常重要,因为误报可能会干扰合法的业务流量。
## Suricata 部署工作流
```
Install Suricata Package
│
▼
Select Interface for Inspection
│
▼
Enable IDS / IPS Mode
│
▼
Configure Rule Sources
│
▼
Download and Update Rules
│
▼
Enable Logging and eve.json Output
│
▼
Generate Controlled Validation Traffic
│
▼
Review Alerts in pfSense and Splunk
│
▼
Tune Rules and Document Findings
```
## Suricata 配置领域
### 接口配置
在选定的 pfSense 接口上启用了 Suricata,以检查流经企业实验室网络的流量。
配置注意事项包括:
* 接口选择。
* 混杂模式要求。
* 支持的情况下的 IPS 内联模式。
* Home network 定义。
* 受信任或排除系统的 Pass list。
* 告警日志记录配置。
* 性能影响和规则选择。
### 规则源
规则源为可疑流量、漏洞利用、恶意软件活动、扫描、策略违规和协议异常提供检测逻辑。
| 规则类别 | 目的 |
| -------------------- | ------------------------------------------ |
| Emerging Threats Open| 社区威胁检测特征 |
| 扫描规则 | 检测侦察和服务发现 |
| 策略规则 | 检测潜在风险或未经授权的行为 |
| 恶意软件规则 | 检测已知的恶意指标和流量模式 |
| 漏洞利用规则 | 检测漏洞利用尝试和易受攻击的服务攻击 |
| Web 服务器规则 | 检测可疑的 HTTP 和 Web 服务活动 |
| 协议解码器规则 | 检测格式错误或异常的协议行为 |
### 日志记录
Suricata 遥测数据非常有价值,因为它为每个告警提供了结构化的上下文。
常见字段包括:
| 字段 | 含义 |
| ---------------- | ----------------------------- |
| `timestamp` | 事件发生的时间 |
| `event_type` | Suricata 事件的类型 |
| `src_ip` | 源 IP 地址 |
| `dest_ip` | 目标 IP 地址 |
| `src_port` | 源端口 |
| `dest_port` | 目标端口 |
| `proto` | 网络协议 |
| `alert.signature`| 检测特征 |
| `alert.category` | 告警类别 |
| `alert.severity` | 特征严重性 |
| `flow_id` | 关联的网络流标识符 |
## 受控检测验证
验证仅在授权的企业实验室环境中进行。
用于测试检测可见性的受控流量示例包括:
* ICMP echo 请求。
* TCP 连接尝试。
* 服务发现。
* 端口扫描。
* SMB 连接检查。
* DNS 活动。
* HTTP 请求。
* 内部侦察模式。
授权验证命令示例:
```
# ICMP 验证
ping -c 4 192.168.56.100
```
```
# 受控服务发现
nmap -Pn -sT -p 53,88,135,389,445,3389,5985,5986 192.168.56.100
```
```
# 受控 SYN 扫描验证
nmap -Pn -sS -p 1-1000 192.168.56.100
```
预期结果不一定是阻断。主要目标是验证 Suricata 生成了有用的遥测数据,并且该活动是可以被调查的。
## 检测示例
| 检测类型 | 示例活动 | 预期证据 |
| -------------- | --------------------------- | ----------------------------------------------- |
| ICMP 异常 | ICMP 测试或格式错误的 ICMP 行为 | 带有源和目标上下文的 Suricata 告警 |
| 端口扫描 | Nmap 服务发现 | 与扫描相关的特征或流证据 |
| SMB 活动 | 文件共享连接验证 | 与 SMB 相关的流量可见性 |
| 策略违规 | 意外的服务访问 | 策略类别告警或防火墙日志 |
| 协议异常 | 格式错误或异常的协议行为 | 解码器或协议告警 |
| Web 活动 | HTTP 请求测试 | HTTP 事件或 Web 规则告警 |
## Suricata 告警调查
在 Splunk 中搜索 Suricata 告警的示例:
```
index=main source=suricata
| table _time alert.signature alert.category alert.severity src_ip dest_ip proto
```
简化的分析师专用搜索:
```
index=main source=suricata
| table _time signature severity category src_ip dest_ip tactic technique
```
搜索最频繁的特征:
```
index=main source=suricata
| stats count by alert.signature alert.category alert.severity
| sort - count
```
搜索重复的源到目标活动:
```
index=main source=suricata
| stats count by src_ip dest_ip proto alert.signature
| sort - count
```
## 证据收集
推荐的证据结构:
```
screenshots/
├── 01-surricata-package-installed.png
├── 02-interface-configuration.png
├── 03-rule-source-configuration.png
├── 04-rule-update-status.png
├── 05-suricata-alerts-pfsense.png
├── 06-eve-json-telemetry.png
├── 07-splunk-suricata-search.png
├── 08-splunk-alert-details.png
└── 09-controlled-validation-output.png
```
## 检测工程注意事项
并非所有的 Suricata 告警都能完全对应到 MITRE ATT&CK。
例如,一个解码器事件如:
```
SURICATA ICMPv4 unknown code
```
可能表明存在异常的协议行为,但不一定是高置信度的入侵事件。应结合以下上下文进行调查:
* 源系统和目标系统。
* 事件发生的频率。
* 关联的扫描或连接活动。
* 防火墙策略决策。
* Windows 身份验证活动。
* 资产重要性。
* 来自同一源的其他 IDS 特征。
更高价值的丰富化机会可能包括与以下相关的特征:
* Nmap SYN 扫描。
* Nmap 版本扫描。
* SMB 策略违规。
* Web 服务器探测。
* 恶意软件指标。
* 漏洞利用尝试。
* 凭据访问行为。
* 横向移动协议。
## 操作发现
| 领域 | 结果 |
| ------------------ | --------------------------------------------------------------------- |
| IDS 部署 | Suricata 部署在 pfSense 网络安全架构内 |
| 规则管理 | 配置并更新检测规则源 |
| 检测可见性 | 由受控验证流量生成的告警 |
| 遥测数据 | 通过 `eve.json` 提供结构化的 Suricata 事件数据 |
| 调查 | 告警可在 Splunk 中进行搜索和审查 |
| 防火墙关联 | IDS 证据与策略执行上下文相连接 |
| 检测调优 | 确定了区分低置信度异常和高价值检测的需求 |
## 风险与限制
| 风险 / 限制 | 影响 | 缓解措施 |
| ------------------- | ---------------------------- | ------------------------------------------------------------------ |
| 误报 | 告警疲劳或不必要的阻断 | 在 IPS 执行前调优规则并进行验证 |
| 漏报 | 错过恶意活动 | 维护规则,关联多个遥测数据源 |
| 加密流量 | 减少了 payload 检查 | 使用元数据、TLS 指纹、端点日志和 SIEM 关联 |
| 宽泛的规则集 | 性能影响和噪音 | 启用相关类别并监控资源使用情况 |
| 解码器告警 | 可能缺乏明确的 ATT&CK 上下文 | 结合流、资产和行为上下文进行调查 |
| IPS 配置错误 | 可能会中断合法的流量 | 从 IDS 模式开始并进行仔细验证 |
| 遥测数据不完整 | 降低了调查能力 | 集中管理防火墙、Suricata 和端点日志 |
## 未来改进
* 扩展 Suricata 到 MITRE ATT&CK 的丰富化。
* 为重复的告警增加重复抑制机制。
* 实施基于严重性的风险评分。
* 为源 IP 地址添加威胁情报丰富化。
* 构建 Splunk 仪表板以展示告警趋势和热门特征。
* 为已处理、转发和抑制的告警添加操作指标。
* 为内部横向移动协议创建调优后的规则类别。
* 将资产重要性整合到检测优先级排序中。
* 根据精心挑选的特征验证 IPS 阻断行为。
## 结论
在企业环境中部署 Suricata 提供的不仅仅是告警。它创建的网络级证据可以与防火墙策略、端点活动、身份事件和 SIEM 调查进行关联。
本项目演示了当 IDS/IPS 部署被视为分层检测和响应架构的一部分时,它是如何变得具有操作价值的。重点不仅仅是生成告警,而是产生可操作的、可解释的且有据可查的安全遥测数据。
# 作者
## BASSEY SOLOMON HENRY
**网络安全工程师 | SOC 分析师 | 检测工程师 | 紫队 | Active Directory 安全 | SIEM | 企业安全**
热衷于构建企业级安全实验室,通过模拟真实世界的攻击链、验证防御控制措施、增强检测工程能力,并通过实战化的紫队运作将进攻性安全与企业防御联系起来。
# 个人理念
### — Solomon Henry
## 🌐 企业安全演进
*通过企业攻击模拟、Active Directory 安全、检测工程、紫队验证、威胁狩猎、数字取证和安全自动化,构建现代网络安全专业知识。*
**企业安全演进是一个多领域的网络安全工程作品集,记录了跨 Active Directory、检测工程、紫队运作、云安全、威胁狩猎、数字取证和安全自动化等领域设计、执行、验证和检测企业攻击模拟的过程。每个领域都在前一个领域的基础上构建,反映了现代企业安全团队如何防御真实世界的环境。**
**如果您觉得这个项目有价值,请考虑为该仓库点赞并关注我的网络安全之旅。**
标签:Metaprompt, pfSense, Suricata, 入侵检测系统, 安全数据湖, 现代安全运营, 网络安全, 防火墙, 隐私保护