王昕光
(吉林电视台,吉林 长春 130000)
有线电视台的网路安全,不同于一般单位可以通过 防火墙等系统避免网络攻击等网络防护,其网络安全主要是通过监控非法信息发布于内容受控访问等措施实现的,这些特殊要求不容易通过通用软件解决。本文结合电视台网络的特点,设计并实现了一个用于监视有线电视台网络安全的软件系统,该系统采用嗅探器原理对网络上所有信息进行监视,捕获网络上所有数据并通过对网络数据包进行协议分析后解析其信息,把解析出的信息在监视端上显示,以此达到网络监控管理的目的。
以太协议是目前局域网普遍使用的协议,其工作方式是:对所有互联网联机的主机发送数据包,数据包中含有对数据包进行接收的主机的正确地址。只有与数据包中的数据相匹配的主机才能对其进行接收。但是,如果主机在被监听的状态下,将会对数据包进行接收并且忽略数据包中的目标地址。
在使用以太网的局域网中,主机将电缆和集线器连接在一起,当两台主机处于局域网通信的状态下,目的主机直接接收源主机内写有目的的主机地址的数据包。对于IP 层来说,这种数据包是不允许被直接发送的。必须由因特网互联协议中 的IP 层交给网络接口,即数据链路层。而IP 地址不能对网络接口进行识别,所以一部分以太帧头的信息又传送到网络接口的数据包之中。识别网络接口的源主机和目的主机的物理地址组成了帧头中存在的两个域,这是一个四十八位的地址且与IP 地址相适应。
局域网中数据的传输工程过程是:物理线路通过网卡接收拥有物理地址的帧,可以在电缆上传输数字信号,使其可以到达线路上的每台主机中。当集成器处于工作状态,集线器上每台主机都可以接收到数字信号。当一台主机的网络接口接收到数字信号的时候,一般情况下,数据帧在网络接口处被读取并对其进行检查,如果数据帧携带的物理地址是属于自己的地址或者是一条广播地址,那么就有上层协议软件“接收”数据帧,即处于IP 层的软件,否则会丢失该帧。
网络接口的工作有以下几种方式:广播、多播、直接和混杂模式。在混杂模式下工作的网络接口,可以接收流过网络接口的帧。在这种模式下,信包捕获程序开始运行。广播模式和直接模式共同构成网络接口的缺省工作模式。其对发给自己的帧都不会被网络接口丢弃而由上层协议软件进行处理,这样就可以对网络信息进行监视和捕获。
软件系统主要包含两个模块:捕获数据包和分析数据包,系统基本流程:开始→获取本地网卡信息→打开设备,把网卡设置成混杂模式→获取网络包→分析捕获的数据包→释放空间,关闭网卡→结束。
第一,对系统进行初始化,使用原始套接字设置网卡为混杂工作模式。在创建了原始套接字后,需要通过setsockopt 函数来设置IP 头操作选项,接着在通过bind 函数将原始套接字绑定本地网卡。为了让原始套接字可以接收所有的数据,还需要通过ioctlsocket 函数来进行设置,而且还可以指定是否亲自处理IP 头。实际上就是能对网络数据包进行捕获了,对数据包的捕获可以想流式套接字或数据报套接字那样通过recy 函数来完成。
使用Winpcap 来实现对数据包细节的捕获,Winpcap 是由伯克利分组捕获库派生而来的分组捕获库,他是在Windows 操作平台上来实现对底层包的截取过滤。
第二,利用Winpcap 进行网络数据包的捕获和过滤的设计步骤:(1)应用pcap_findalldevs 函数枚举本机网卡的信息;(2)打开网卡,并设为混杂模式;(3)回调函数Network Tap 在得到监听命令后,从网络设备驱动程序处手机数据包,并把监听到的数据包负责传送给过滤程序;(4)当Packet filter 监听到有数据包到达时,NDIS 中间驱动程序首先调用分组驱动程序,该程序将数据传递给每一个参与进程的分组过滤程序;(5)然后由Packet filter 过滤程序决定哪些数据包应该丢弃,哪些数据包应该接收,是否需要将接收到的数据拷贝到相应的应用程序;(6)通过分组过滤器后,将数据未过滤掉的数据包提交给核心缓冲区,然后等待系统缓冲区满后,再将数据包拷贝到用户缓冲区,监听程序可以直接从用户缓冲区中读取捕获数据包;(7)关闭网卡。
第三,协议分析模块的实现。这时候捕获到的数据包不仅仅是单纯的数据信息,而是包含了IP 头、TCP 头等信息头的最原始的数据信息,这些信息保留了它在网络传输的原始数据。因为这些数据是经过了网络层和传输层的打包,需要根据其附加的数据段头对数据包进行分析。数据在从应用层到达传输层,将添加TCP 数据段头或者UDP 数据断头,在网络层,还要给TCP 包头添加一个IP 数据段头组成IP 数据报,由于本课题主要是以网络层上的一层的角度分析数据包,所以只需考虑数据被加了TCP 数据断头或者UDP 数据断头的情况,其中UDP 数据断头比较简单,由一个8 字节的头和数据部分组成,而TCP数据段 头比较复杂,以20 个固定字节开始,在固定头后面还可以有一些长度不固定的可选项,所以在设计过程中,选择将所有的头均看成20 个字节,判断过程中,如果是TCP 段头,直接进行处理,20 个字节均被解包在数据段头中,如果是UDP 段头,就按照8 个字节的数据段头处理,其他12 个按照空处理,不进行分析。这样,在参数传递过程中,包头就按2O 个字节的常量进行处理。协议分析模块按照各层协议的数据结构把数据包一层一层的解析就可以了。
对于网络监视系统而言,它实现了对全网络的内容进行有效监控,从而成为有线电视台在计算机网络方面的监控辅助工具。这种功能的实现有一定的实际使用价值。目前,人工参与识别信息还在该系统进行运用,但随着模式识别和对数据进行挖掘的技术日渐成熟,可以实现对视频和音频信息的自动识别和全自动预警,从而实现节约人力成本的目的。
[1]郭强,王志强.有线电视台网络监视系统的设计与实现[J].中国有线电视:社会科学版,2009,10:1061-1063.
[2]吕倩,谭邦.网络监视系统设计与实现[J].南华大学学报:自然科学版,2011,S1:89-93.
[3]曹晓梅,王能.层次式网络性能监视系统的研究与实现[J].计算机应用,2009,08:114-116.