CH8 入侵检测技术
从 IDS 原理到 Snort 实战规则,安全防御的"巡逻队与监控摄像头"
🎯学习目标
读完这一章,你应该能回答:
- IDS 为什么存在?它和防火墙有什么区别?
- CIDF 通用架构的四大组件是什么?
- 异常检测 vs 特征检测各自的优缺点?
- HIDS、NIDS、NNIDS 的区别?
- Snort 规则的语法格式和常见检测实例?
1为什么需要入侵检测?
安全工具对比
| 工具 | 主要功能 | 优点 | 缺点 |
|---|---|---|---|
| 防火墙 | 网络访问控制 | 成本低、性能好 | 无法检测内部攻击 |
| IDS | 检测入侵行为 | 实时检测、深层分析 | 误报/漏报、配置复杂 |
| 扫描器 | 发现系统漏洞 | 主动发现隐患 | 只发现不能防御 |
| VPN | 加密隧道通信 | 保护传输安全 | 隧道内恶意流量检测困难 |
| 防病毒 | 查杀病毒木马 | 针对性强 | 依赖特征库、零日无效 |
预防-检测-响应:三步防御
预防
防火墙、加密、访问控制 — 挡住攻击
检测
IDS、日志分析 — 发现已进入的攻击
响应
应急响应 — 处理攻击后果
2入侵检测基本概念
入侵的分类
| 类型 | 说明 |
|---|---|
| 外部渗透 | 未授权用户从外部入侵 |
| 内部渗透 | 授权用户越权访问 |
| 不法行为 | 合法用户做非法的事 |
IDS 六大功能
- 监视和分析用户和系统活动
- 审计系统的配置和脆弱性
- 评估关键系统和数据文件的完整性
- 识别已知的攻击模式
- 统计分析异常行为
- 对异常行为做出响应(自动/报警)
3入侵检测模型 ⭐
Denning 通用模型(1987)
最早、最有影响力的入侵检测模型。核心思想:建立用户/系统的"正常行为基线",偏离基线就是异常。
| 组件 | 作用 |
|---|---|
| 主体(Subject) | 活动的发起者,通常指用户 |
| 对象(Object) | 资源实体,如文件、命令、设备 |
| 审计记录 | 记录操作:<主体, 动作, 对象, 异常条件, 资源使用, 时间戳> |
| 活动档案(Profile) | 保存主体的正常行为特征 |
| 异常记录 | 记录检测到的异常 |
| 活动规则 | 判断是否异常,更新档案,输出报警 |
CIDF 通用架构(重点)
CIDF(Common Intrusion Detection Framework)定义了 IDS 的四大组件:
E-box
事件产生器
从网络/系统中采集事件数据(监控摄像头)
A-box
事件分析器
分析数据,判断是否入侵(视频分析员)
R-box
响应单元
对入侵做出响应、报警/阻断(保安队)
D-box
事件数据库
存储中间数据和最终数据(录像存储)
其他模型
- IDM 层次化模型:分安全审计(下层)和安全管理(上层)两个层次
- SNMP-IDSM:将入侵检测引入网络管理体系,有 Agent/Manager/MIB 三角色
4检测技术分类 ⭐⭐
两大检测范式
| 异常检测 | 特征检测(误用检测) | |
|---|---|---|
| 原理 | 建立正常行为模型,偏离 = 入侵 | 建立攻击特征库,匹配 = 入侵 |
| 优点 | 能检测未知攻击 | 误报率低,速度快 |
| 缺点 | 误报率高,需要训练 | 无法检测未知攻击(零日) |
| 别名 | 基于行为/统计 | 基于知识/规则/签名 |
异常检测的具体技术
| 技术 | 原理 |
|---|---|
| 统计异常检测 | 收集正常活动的统计数据,建立统计模型 |
| HMM 隐马尔可夫 | 建立正常系统调用序列的概率模型 |
| 神经网络 | 学习正常行为模式,自动分类异常 |
| 免疫系统方法 | 模拟生物免疫:自我/非我识别 |
| 遗传算法 | 用遗传进化搜索最优检测规则 |
| SVM 支持向量机 | 找最优分割超平面,区分正常/异常 |
特征检测的具体技术
| 技术 | 原理 |
|---|---|
| 专家系统 | 将安全专家知识编码为 if-then 规则 |
| 攻击签名 | 将攻击表示为特定签名/模式 |
| 模式匹配 | 在网络流量中搜索特定字节序列 |
| 状态转换分析 | 将攻击建模为状态机(初始 → 中间 → 入侵) |
5HIDS vs NIDS vs NNIDS ⭐
主机入侵检测系统(HIDS)
数据来源:主机上的系统日志、应用日志、文件变化。两种检测方法:网络连接检测 + 主机文件检测。
| 优点 | 缺点 |
|---|---|
| 可以精确判断入侵是否成功 | 依赖主机 OS,不同系统需不同版本 |
| 可以监控加密后的流量 | 可能被攻击者禁用 |
| 不需要额外硬件 | 占用主机资源 |
| 能关联到具体用户 | 无法检测网络层攻击 |
网络入侵检测系统(NIDS)
数据来源:网络流量(在交换机/路由器上抓包分析)。两种检测方法:模式匹配 + 协议分析。
| 优点 | 缺点 |
|---|---|
| 实时检测网络流量 | 无法检测加密流量 |
| 对网络性能影响小 | 高速网络下丢包 |
| 独立于 OS | 无法判断入侵是否成功 |
| 攻击者难以清除痕迹 | 对交换网络需要镜像端口 |
网络节点 IDS(NNIDS)
结合 HIDS 和 NIDS 的优点:安装在主机上,但只检测该主机相关的网络流量。解决了 NIDS 检测加密流量的问题。
三者对比速查
| 特性 | HIDS | NIDS | NNIDS |
|---|---|---|---|
| 数据源 | 主机日志 | 网络流量 | 本机网络流量 |
| 加密检测 | 可以 | 不可以 | 可以 |
| 部署 | 每台主机 | 网络关键节点 | 每台主机 |
| 内部攻击 | 可检测 | 不可检测 | 部分可检测 |
6性能指标与响应方式
关键指标
误报 False Positive
把正常行为判定为攻击 = "冤枉好人"
漏报 False Negative
攻击行为没检测到 = "放过坏人"
检测率
检测到的攻击占全部攻击的比例,越高越好
IDS 响应方式
| 类型 | 方式 | 说明 |
|---|---|---|
| 主动响应 | 自动阻断连接 | 发送 TCP RST 包切断连接 |
| 防火墙联动 | 通知防火墙添加阻断规则 | |
| 重配路由器 | 让可疑流量进入"蜜罐" | |
| 被动响应 | 报警通知 | 向管理员发送邮件/短信 |
| 日志记录 | 记录详细的攻击信息 | |
| SNMP Trap | 发送网管告警 |
7Snort 实战详解 ⭐⭐
Snort 是世界上最流行的开源 NIDS,由 Martin Roesch 于 1998 年开发。开源、轻量级、功能强大。
三个子系统
数据包解码器
从网卡抓包,解析各层协议头
检测引擎
将数据包与规则库进行匹配
日志和报警
匹配成功后记录日志或发出报警
三种工作模式
| 模式 | 说明 |
|---|---|
| 嗅探器模式 | 类似 tcpdump,只是抓包并显示 |
| 数据包记录器模式 | 抓包并记录到磁盘 |
| 网络入侵检测模式 | 抓包 + 规则匹配 + 报警(最常用) |
规则语法(必考)
动作 协议 源IP 源端口 方向 目的IP 目的端口 (选项)
示例:
alert tcp any any -> 192.168.1.0/24 80 (content:"attack"; msg:"Web Attack Detected"; sid:1000001;)
含义:任何来源向 192.168.1.0/24 的 80 端口发送 TCP 包,且内容包含 "attack" 时报警。
规则头要素
| 要素 | 可选值 | 说明 |
|---|---|---|
| 动作 | alert, log, pass, activate, dynamic | alert=报警+记录,log=只记录,pass=忽略 |
| 协议 | tcp, udp, icmp, ip | 检测哪种协议 |
| 方向 | -> 或 <> | 单向或双向 |
| IP/端口 | 具体值或 any | 源和目的地址 |
常用规则选项
| 选项 | 作用 |
|---|---|
msg | 报警消息文本 |
content | 匹配数据包中的特定内容 |
flags | 匹配 TCP 标志位(SYN, ACK, FIN 等) |
sid | 规则唯一标识号 |
itype | ICMP 类型 |
dsize | 数据包负载大小 |
检测实例
检测 ICMP 大包 Ping(Ping of Death):
alert icmp any any -> any any (dsize:>800; msg:"ICMP Large Packet"; sid:1000002;)
检测 NMAP TCP SYN 扫描:
alert tcp any any -> any any (flags:S; msg:"Possible NMAP SYN Scan"; sid:1000003;)
检测 NMAP XMAS 扫描:
alert tcp any any -> any any (flags:FPU; msg:"Possible NMAP XMAS Scan"; sid:1000004;)
检测 NMAP NULL 扫描:
alert tcp any any -> any any (flags:0; msg:"Possible NMAP NULL Scan"; sid:1000005;)
8高级检测技术
神经网络异常检测
两种常用模型:
- MLP(多层感知器):标准前馈神经网络,输入 → 隐藏层 → 输出
- CMAC(小脑模型关节控制器):联想记忆网络,适合模式分类
工作流程:收集正常流量 → 提取特征 → 训练网络 → 偏离正常模式时触发报警。
状态转换分析(STAT)
将攻击建模为有限状态机:从初始状态经过一系列中间状态到达入侵状态。每个转换对应一个系统事件。
9IDS 部署策略
四种典型部署位置
| 位置 | 检测内容 | 说明 |
|---|---|---|
| 防火墙外部 | Internet 上的所有攻击尝试 | 能看到最多攻击但噪音最大 |
| DMZ 区域 | 针对对外服务器的攻击 | 保护 Web/邮件等公开服务 |
| 防火墙内部 | 穿过防火墙的攻击 | 过滤了外部噪音,关注真正威胁 |
| 内部网络 | 内部攻击/异常行为 | 检测内部威胁 |
部署注意事项
- NIDS 需要能镜像流量(交换机的 SPAN 端口)
- 高速网络需要考虑性能瓶颈
- 加密流量要在终端或代理处检测
- HIDS 和 NIDS 互补部署效果最好
📋快速记忆总结
检测技术对比
| 异常检测 | 特征检测 | |
|---|---|---|
| 原理 | 偏离正常 = 入侵 | 匹配特征 = 入侵 |
| 未知攻击 | 能检测 | 不能检测 |
| 误报率 | 高 | 低 |
动作 协议 源IP 源端口 -> 目的IP 目的端口 (选项)常用动作:alert / log / pass
常用选项:msg / content / flags / sid
🎯本章自测
alert tcp any any -> any any (flags:FPU; ...) 检测的是?