基于ARM处理器和LINUX系统的嵌入式网络过滤装置

更新时间:2024-01-20 作者:用户投稿原创标记本站原创 点赞:34775 浏览:158937

摘 要 :本文以网上不良网页信息过滤为目的,阐述了基于ARM处理器的嵌入式过滤系统设计原理,给出了硬件设计结构,分析了不同网络拓扑情况下所应采取的解决方案,利用LINUX协议栈进行数据包捕获过滤软件设计,提出了软件流程,并给出了结论.


关 键 词 :嵌入式过滤捕获

1.前言

近年来计算机网络技术的发展使得互联网得到了广泛的应用,使用互联网的人越来越多,其海量信息资源也给人们带来了方便.然而,使用互联网也会面临着风险,尤其是随着网络以极高的速度发展同时,网络安全技术发展与之并不同步.包含以破坏、窃取为目的的“网络攻击”和以不良信息为载体的“网络毒害”是两个最突出的方面.为了更好的保护网络安全和使用者自身利益,使用强有力的网络防火墙类装置是十分必要的.早期的防火墙基本上是基于数据包过滤手段,可以起到一定的防护作用.然而,采用包过滤手段的防火墙对于基于内容的攻击无效,而在客户机端直接运行基于内容的应用层软件会影响网络速度,因此,开发合理的网络过滤系统是解决这类问题的关键.嵌入式技术是近年来发展起来的一门新兴技术,采用嵌入式技术解决方案的系统具有实时性好、运行效率高等优点.嵌入式网络协议栈的完善使得采用嵌入式网络系统构建嵌入式过滤装置成为可能.本文介绍采用S3C2440 ARM嵌入式处理器和LINUX操作系统构建嵌入式网络过滤装置的解决方案.

需要防护的计算机与Inter的连接方式较多,但具体到被防护的单体计算机不外乎以下几种连接方式:(1)通过路由器连接;(2)通过交换机连接;(3)通过集线器连接.通过路由器连接和交换机连接方式的计算机,由于每个端口都有单独的冲突域,所以过滤装置只能接收到发往本机的网络数据.而通过集线器相连的计算机,由于有共同的冲突域,则一个过滤装置可以监听到全部冲突域内的网络数据.由此,确定系统可以以两种模式工作.一种为防护方式,即嵌入式过滤装置连接在Inter和用户计算机中间,主要用于连接方式(1)和(2)的计算机.另外一种为监视方式,主要针对连接方式(3)的计算机,嵌入式过滤装置挂接在集线器端口.防护方式主要完成以下几项内容:1)指定MAC地址过滤;2)指定IP地址过滤;3)数据包敏感内容过滤.监视方式则根据原则监听指定的MAC地址、指定的IP地址或网段IP地址、记录敏感数据包来源和去向.

2.过滤系统原理

通过上述分析可知,在工作模式1中系统要完成的主要是,包分析和重建过程.工作模式2中系统主要完成的是数据包的嗅探和分析记录过程.

图1 嵌入式网络过滤系统框图

从图1中可以看出,嵌入式过滤系统位于用户计算机和互联网中间,二者交换的数据要经过过滤系统,从互联网来的含有攻击性信息和不良信息通过嵌入式过滤系统过滤后传输给用户计算机.过滤系统的系统参数和敏感关键字数据等从串行通信口进行装订.通过此端口可以及时的更新过滤关键字和策略.系统工作于模式1时,当存在某些过滤数据库中制定的某些必须限制的地址或敏感关键字数据包发送到用户计算机时,过滤系统自动将此类包丢弃,这样可以保证在一定范围内符合使用者要求.对于无威胁的数据包,由于已被过滤系统读取,因此,过滤系统需要重新构造此数据包,发送给被防护计算机,不影响其正常工作.对于工作于模式2的系统,则只进行嗅探分析和记录,并不直接截获数据包.上述工作模式1的流程图见图2.

图2 工作模式1的流程

实际上,上述简述的过滤过程中,对于地址和敏感信息的过滤处于网络协议中的不同层次.要进行地址过滤的MAC地址、IP地址分别处于数据链路层和网络层,而敏感信息内容则处于传输层的TCP和UDP包中.因此,对于不同类型的过滤内容要分开处理.获取的顺序为:原始数据帧—IP包(同时获得IP、MAC地址)--TCP和UDP包.获取了上述数据后,即可实现对存在于MAC和IP地址黑名单中的数据包进行屏蔽,也可以对TCP和UDP包的数据内容进行分析处理.

3.过滤系统的实现

嵌入式网络过滤系统的实现可分为硬件和软件两部分.硬件系统框图如图1所示.图3给出了基于S3C2440 ARM处理器的过滤系统框图.

图3基于ARM S3C2440的过滤系统硬件框图

从图3中可以看出,过滤系统包含四个组成部分,其中:ARM处理器是系统的核心,承担着事务管理、数据处理等任务.存储模块主要包括FLASH存储器和SDRAM,其中FLASH用来存储程序,SDRAM则提供程序运行所需的内存空间.以太网接口部分包含两个标准网络接口,其中一个网口接收网络数据包交由CPU处理,再通过另外一个网口传送给PC机.串口调试电路包括串口电路和JTAG调试电路.UART串口是用户界面与ARM平台沟通的通道;通过JTAG接口可以向系统进行FLASH烧写和调试等工作.

LINUX系统移植到ARM处理器核心系统工作已经较为成熟,可以较为容易的实现系统的自举和应用程序的运行.而过滤系统的工作基础是底层数据帧的无差别接收,因此,在系统内核裁剪过程中要进行相应的设置.在默认情况下编译LINUX核心,系统的协议栈是不支持原始数据包捕获,即PACKET_SOCKET这一模式的,因此需要再重新编译系统核心,使之支持原始数据包捕获和网卡混杂模式功能.使网卡进入混杂模式可以通过编程实现,也可以将如下命令写入用户批处理中.

ifconfig eth0 promisc

在程序当中,需要使用如下语句设置SOCKET格式来完成上述功能.

int sockfd;

sockfd 等于 socket(PF_PACKET,SOCK_RAW,htons(ETH_P_IP));

上述语句用于在网卡进入混杂模式后,接收全部网络数据帧.然后通过如下语句实现数据帧的接收捕获.

rxbyte 等于 recvfrom(sockfd,Buffer,4096,0,0,0),

获得原始数据帧后,即可通过对帧数据的扫描实现数据包的获取.数据帧前的14个字节包含的是源MAC地址和目的MAC地址,14字节之后才是真正的ip数据包.数据包中对过滤较为重要的是32位的源IP地址、32位的目的IP地址以及数据段内容等数据.本系统仅设计对IP V4格式的数据帧进行支持.获取得到的MAC地址和IP地址通过与串行口装订的数据进行对比扫描,如果为非法地址则丢弃数据包.如果是合法数据包,就去的数据段进行内容的扫描.如果内容中包含不良信息或装订中规定的非法关键字,则丢弃数据包.如果均未发现异常,则说明该数据包是合法数据包,应该使其通过验证.由于分析数据包的时候将原始数据包分解了,所以要将其构造好重发到PC机上.如图4所示为以发送TCP包为例的数据包发送程序设计流程图.

图4 TCP数据包重构发送流程

重新构造和发出数据包的原理是按照TCP协议栈格式,配合数据包大小、个数和发送速率等参数,计算生成数据包并发送.在每两次发送的间隙进算延时,重复上述过程,直到整个数据缓冲区发送结束.

通过上述过程,可以实现对不同连接形式网络的网络数据过滤和记录过程,大大提高了系统的安全性.

4.结语

ARM9处理器配合LINUX操作系统,可以构建嵌入式的网络过滤装置,ARM核心为事物密集型,可以处理数据采集发送存储等工作,LINUX操作系统有着较强的网络功能,可以从底层设备获取相应的数据帧并进行处理.采用此原理构建的网络过滤装置具有灵活性好、体积小、处理能力强和使用方便等特点,适合有一定保密需求的单位或为家庭创造良好网络环境之用.