下一代ML IDS:Suricata如何训练模型实现高效入侵检测
现代入侵检测系统(IDS)由于依赖基于签名的分析,难以识别新型和变种网络攻击。机器学习(ML)的进步为此提供了一个有前景的解决方案,但在实际网络中部署ML IDS面临挑战,尤其是在标记数据生成方面。本文将探讨一种创新的方法,即利用Suricata记录的安全事件数据来训练模型,从而构建ML IDS并提升防御效能。
入侵检测系统的演进:从签名到智能
应对网络攻击的信息安全工具包括防火墙、基于网络和主机的入侵检测系统(IDS)、下一代防火墙(NGFW)以及安全信息和事件管理(SIEM)系统。尽管种类繁多,但大多数工具都依赖基于签名的分析,这种方法能有效识别已知威胁,但对新型或变种攻击却束手无策。这一根本性弱点凸显了开发具备启发式或智能检测能力的ML IDS的紧迫性。
构建网络级ML IDS的任务通常有两种主要方法:
- 网络流量分类: 将流量划分为“正常”和“攻击”(可能包含攻击子类别)。这需要一个标记数据集,但在实际场景中,由于伦理、基础设施和方法论的限制,这极具挑战性。在不损害现有基础设施的情况下,创建受保护资源的精确模型或收集攻击数据是一个重大障碍。
- 异常检测: 在只了解“正常”流量的情况下,识别异常的网络连接或数据包。这种方法对标记数据的要求较低,但可能会导致较高的误报率。
现有研究通常表明,在受控实验室环境中训练和测试的ML IDS模型具有高精度。然而,当这些模型部署到实际网络中时,性能会显著下降。这是因为用于训练的特征向量通常严重依赖于数据收集时的物理网络结构、硬件配置以及网络服务的具体情况。测试环境和生产环境之间这些参数的差异会导致分类错误,并降低模型的整体准确性。
假设与方法论:Suricata作为知识源
鉴于这些局限性,本文作者旨在确定是否可以在已运行的网络上,利用无需对资源进行蓄意攻击的数据来构建有效的ML IDS。核心假设是,利用传统入侵检测系统(如Suricata)记录的安全事件进行数据集标记是可行的。这种方法绕过了生成标记数据的挑战,并有望增强ML IDS对实际环境的适应性。
为了验证这一假设,开发了一款名为session_analyzer的专有工具。该工具旨在为每个网络连接计算网络流量的特征向量值。值得注意的是,session_analyzer类似于流行的CICFlowMeter(前身为NTLFlowLyzer),但已针对特定的研究任务进行了调整。最初,它专注于TCP协议,但其架构允许将分析扩展到其他协议。
session_analyzer中特征向量生成的原则
session_analyzer在分析网络流量和提取有意义的特征时遵循严格的规则,这些特征随后用于训练机器学习模型。这些原则确保了生成数据的一致性和相关性。
- 协议过滤: 仅分析来自Ethernet II、MPLS、VLAN、IPv4、TCP、UDP和ICMPv4协议的数据包。所有其他链路层、网络层和传输层协议均被忽略。
- 网络会话识别(流ID): 每个会话都使用一个五元组(5-Tuple)序列进行唯一标识:目的IP - 源IP - 目的端口 - 源端口 - 协议。
- 网络会话定义: 会话被定义为属于单个TCP连接、UDP流或ICMP流的数据包序列。通过匹配五元组地址信息(无论是正向还是反向)来确定数据包是否属于某个会话。
- TCP会话开始标准: 仅当收到第一个带有SYN=1和ACK=0标志的数据包时,才注册TCP会话。此数据包也决定了数据传输方向(客户端-服务器)。
- UDP/ICMP会话开始标准: 当出现带有新标识符的第一个数据包时注册。方向确定可能存在错误,例如,当观察到第一个DNS响应时。
- 网络会话结束标准(超时): 为所有会话类型提供了从最后接收到的数据包开始的超时机制。可配置的默认值:
tcp_session_timeout = 60000毫秒,udp_session_timeout = 60000毫秒,icmp_session_timeout = 60000毫秒。 - TCP会话结束标准(终止标志): 额外监控RST或FIN数据包。收到RST后,会话被视为关闭。收到FIN后,将启动一个跟踪双方确认(ACK)的机制。
- 网络数据包流(Flow): 单个会话内数据包的严格序列,不考虑方向。
- 前向数据包流(Fwd): 会话内从客户端到服务器的数据包的严格序列。
- 后向数据包流(Bwd): 会话内从服务器到客户端的数据包的严格序列。
- 网络会话持续时间: 可以通过两种方式计算:从会话中的第一个数据包到最后一个数据包,或者从第一个到最后一个带有有效载荷数据(payload > 0)的数据包。参数
is_need_calc_duration_by_last_payload控制此行为。 - 网络会话流(Stream): 单个源IP与特定网络服务(目的IP | 目的端口 | 协议)之间的一组会话。
stream_id通过连接这四个组件形成。带有“Stream”前缀的特征描述了并行会话、它们的创建时间以及它们之间的时间间隔。 - 流中的“独立”会话: 如果会话创建之间的时间超过
session_simple_timeout(默认60000000微秒),则这些会话被认为是独立的。 - 流中会话之间的时间间隔:
* session_time_prev_absent:当前会话与前一个会话之间的时间间隔。如果当前会话是第一个,或者间隔超过阈值,则设置session_time_prev_absent的值(默认60000000微秒)。
* session_time_next_absent:当前会话与下一个会话之间的时间间隔。如果当前会话是最后一个,或者间隔超过阈值,则设置session_time_next_absent的值(默认60000000微秒)。
这些详细的规则使session_analyzer能够生成丰富的特征集,可用于训练ML模型。利用Suricata进行标记,可以将这些特征与特定的已检测威胁关联起来,从而在无需实际攻击的情况下创建标记数据集。这为构建更具适应性和准确性的ML IDS铺平了道路,使其能够在真实网络基础设施的动态和独特条件下有效运行。
该方法的优势与局限性
利用Suricata进行数据标记具有以下几个主要优势:
- 数据真实性: 训练基于Suricata记录的实际流量和真实事件,从而增强了模型的相关性。
- 资源效率: 无需昂贵的测试平台来模拟攻击或在生产系统上进行攻击。
- 适应性: 模型在特定网络的数据上进行训练,使其能够更好地适应流量和设备的独特特征。
然而,也存在局限性。标记的质量直接取决于Suricata的有效性及其签名的时效性。如果Suricata未能检测到新的攻击,该攻击将不会在数据集中被标记,ML模型也无法学会识别它。此外,session_analyzer的特征生成过程本身可能消耗大量资源。尽管如此,这种方法在解决为真实生产环境创建可靠且适应性强的ML IDS的挑战方面,仍代表着一个重要的进步。
关键要点
- 传统IDS由于其基于签名的方法,容易受到新型和变种攻击的影响。
- ML IDS前景广阔,但需要标记数据,这在实际场景中难以获取。
- 利用Suricata事件进行数据集标记,可以在不进行攻击的情况下,用真实流量训练ML IDS。
session_analyzer工具根据14项原则为网络会话生成详细的特征向量。- 这种方法增强了ML IDS对真实网络独特特征的适应性,但其有效性依赖于Suricata检测的质量。
— Editorial Team
暂无评论。