免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1466 | 回复: 0
打印 上一主题 下一主题

网络内容审计关键技术 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-03 19:36 |只看该作者 |倒序浏览
1   高效截包技术:
目前有许多著名的截包分析程序都建立在Libpcap的基础上,如tcpdump,ethereal,snort等。但在高速的网络中,特别是当应用程序需要截取大量完整的网络数据时,以Libcap为架构的截包技术往往是不可行的。这是因为截包和包分析,特别是包分析消耗大量的CPU周期,可能导致数据包丢失。CPU周期也称为机器周期。通常用内存中读取一个指令字的最短时间来规定CPU周期。一个CPU周期时间又包含有若干个时钟周期。
    这种基于网络数据包的审计系统,如果丢包率太高,后面的会话重建、协议分析将无法进行,系统将失去意义。所以,是否能高效截取所有数据包是整个审计的基石。采用Linux作为截包的操作系统,其内核是可以定制、修改的。
     
    在Linux一2.4.x以后的版本中,Libpcap是通过内核中pf-packet模块实现其截包和包过滤功能的。数据包直接从内核接收队列获取,并传递到用户空间。为了提高截包性能,包过滤采用BPF'(Berkeley Packet
FILTER
,伯克利包过滤器),他是一种用于Unix内核的包过滤机制,具有非常高的性能。为了减少数据从内核到用户空间的拷贝花销,必须在内核中过滤掉不进行审计的数据包,减少数据拷贝,节省的CPU周期可以留给数据包分析使用。完成一次系统调用或从内核拷贝数据到用户空间(通常是应用程序的缓存)的系统花销是很大的。使用Libpcap-mmap替代Libpcap作为截包库。Libpcap-mmap是Libpcap的特殊版本,采用mmap系统调用,将数据从内核传递给用户空间。文献[1]指出采用Libpcap-mmap比标准的Libpcap在截包性能上有所提高。
     
    另一个可能造成丢包的原因是,应用层对数据包分析的周期过长。这个周期指的是,数据包从内核空间拷贝到用户空间后,应用层对其进行分析、操作等一系列动作所用的CPI.『周期。因此,应该尽量缩短数据包在应用层的处理周期。在网络流量突然增大的情况下,由于在内核中,例如Linux一2.4.20缓存数据包的空间最大是6 5 5 3 5*2 B,数据包分析周期过长,应用程序不能快速读取内核的数据包队列,致使内核缓存不够,内核只能丢弃新到的数据包。鉴于网络流量的阵发性,所以增大Linux内核pf-packet模块的接收缓存,可以避免这种丢包现象。这也是解决丢包的一种方法。
2   会话重建技术
     
    会话重建是审计系统中的重要环节。分析数据包的特征,并基于会话对数据包进行重组,去除协商、应答、重传、包头等网络信息,以获取一条基于完整会话的记录。基于Libpcap的截包应用程序都是截获原始的网络数据包。因此,基于Libcap的网络审计系统,必须进行IP碎片重组、TCP数据流的重组。对此,模拟了TCP/IP,协议栈,实现会话重建。会话重建可以有多种并行处理办法:
     
    (1)对LAN的主机进行分段处理
     
    这种方法均衡性很差,因为各主机的流量很难预测,这会导致有些线程忙碌,有些很空闲,多线程的效果一般。
     
    (2)真正负载均衡
     
    数据包均衡分发到各个TCP重组线程,但这种方法涉及到共享数据的同步访问,需要互斥机制,这样就增加了许多系统花销,还会带来共享资源的等待问题,这些都'影响了系统的性能,实现起来也很复杂。
     
    (3)会话处理均衡
     
    同一会话的数据交给同一线程处理,这样多个线程无需同步,而且负载均衡的效果比方法(1)有明显的改善,结合了上述两种方案的优点。
     
    在系统实现中,采用会话处理均衡的方法。经过IP重组的数据包,传给数据分流器,同一会话的数据包分流到不同的TCP重组引擎进行处理,提高了会话重建的能力。每个TCP重组引擎都有一个自己的数据包缓冲区,存放IP包。缓冲区采用静态环形队列,避免了数据同步,且减少了内存的分配和释放的系统开销,从而提高了整体性能,这是提高并发处理性能的关键技术之一。
     
    此外,在模拟TCP/IP协议栈的过程中,使用高效的查找算法--哈希算法也是高效实现会话重建的关键之一。
     
    在TCP流的重组中,定义了一个四元组。以这个四元组来构造会话文件,文件名为:目的地址.目的端口一源地址.源端口,例如文件名:
     
    1 91.1 92.1 93.1 94.025 6 6一01 5.01 6.01 7.01 8.011 80
    存储从主机1 91.1 92.1 93.1 94端口2566传送到主机1 5.1 6.1 7.1 8端口11 80的会话内容。 .
     
    把数据流存为会话文件有许多好处:恢复到真实的数据流,可以作为原始数据保留,用于违规审计及事后取证等;在需要会话重现的时候,再进行读取分析;从文件名可以很直观得到通信双方的标识(主机地址)及采用的协议(端口号);非常便于运用多线程技术进行分析。
3 多线程协议还原技术
     
    在应用程序的开发过程中,使用多线程技术有很多优点,多个任务并发执行,可以改善这个系统的性能。
     
    (1)线程的系统开销比较小。
     
    (2)同一进程下的线程之间共享数据空间。
     
    (3)在多处理器计算机上实现多线程时,线程可以并行工作,提高程序执行效率。例如,使用多线程技术的网络蚂蚁(Netants)是目前最常用的下载工具之一,使用多线程技术的grep比单线程的grep要快上几倍。
     
    在应用层的网络协议中,不同的协议通常绑定特定的端口号。根据端口号,可以得到对应的应用层协议,依据协议的RFC文档,就可以对多个会话文件并发处理,进行协议还原。系统中采用负载均衡算法。每个协议还原引擎都有一个BUSY/IDLE状态位,初始状态为IDLE,由还原程序主模块进行任务分发,把会话文件池中的文件分给IDI。E线程,并将该线程状态置为BUSY。当该线程完成还原任务后,将状态置为ID[。E。这样,多个线程可以同时进行协议还原,生成协议文件。这种算法简单而且有效。利用这种算法,结合多线程技术,实现了}ITTP,FTP,'I'EI.,NE2',SMTP,POP3等协议的分析还原。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/70469/showart_725138.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP