从netfilter总体结构入手,分析了netfilter的连线跟踪、包过滤、地址转换、包处理等关键技术。在此基础上,研究了入侵响应策略,提出了基于netfilter的主动响应模型。经测试证明,这种主动响应模型灵活高效,可以极大地增强系统对入侵行为的防御能力。关 键 词 连线跟踪; 入侵响应; 主动响应; 入侵行为重定向当前,网络攻击技术和攻击工具表现出攻击速度加快和攻击工具自动化的新趋势,工具越来越复杂,系统脆弱性探测速度加快,对防火墙的渗透显著增多,针对网络基础设施的攻击不断增加。针对攻击,要求动态地调整安全策略,自动做出反应。netfilter是Linux内核中用于扩展各种网络服务的结构化底层框架,新的响应特性加入到内核中并不需要重新启动内核。netfilter模块的易扩性,为实现动态安全策略提供了很好的基础。1 netfilter技术分析netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(Network Address Translation,NAT),以及基于用户及媒体访问控制(Media Access Control,MAC)地址的过滤和基于状态的过滤、包速率限制等。1.1 netfilter框架netfilter提供了一个抽象、通用化的框架[1],作为中间件,为每种网络协议(IPv4、IPv6等)定义一套钩子函数。Ipv4定义了5个钩子函数,这些钩子函数在数据报流过协议栈的5个关键点被调用,也就是说,IPv4协议栈上定义了5个“允许垂钓点”。在每一个“垂钓点”,都可以让netfilter放置一个“鱼钩”,把经过的网络包(Packet)钓上来,与相应的规则链进行比较,并根据审查的结果,决定包的下一步命运,即是被原封不动地放回IPv4协议栈,继续向上层递交;还是经过一些修改,再放回网络;或者干脆丢弃掉。Ipv4中的一个数据包通过netfilter系统的过程如图1所示。