基于通用协议分析引擎的内核级透明代理方法
技术领域
本发明涉及一种内核级透明代理的实现技术,是基于通用协议分析引擎的内核级透明代理,特别涉及一种具有高可配置可扩展性的通用协议分析引擎,属于计算机网络安全领域。
背景技术
通常的代理都在操作系统应用层实现,但是这种做法效率低下,并且在做NAT的时候要和位于内核中的包过滤模块交互,增加了程序处理的复杂度。因此,将代理放在系统内核中实现是一种很好的解决方案。
此外,目前应用代理一般都是为每种协议开发一个分析程序,虽然具有一定的可扩展性,但开发测试的代价都比较高,利用有限状态自动机的机制,对协议会话状态和通信数据特征进行抽象,可以很好地解决这个问题,并且在实现效率上也比用普通模式匹配算法实现的协议分析程序要高。
发明内容
本发明的目的在于,提供一种和包过滤紧密结合的内核透明代理的实现方法,它使得防火墙代理具有更高的处理效率;在安全策略检查方面和包过滤前后相承,无需重复的检查和数据包的复制;并对用户具有透明性,无需额外配置,也不必改变原有网络结构,既支持网关模式也支持网桥模式。
本发明的另一目的在于,使用通用协议分析引擎替代普通的常用协议分析程序,不但对协议分析更精确,效率更高,在对协议支持的扩充方面也具有很高的灵活性、可配置性和可扩展性。
本发明的目的是这样实现的:内核透明代理的实现方法,即基于通用协议分析引擎的内核级透明代理方法,至少包含以下几个步骤:
步骤1:包过滤模块在链路层和IP层,对通过的数据包进行安全检查;
步骤2:根据安全策略将数据包转发、丢弃或送交内核代理;
步骤3:内核代理在确认用户身份后,继续进行安全检查;
步骤4:对符合安全策略的,内核代理代替目标服务器同用户建立连接;
步骤5:内核代理将用户发来的请求传送通用协议分析引擎进行协议判定;
步骤6:内核代理根据安全策略决定是否建立与目标服务器的连接;
步骤7:对符合安全策略的连接,内核代理在内外两条连接间进行代理转发,并将所有通过的数据送通用协议分析引擎进行分析检查。
本发明的改进在于:在此基础上,实现内核透明代理与包过滤一体化的安全检查方法,使两者共用同一安全策略表,分析同一个未经复制的数据包,并且代理可接着包过滤分析到的检查点继续进行安全策略检查。
包过滤发现数据包需要代理处理后,要提供对应用代理的支撑,通过对skb中的相关项进行修改,利用协议栈实现专用通道将待处理数据包传送到TCP层内核代理。
内核代理首先要确认用户身份,它利用工作于操作系统应用层的身份认证系统,代理通过内核接口获得已认证用户的信息,用户一次认证可持续使用;对未认证用户,代理在返回认证失败提示的同时,通过网络触发用户认证客户端弹出请求认证的窗口,提请用户到防火墙进行身份认证。
之后,内核代理使用通用协议分析引擎,用通用的调用接口和程序,对当前连接的应用层协议进行判定和监控,使得代理的协议判定不仅仅依赖于连接的目标端口。
该通用协议分析引擎,用经过抽象的协议通讯数据特征,代替对不同协议进行分析的编码,用统一的分析程序依据协议特征库进行分析,提高协议支持的可配置可扩展性。它还使用有限状态自动机的机制,对协议会话状态进行抽象,根据对数据流的特征分析进行状态转换,对应用层协议会话过程进行分析控制,由此实现应用层协议命令监控等细粒度访问控制。此外,还是用使用语法分析表对数据流进行协议分析,该表对通讯数据特征进行抽象,在分析具体数据流时,可实现无回溯的快速匹配。
本发明在操作系统内核协议栈中实现了包过滤和应用代理的协同工作,减少了重复的安全检查以及额外的数据包复制,具有很高的工作效率,结合NAT也实现了对用户的透明性,使得用户无需额外配置,支持网关/网桥双模式,不必改变用户原有网络结构。通用协议分析引擎的引入,使得对新应用协议支持的更加简便,无需为新协议分析代码的编写和测试提供额外开销,在效率上也由于采取了更好的算法具有更高的性能。
附图说明
图1为本发明的包过滤预处理的流程图;
图2为本发明的包过滤提供的应用代理支撑的流程图;
图3为本发明的内核代理安全策略检查的流程图;
图4为本发明的内核代理模块的结构图;
图5为本发明的通用协议分析引擎对SMTP协议进行特征抽象的有限状态自动机示例;
图6为本发明的一个对HTTP协议GET/PUT/POST命令抽象的语法分析表的示例。
图7为本发明流程图
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的详细说明:
本发明主要包含两方面的技术要素:在操作系统内核中实现的、与包过滤紧密结合的透明代理的实现;以及透明代理中使用的通用协议分析引擎。图1、图2、图3,主要说明本发明中描述的与包过滤紧密结合的内核透明代理的工作流程;图4说明了该透明代理的主要组成与结构;图5给出将一个协议的会话流程抽象为有限状态自动机的例子;图6则给出一个构造语法分析表的简单实例。
具体的,参见图1,包过滤模块截获网络数据包之后,在链路层和IP层对数据包进行分析转发,并在策略树中查找相应的安全策略分支。根据查找的结果,对数据包进行转发/丢弃处理,对需要代理处理的发送应用代理支撑函数进行处理。
参见图2,应用代理支撑函数首先在全状态表中添加本连接信息项,然后在skb中将代理模式置位,并记录原目标地址,接着取接收该数据包的网卡地址填充在目的地址字段,并重新计算数据包校验和,这样数据包就进入了协议栈的一个专用通道,经由这个通道数据包可到达位于TCP层的透明代理,此外,针对网关和网桥两种模式在连接建立时要做不同的处理,网关模式下要变换socket中的域,以便数据包能从TCP层返回,网桥模式下则要实时生成伪输入路由和伪输出路由,使得数据包可以经过TCP层。
参见图3,应用代理在收到新连接的数据包时,首先对数据包来源的用户身份进行认证,这个过程要借助操作系统应用层的认证程序完成,用户在使用代理前要先用专用客户端进行身份认证,使用完毕后手动选择或一定时间内没有数据通过防火墙,该用户被注销登录,在此期间,代理可通过内核接口获得用户认证信息以确定用户身份,如当前用户未认证,则发UDP包到认证客户端提示用户进行认证,并同时拒绝当前连接;认证完成后,代理从skb读当前连接信息,包括包过滤已经匹配到的安全策略检查点,从这点开始,代理继续进行应用层的安全审查,其间将数据转交通用协议分析引擎进行协议分析、细粒度访问控制以及内容过滤等工作,分析结束后决定是否对当前数据进行转发。
参见图4,包过滤和内核代理相结合的系统结构图,包过滤提供数据包以及当前检查点给内核代理,内核代理调用身份认证接口获得用户身份信息,并继续包过滤未完的安全检查,然后将数据交通用协议分析引擎按协议库中配置的协议特征进行分析,并将需要的部分送内容检查函数进行内容过滤,最终返回审查结果给内核代理,内核代理进行相应的转发或者拒绝连接的操作。
参见图5,一个简化的SMTP(简化邮件传输协议)协议通信状态转换图示例,从初始状态Initial State开始,每次收到客户端命令时,进行一次状态转换,经过发出邮件send、接收邮件received和,reset表示复位,可以随时监控当前命令、以及它是否合乎会话状态,进行这样的抽象之后,任意的应用协议(经过加密处理的除外)都可以有限状态自动机的形式放入协议库,用通用的分析程序进行解析。Send Data发送文件,Have Messag表示有消息。
参见图6,用于分析协议命令的语法分析表示例,该算法用于对数据流进行无回溯的匹配,其中,ξ-Find为通配符,代表任意的字符串,Δ1Δ2为限界符,代表有该字符串出现时前面的通配符作用域结束,在这里,Δ1为空格、Δ2为回车换行”\r\n”。经过这样的匹配当到达end时,即可得出当前的命令或者发现语法不符合协议规定的结论。
最后应当说明:以上实施例仅用以说明本发明而并非限制本发明的技术方案,尽管参照上述的各个实例对本发明已经进行了详细地说明,但是,本领域的普通技术人员应当理解,仍然可以对本发明进行修改或者等同替换,一切不脱离本发明的精神和范围的技术方案及其改进,均应涵盖在本发明的权利要求范围当中。