




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要防火墙是网络平安研究的一个重要容,数据包捕获是包过滤型防火墙的前提,本文对基于linux主机的个人防火墙的数据包捕获模块进展了研究,重点论述数据包捕获模块的构造、组成以及功能。首先对信息平安及防火墙的重要性进展论述,并给出防火墙的详细分类;然后分析了基于linux主机的个人防火墙总体设计及软硬件平台原理,接着论述linux下的数据包捕获模块构造与原理,并详述其具体实现步骤关键词:防火墙linux,数据包捕获模块,包过滤Abstractfirewallnetworksecurityisanimportantcontentoftheresearch,thepacketfilterpacketc
2、aptureisthepremiseoffirewall,thispaperisbasedonpersonalfirewallofhostLinuxpacketcapturemodulewasstudied,andfocusesonthepacketcapturesmodulestructure,positionandfunction.Firsttoinformationsecurityandtheimportanceofthefirewallisdiscussedindetail,andgivesthefirewall.ThenbasedontheanalysisofthemainLinux
3、personalfirewallsoftwareandhardwareplatformandoveralldesignprinciple,thendiscussestheLinuxpacketcapturemodulestructureandprinciple,anddiscussitsspecificimplementationsteps.keywords:firewalllinux;packetcaptures;thepacketfiltermodules目录绪论1第一章LINUX系统2 TOC o 1-5 h z HYPERLINK l bookmark8 o Current Docum
4、ent LINUX系统简介2 HYPERLINK l bookmark10 o Current Document LINUX的特点3 HYPERLINK l bookmark12 o Current Document 第二章防火墙简介5传统防火墙及其缺陷5 HYPERLINK l bookmark16 o Current Document 分布式防火墙5第三章LINUX防火墙的几种常见功能9包过滤9代理9IP伪装11一个LINUX防火墙实例12 TOC o 1-5 h z HYPERLINK l bookmark28 o Current Document 第四章防火墙系统15 HYPERLIN
5、K l bookmark30 o Current Document 4.1防火墙系统总体设计15 HYPERLINK l bookmark32 o Current Document 第五章基于LINUX的数据包捕获模块16 HYPERLINK l bookmark34 o Current Document 基于LINUX的数据包捕获模块构造16 HYPERLINK l bookmark36 o Current Document 基于LINUX的数据包捕获模块原理分析16 HYPERLINK l bookmark38 o Current Document 第六章数据包捕获模块设计19 HYPER
6、LINK l bookmark40 o Current Document 数据包捕获模块设计流程19 HYPERLINK l bookmark42 o Current Document 数据包捕获模块实现19 HYPERLINK l bookmark44 o Current Document 第七章程序中用到的构造体21 HYPERLINK l bookmark46 o Current Document 7.1程序中用到的一些构造体解析21致辞23参考文献:24绪言网络防火墙技术是一种用来加强网络之间控制,防止外部网络用户以非法手段通过外部网络进入部网络,部网络资源,保护部网络操作环境的特殊网
7、络互联设备。它对两个或多个网络之间传输的数据包按照一定的平安策略来实施检查,以决定网络之间的通信是否被允许,并监视网络运行状态。根据防火墙所采用的技术不同,可以将它分为四种根本类型:包过滤型、网络地址转换一net、代理型和监测型。包过滤型产品是防火墙的初级产品,具技术依据是网络中的分包传输技术。包过滤技术的优点是简单实用,实现本钱较低,在应用环境比拟简单的情况下,能够以较小的代价在一定程度上保证系统的平安络地址转换是一种用于把ip地址转换成临时的、外部的、注册的ip地址标准。它允许具有私有ip地址的部网络因特网。代理型防火墙也可以被称为代理效劳器,它的平安性要高于包过滤型产品,并已经开场向应用
8、层开展。代理型防火墙的优点是平安性较高,可以针对应用层进展侦测和扫描,对付基于应用层的侵入和病毒都十分有效。其缺点是对系统的整体性能有较大的影响,而且代理效劳器必须针对客户机可能产生的所有应用类型逐一进展设置,大大增加了系统管理的复杂性。监测型防火墙是新一代的产品,能够对各层的数据进展主动的、实时的监测,在对这些数据加以分析的根底上,监测型防火墙能够有效地判断出各层中的非法侵入。同时,这种检测型防火墙产品一般还带有分布式探测器,这些探测器安置在各种应用效劳器和其他网络的节点之中,不仅能够检测来自网络外部的攻击,同时对来自部的恶意破坏也有极强的防作用。监测型防火墙在平安性上已超越了包过滤型和代理
9、效劳器型防火墙,但其实现本钱较高。基于对系统本钱与平安技术本钱的综合考虑,用户可以选择性地使用某些监测型技术。第一章Linux系统Linux系统简介Linux是一套免费使用和自由传播的类Unix操作系统。我们通常所说的Linux,指的是GNU/Linux,即采用Linux核的GNU操作系统。GNU代表GNUsNotUnix。它既是一个操作系统,也是一种规。Linux最早由LinusTorvalds在1991年开场编写。在这之前,RichardStallman&J立了FreeSoftwareFoundationFSF组织以及GNU工程,并不断的编写创立GNU程序程序的许可方式均为GPL:Gene
10、ralPublicLicense。在不断的有程序员和开发者参加到GNU组织中后,变造就了今天我们所看到的Linux!Linux是一个核。然而一个完整的操作系统不仅仅是核而已。所以许多个人、组织和企业开发了基于GNU/Linux的Linux发行版。今天有不计其数的发行版可供人们选择使用,虽然不够统一的标准给不同版本的使用者在技术上的相互沟通带来了一定的麻烦,但归根结底“自由、开源、团结互助的理念是Linux爱好者们共同的向往。Linux的特点有很多人现在都在学习和研究Linux。作为当今一种新兴和流行的操作系统的前身来源与强大的UNIX。而那个芬兰小伙子一开场就没把它定位成一种操作系统。但是Li
11、nux的作用在今天已越来越重要了。想接触和学习它,就要先了解它的特点。让我们一起来了解一下吧:.自由开源软件首先,Linux可以说是作为开放源码的自由软件的代表,作为自由软件,它有如下两个特点:一是它开放源码并对外免费提供,二是爱好者可以按照自己的需要自由修改、复制和发布程序的源码,并公布在Internet上,因此Linux操作系统可以从互联网上很方便地免费下载得到,这样你还可以省下购置Windows操作系统的一笔不小的资金。且由于可以得到Linux的源码,所以操作系统的部逻辑可见,这样就可以准确地查明故障原因,及时采取相应对策。在必要的情况下,用户可以及时地为Linux打“补丁,这是其它操作
12、系统所没有的优势。同时,这也使得用户容易根据操作系统的特点构建平安保障系统,不用担忧来自那些不公开源码的“黑盒子式的系统预留的什么”后门的意外的打击。而且,Linux上跑的绝大多数应用程序也是免费可得的,用了Linux就再也不用担忧背上“使用盗版软件的黑锅了。.真正的多任务多用户只有很少的操作系统能提供真正的多任务能力,尽管许多操作系统声明支持多任务,但并不完全准确,如Windows。而Linux那么充分利用了X86CPU的任务切换机制,实现了真正多任务、多用户环境,允许多个用户同时执行不同的程序,并且可以给紧急任务以较高的优先级。.价格优势价格其实是影响产品的重要因素,作为开源软件,它的价格
13、优势不言而喻。4多平台支持各种CPU,包括Intel,AMD,ARM,Mips等。.强大的网络功能实际上,Linux就是依靠互联网才迅速开展了起来,Linux具有强大的网络功能也是自然而然的事情。它可以轻松地与TCP/IP、LANManager、WindowsforWorkgroups、NovellNetware或WindowsNT网络集成在一起,还可以通过以太网或调制解调器连接到Internet上。Linux不仅能够作为网络工作站使用,更可以胜任各类效劳器,如X应用效劳器、文件效劳器、打印效劳器、效劳器、新闻效劳器等等。.兼容性高Linux对系统兼容性较高,对硬件要求不是很高。支持很多软硬件
14、平台。.开发功能强Linux支持一系列的UNIX开发,它是一个完整的UNIX开发平台,几乎所有的主流程序设计语言都已移植到Linux上并可免费得到,如C、C+、Fortran77、ADA、PASCAL、Modual2和3、Tcl/TkScheme、SmallTalk/X等。.具有丰富的图形用户界面Linux的图形用户界面是Xwindow系统。如GNOME、KDE。还有SHELL。Xwindow可以做MSWindows下的所有事情,而且更有趣、更丰富,用户甚至可以在几种不同风格的窗口之间来回切换。另外它还支持很多的应用软件,这也是它的一大特性。.得意的“代言物下次大家看到得意企鹅造型的时候,不只
15、是要联想到QQ。其实Linux也是的哦。10平安性和稳定性这点不用多说,Linux的较高平安性和良好的稳定性能是它的一大特色。第二章防火墙简介2.1传统防火墙及其缺陷防火墙是指设置在不同网络或网络平安域之间,根据一定的平安策略对网络间的通信实施控制的一系列部件的组合。传统意义上的防火墙就是指边界防火墙,它将网络分为网和外网两局部。它是网络间信息传输的唯一出入口,能够根据平安策略控制允许、拒绝、监测出入网络的信息流,且本身具有较强的抗攻击能力。它是提供信息平安效劳、实现网络和信息平安的重要的、根本的平安装置。在逻辑上,防火墙是一个别离器,一个限制器,也是一个分析器,有效地监控了部网和Intern
16、et之间的任何活动,保证了部网络的平安。传统防火墙依赖于网络的拓扑限制,它假定网上的所有主机都是可信任的,而外网上的所有主机都是不可信的。当网络遵照拓扑限制时,这种模型工作得很好;但是,随着网络连接的扩大和新的网络应用的开展,这种模型暴露出了越来越多的缺陷,面临着极大的挑战。主要表现在:对绕过防火墙的攻击无能为力;如果防火墙的规那么设置不当,网上的所有主机将暴露在外部攻击的直接威胁之下。由于信任网上的所有主机,而对来自网络部的恶意攻击、未授权或无意的误操作“视而不见。是潜在的通信瓶颈和单一故障点。与端到端加密如VPN有冲突。由于依赖于网络拓扑,无法支持移动计算。为了克制上述缺陷,产生了“分布式
17、防火墙DistributedFirewall的概念。2.2分布式防火墙多台基于主机但受集中管理和配置的防火墙组成了分布式防火墙。在分布式防火墙中,平安策略仍然被集中定义,但是在每一个单独的网络端点例如主机、路由器上实施。分布式防火墙中含有三个必需的组件:描述平安策略的语言。平安地发布策略的机制。应用、实施策略的机制。平安策略语言规定了哪些通信被允许,哪些通信被制止,它应该支持多种类型的应用,还应支持权利委派和身份鉴别。策略制定后被发布到网络端点上。策略发布机制应该保证策略在传输过程中的完整性和真实性。策略发布有多种方式,可以直接“推到终端系统上,可以由终端按需获取,也可以以证书的形式提供应用户
18、。策略实施机制位于要保护的主机上,在处理出入的通信之前,它查询本地策略再做出允许或制止的决定。分布式防火墙克制了传统防火墙的缺陷,它的优势在于:在网络部增加了另一层平安。有效抵御来自部的攻击。消除网络边界上的通信瓶颈和单一故障点。支持基于加密和认证的网络应用。与拓扑无关,支持移动计算。分布式防火墙的前两个组件从本质上说是平安授权问题。传统的授权机制包括控制列表ACL和公钥证书体系X.509、PKI。但是ACL不适用于开放、动态的分布式环境,证书体系在授予权限、信任模式、委托权利等方面也不能很好地满足分布式防火墙的要求。信任管理TrustManagement是解决分布式环境下授权、信任问题的一种
19、新思想,它提供了适合网络应用的开放、动态、分布特性的平安解决框架。KeyNote是信任管理系统的一个实例。它提供了一种简练、灵活、易扩展和富于表达能力的语言来描述平安策略SecurityPolicy和平安凭证(SecurityCredential)这种可编程的语言易读、易写,而且与应用无关,使KeyNote很容易与应用系统集成。本地策略绑定了公钥和直接授权;远程策略经DSA、RSA数字签名后作为平安凭证,采用了与平安策略一样的语法。平安凭证支持间接信任关系和权利委派,可以在不受信任的网络上传播、发布。因此,基于KeyNote实现防火墙的前两个组件是可行而有效的。防火墙中应用的KeyNote体系
20、构造中效劳器进程根据外来的连接请求,调用KeynoteAPI,将三元组(r,C,P提交给信任管理引擎,该引擎使用通用的、与应用独立的一致性验证算法,这种深度优先算法采用递归的方式,试图在本地或者LDAP效劳器上查找到至少一条能够满足请求的策略断言,从而做出策略是否被满足的判断结果,并返回给效劳器进程。实施策略的组件对进出主机的通信都进展了控制,不但可以保护主机应对外来的威胁,而且可以防止非法用户使用该主机网络,从而实现了双向过滤的功能。我们在RedhatLinux7.2kernelver:2.4.7上开发、实现了分布式防火墙。Linux是当前比拟流行的网络效劳器平台,并且具有集成的、良好的平安
21、特性和库,支持IPseGSSL.同时,利用其开放的源代码,我们可以修改核使之与KeyNote库libkeynote。何样是开放源代码的)很好地协作。系统由三个组件构成:核扩展集、用户级守候进程和设备驱动程序。我们的例主要着眼于对TCP连接的控制。(1)核扩展KernelExtension。用户使用connect(和accept(这两个系统调用来创立向外的连接以及决定到来的连接请求。我们要根据策略对这两个系统调用加以修改,对某些连接进展过滤。策略上下文PolicyContext是包含与某一连接相关的所有信息的容器,这些信息包括发起连接的用户ID,源IP地址、端口号,目的IP地址、端口号,等等。(
22、2)策略驱动(PolicyDriver)。这里实现了一个伪设备驱动/dev/policy作为核中被修改的系统调用与用户空间的守候进程直接通信的渠道。我们把该驱动视为一个文件,它支持一般的文件操作,如open(),close(),read(),write(),ioctl()。(3)策略守候进程PolicyDaemon。这是一个用户级进程,负责根据平安策略和平安凭证作出决策一一允许还是拒绝连接。我们先说明对外来连接accept(进展过滤的工作流程。第一步:首先,操作系统启动策略守候进程,并调用open翻开策略驱动。策略守候进程读取本地的包含策略和凭证的文件当然,也可以定制进程启动时即从远程的LDA
23、P效劳器上下载、更新策略和凭证,opened初始化有关数据构造。策略守候进程调用read(),试图从策略驱动中读取连接请求信息。如果驱动中没有请求信息,那么守候进程阻塞。第二步:效劳器进程收到了连接请求,首先调用accept(。)这个被修改正的系统调用形成策略上下文并提交到策略驱动中。效劳器进程阻塞。第三步:此时,read()M回请求消息,策略守候进程被唤醒。它读取该消息,调用KeyNote的一致性检查器pliancechecker根据本地策略和凭证进展分析。如果未找到与此连接相关的策略,策略守候进程就联系远程的LDAP效劳器查找、下载相应的凭证。假设策略许可即:找到策略或平安凭证,根据签名算
24、法验证无误,并且符合凭证断言,那么允许该连接,假设在本地及远程效劳器上均没有找到相应的策略或凭证,或者与策略、凭证的断言不符,那么拒绝之。策略守候进程调用write(常自己的决策写入策略驱动中。第四步:accept()A策略驱动中读取策略守候进程的决策,效劳器进程被唤醒。假设决策允许,accept(返回非负的套接字描述符;否那么返回-1拒绝该连接请求。对系统向外发起连接的connect(进展过滤的系统流程与此类似。其它两个系统调用的功能是,close关闭伪设备驱动,会释放已分配资源并禁用分布式防火墙;ioctl()用于核与守候进程之间同步时的错误处理。第三章LINUX防火墙的几种常见功能由于每
25、一个用户的要求和所处的环境都不一样,LINUX防火墙会根据用的设置实现各种不同的功能。但一般说来,以下三种功能是大多数用户最常用到的。3.1包过滤对数据包进展过滤可以说是任何防火墙所具备的最根本的功能,而LINUX防火墙本身从某个角度也可以说是一种“包过滤防火墙。在LINUX防火墙中,操作系统核对到来的每一个数据包进展检查,从它们的中提取出所需要的信息,如源IP地址、目的IP地址、源端口号、目的端口号等,再与已建立的防火规那么逐条进展比拟,并执行所匹配规那么的策略,或执行默认策略,这个过程在图1中已经形象的表现出来。值得注意的是,在制定防火墙过滤规那么时通常有两个根本的策略方法可供选择:一个是
26、默认允许一切,即在承受所有数据包的根底上明确地制止那些特殊的、不希望收到的数据包;还有一个策略就是默认制止一切,即首先制止所有的数据包通过,然后再根据所希望提供的效劳去一项项允许需要的数据包通过。一般说来,前者使启动和运行防火墙变得更加容易,但却更容易为自己留下平安隐患。通过在防火墙外部接口处对进来的数据包进展过滤,可以有效地阻止绝大多数有意或无意地网络攻击,同时,对发出的数据包进展限制,可以明确地指定部网中哪些主机可以互联网,哪些主机只能享用哪些效劳或登陆哪些站点,从而实现对部主机的管理。可以说,在对一些小型部局域网进展平安保护和网络管理时,包过滤确实是一种简单而有效的手段。3.2代理LIN
27、UX防火墙的代理功能是通过安装相应的代理软件实现的。它使那些不具备公共IP的部主机也能互联网,并且很好地屏蔽了部网,从而有效保障了部主机的平安。为了清楚地描述这一重要功能的实现过程,特假设以下典型情况:steven为部网中一台IP是勺主机,其上安装有IE5.0浏览器,并配置为使用防火墙主机8080作为代理。firewall就是我们讨论的LINUX防火墙,有两个网络接口,分别是部接口eth1=192.168.04外部接口eth0=在日rewall主机上安装有Web代理软件“squid,并配置其代理端口为808Q为263的Web效劳器,IP为31Web效劳端口80。如果要从steven主机263的
28、主页,其具体的通信过程所示:IE通过steven的非专用端口1110在102465535之间随机生)与防火墙的代理端口8080建立连接,请求”页面。squid代理接收到请求后,先查找域名”,得到地址3t(4)步骤图中省略),然后通过防火墙端口1050与该地址的80端口建立一个连接,请求页面。.263.ne瞰劳器接到请求后将页面传给squid代理。防火墙代理得到页面后,把数据复制到第一步中所建立的连接上,IE得到数据并将“页面显示出来。通过以上描述,可以清楚地了解到部主机、LINUX代理防火墙以及外部效劳器之间是如何进展数据传输的。steven机发来的数据包经由部接口eth1进来后,首先承受IN
29、PUT链的“检查:系统核从中提取出信息,与INPUT链中所有适用于eth1接口的过滤规那么逐个比拟,直到匹配通过。之后,该数据包被转发给本地的代理进程。同样,代理进程发送给远程Web效劳器的数据包在从防火墙外部接口发送出去之前,也要经过OUTPUT链的“检查,即与OUTPUT链中所有适用于eth0接口的规那么一一比拟。返回的过程正好与上述相反,在此就不再赘述。为了实现以上过程,我们必须在防火墙规那么脚本中添加以下规那么:ipchains-Ainput-iethl-ptcps1110d8080-jACCEPTipchains-Aoutput-ieth0-ptcp-s1050d3180-jACCE
30、PTipchains-Ainput-ieth0-ptcp!-ys3180d1050-jACCEPTipchains-Aoutput-ieth1-ptcp!-y-s8080d1110-jACCEPT从上文对代理功能的原理和实现的表达中,我们可以看出,LINUX防火墙实际上扮演了一个“代理网关的角色。部主机和远程效劳器分别都只与防火墙进展连接,而真正的“起点和“终点之间却毫无联系。IP伪装IP伪装IPMasquerade是LINUX操作系统自带的又一个重要功能。通过在系统核增添相应的伪装模块,核可以自动地对经过的数据包进展“伪装,即修改中的源目的IP信息,以使外部主机误认为该包是由防火墙主机发出来
31、的。这样做,可以有效解决使用部保存IP的主机不能互联网的问题,同时屏蔽了部局域网。这一点,与前面所讲的代理所到达的目的是很类似的。steven主机的IE进程直接与远程的Web效劳器建立一个连接。当数据包到达防火墙的部接口后,照样要例行INPUT链的检查。之后,数据包被送到FORWARD链,承受系统核的“伪装处理,即将中的源IP地址改为防火墙外部接口eth0的地址,并在系统中做下记录,以便一会儿对其回应包的目的IP进展“恢复。这样,当该数据包顺利从外部接口出来时,其中源IP已被改为202.117.120.。远程效劳器会认为这是从防火墙的合法地址发来的,从而对其做1出响应。当远程效劳器返回的回应包
32、到达防火墙时,先经过INPUT链,然后会根据系统关于IP伪装的记录对数据包的目的IP进展恢复,即将改为最后再经过OUTPUT链返回至ijsteven主机。为了实现这个过程,我们必须在防火墙规那么脚本中添加以下规那么:ipchains-Ainput-iethl-ptcp-s1110d3180-jACCEPTipchains-Aoutput-ieth0-ptcps1050-d3180-jACCEPTipchains-Ainput-ieth0-ptcp!-y-s3180-d1050-jACCEPTipchains-Aoutput-ieth1-ptcp!-ys3180-d1110-jACCEPTipc
33、hains-Aforward-ieth0s1110-d3180-jMASQ与代理功能比拟而言,IP伪装不需要安装相应的代理软件,数据包的伪装对用户来说都是“透明的,并且整个过程都是在IP层实现,因此实现速度较快。缺点是不能对经过的数据包作详细的记录。但一般说来,LINUX防火墙在实际的设置中常用到的三种功能。用户在创立自己的防火墙规那么脚本时,可以根据自己的需要将这三种功能组合起来实现。一个LINUX防火墙实例以下是我前一段时间为某办公室搭建的LINUX防火墙的实际配置,给出以供参考。有两个局域网,LAN1地址:5/48为公共网络IP,LAN2地址为/255.255.255.为部保存地址。0,
34、LINUX防火墙有两个部接口:0接LAN1;接LAN2。现对防火墙进展配置,使LAN2的主机通过IP伪装互联网,但只允许使用外部Web代理效劳器4勺1252端口。LAN1中的主机被限制使用几种常用的互联网效劳DNS、SMTP、POP3、HTTP和FTP。下面就是创立的防火墙规那么脚本:#/etc/rc.d/rc.firewall#!/bin/sheth0-External_interfaceeth1-LAN1_interfaceeth2-LAN2_interfaceechoStartingfirewalling.Flushanyexistingrulesfromallchainsipchain
35、s-F#Setthedefaultpolicytodenyipchains-PinputDENYipchains-PoutputREJECTipchains-PforwardREJECT#Enabletrafficontheloopbackinterfaceipchains-Ainput-ilo-jACCEPTipchains-Aoutput-ilo-jACCEPT#Enablethetrafficontheeth1ipchains-Ainput-ieth1-jACCEPTipchains-Aoutput-ieth1-jACCEPT#thetrafficontheeth2onlyenablli
36、ngusingtheWEBPROXYipchains-Ainput-ieth2-ptcp-s/241024:65535-d41252-jACCEPTipchains-Aoutput-ieth2-ptcp!-y-s41252-d/241024:65535-jACCEPT#Forwardingrulesipchains-Aforward-ieth0-s4/29-jACCEPTipchains-Aforward-ieth0-s/24-jMASQipchains-Aforward-ieth1-d4/29-jACCEPT#EnableoutgoingthepacketsfromLANontheExter
37、nal_Interfaceipchains-Aoutput-ieth0-jACCEPT#EnableiningsomeICMPmessagesoneth1.Dest_Unreachable,Service_Unavailableipchains-Ainput-ieth0-picmp-sany/03-d4/29-jACCEPT2.Time_Exceededipchains-Ainput-ieth0-picmp-sany/011-d4/29-jACCEPT3.Allowoutgoingpingstoanywhereipchains-Ainput-ieth0-picmp-sany/00-d4/29-
38、jACCEPT#EnableProxyof4:1252ipchains-Ainput-ieth0-ptcp!-y-s41252-jACCEPT#DNS(53)(DNS:)clientmodesipchains-Ainput-ieth0-pudp-s53-d4/291024:65535-jACCEPTipchains-Ainput-ieth0-ptcp!-y-s53-d4/291024:65535-jACCEPT#SMTP(25)EnablesendingmailthrougharemoteSMTPgatewayipchains-Ainput-ieth0-ptcp!-y-sany/025-d4/
39、291024:65535-jACCEPT#POP(110)-EnablereceivingmailfromaremotePOPserveripchains-Ainput-ieth0-ptcp!-y-sany/0110-d4/291024:65535-jACCEPT#HTTP(80)-EnableaccessingremoteWEBsitesasaclientipchains-Ainput-ieth0-ptcp!-y-sany/080-d4/291024:65535-jACCEPT#FTP(20,21)-EnableaccessingremoteFTPserversipchains-Ainput
40、-ieth0-ptcp!-y-sany/021-d4/291024:65535-jACCEPTipchains-Ainput-ieth0-ptcp-sany/020-d4/291024:65535-jACCEPTipchains-Ainput-ieth0-ptcp!-y-sany/01024:65535-d4/291024:65535-jACCEPTechodoneexit0第四章防火墙系统4.1防火墙系统总体设计linux系统下实现软件防火墙的设计与应用,实质上就是基于主机的网络平安解决方案。因此,我们完全可以选择适宜的软硬件平台和相应的防火墙设计原理,自己开发出一套能够满足要求的防火墙系统
41、。归纳起来这里要实现的防火墙需要满足两大要求:第一,必须能够对主机提供平安保护,即对主机与局域网以外的主机进展数据传输时实施平安保护;第二,必须能够提供良好的人机接口界面,具有容易操作、容易管理的优点。考虑到现有硬件设备的限制,在保证满足实验要求的环境下尽可能地简化了实验环境。因为该防火墙系统是基于主机设计的,故只需要一个联网的主机即可进展实验。该系统是在linux环境下用c语言实现包过滤型软件防火墙的设计与应用,采用kylix开发工具进展界面设计和数据库连接。基于linux的个人防火墙系统主要具有以下功能:1全程动态包过滤本防火墙要在linux下实现全程动态包过滤功能,通过分析数据包的地址、
42、协议、端口对任何网络连接当前状态进展控制,从而提高系统的性能和平安性。2提供日志审计本防火墙配备了日志记录系统和查询工具,用于记录系统管理、系统及针对平安策略的网络情况。3防火墙数据库的备份本防火墙制作防火墙过滤数据库,并且管理员可以能动地对该数据库进展设置。第五章基于linux的数据包捕获模块基于linux的数据包捕获模块构造数据包捕获模块用于监视和验证网络流量情况,它可以截取或者阅读网络上OSI协议模型中各个协议层次上的数据包。本文所设计的数据包捕获程序可以捕获通过原始套接口(Socket为原始数据包(RawPacket)当一个数据包到达网络接口时,数据包捕获程序就直接从缓存区读取捕获的数
43、据包,以供数据分析和处理时调用。数据捕获模块的构造如图1所示:数据捕获图表1基于linux的数据包捕获模块原理分析1网卡设置原理在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,网卡的程序接收数据帧的目的mac地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为不该接收就丢掉不管。而对于网卡来说一般有四种接收模式:播送模式组播模式、直接方式、混杂模式。数据包捕获程序首先使网络接口(网卡)处于混杂状态,从而可截获网络上的容,并且通过相应的软件处理,可以实时分析这些数据的容,为数据包过滤作准备。2根本函数说明本文中在linux主机上用c语言编写数据包捕获程序,所
44、编写的程序中用到很多linux中的预定义函数,在此节将对这些根本函数的功能和使用特点进展说明。1ioctl函数定义ioctl()函数非常庞杂,它可以控制各种文件的属性。它用于控制特殊文件的底层设备参数,这些特殊文件通常是指终端、套接字和接口。ioctl函数原型为:intioctl(inthandle,intcmd,int*argdx,intargcx;)2socket函数定义常用的socket类型有两种:流式socket(sock_stream)数据包式socket(sock_dgra流式是一种面向连接的socket,针对面向连接的tcp效劳应用;数据报式socket是一种无连接的socket
45、,针对无连接的udp效劳应用。socket函数原型为:intsocket(intdomain,inttype,intprotocol)3recvfrom()函数定义用recvfrom()函数来实现接收数据包,recvfrom()是具备“阻塞式i/o特性的函数,能够在没有数据包到达的情况下暂时挂起等待,直至接收到数据包后,再激活转入下步处理。recvfrom()函数的原型为:intrecvfrom(sockets,charfar*buf,intlen,intflags,structsockaddrfar*from,int*fromlen;)本函数从已连接套接口上接收数据,并捕获数据发送源的地址。
46、对于sock_stream类型的套接口,最多可以接收缓冲区大小个数据。如果套接口被设置为线接收带外数据(选项为so_oobinline),且有带外数据未读入,那么返回带外数据。应用程序可通过调用ioctlsocket()白socatmark命令来确定是否有带外数据待读入。对于sock_streami共型套接口,忽略from和fromlen参数。4一些“字节顺序转换函数因为网络和主机采用的存储字节时存顺序安排方式的差异,就存在“字节顺序的问题。在网络环境下存储时,高位字节存放在存的起始位置,而低字节那么存放在较高的位置。主机形式的存放顺序恰好相反,低位字节存放在存的起始位置。这就需要以下相应的字
47、节顺序转换函数:inet_ntoa():将32位的网络二进制数值转换为可读十进制形式的带点分割符的 ip 地址。inet_addr(:) 将带有分割符的ip地址转换为32位的unsignedlong的格式。ntohs():将网络字节顺序转换为32位的主机字节顺序。ntohl():将网络字节顺序转换成16位的主机字节顺序。htonl():将32位u_long的值由主机字节顺序转换为网络字节顺序。htons():将16位u_long的值由主机字节顺序转换为网络字节顺序。本文设计的数据捕获程序需要使用sock_packetS备,sock_packet只在基于linux的操作系统中有效定义。为此,美国
48、洛仑兹伯克利国家实验室编写了专用于数据包截获的api函数库“libpcap。该函数的设计目标是统一不同系统上所提供的用于数据包截获的不同类型接口,并使得类似的高层应用程序的编写和移植变得简单有效,不再需要对每一个应用都使用不同的依赖于具体系统的数据包截获模块。第六章数据包捕获模块设计数据包捕获模块设计流程我们先说明对外来连接accept(进展过滤的工作流程。第一步:首先,操作系统启动策略守候进程,并调用open翻开策略驱动。策略守候进程读取本地的包含策略和凭证的文件当然,也可以定制进程启动时即从远程的LDAP效劳器上下载、更新策略和凭证,opened初始化有关数据构造。策略守候进程调用read
49、(),试图从策略驱动中读取连接请求信息。如果驱动中没有请求信息,那么守候进程阻塞。第二步:效劳器进程收到了连接请求,首先调用accept。这个被修改正的系统调用形成策略上下文并提交到策略驱动中。效劳器进程阻塞。第三步:此时,read(M回请求消息,策略守候进程被唤醒。它读取该消息,调用KeyNote的一致性检查器pliancecheckeT根据本地策略和凭证进展分析。如果未找到与此连接相关的策略,策略守候进程就联系远程的LDAP效劳器查找、下载相应的凭证。假设策略许可即:找到策略或平安凭证,根据签名算法验证无误,并且符合凭证断言,那么允许该连接,假设在本地及远程效劳器上均没有找到相应的策略或凭
50、证,或者与策略、凭证的断言不符,那么拒绝之。策略守候进程调用write()a自己的决策写入策略驱动中。第四步:acceptor策略驱动中读取策略守候进程的决策,效劳器进程被唤醒。假设决策允许,accept(返回非负的套接字描述符;否那么返回-1拒绝该连接请求。对系统向外发起连接的connect(进展过滤的系统流程与此类似。其它两个系统调用的功能是,close关闭伪设备驱动,会释放已分配资源并禁用分布式防火墙;ioctl()用于核与守候进程之间同步时的错误处理。数据包捕获模块实现该数据包捕获程序用c语言来编写,程序中用到很多linux网络编程中的函数。1设置网络接口为混杂模式网络接口的混杂模式使
51、得一个网络接口设备从只能读取目标地址为6字节mac地址的数据包,变为可读取网络播送媒体中的所有数据包。该局部通过两次ioctl函数调用实现:ioctl(sock,siocgifflags,&ifr)ifr.ifr_flags|=iff_promiscioctl(sock,siocgifflags,&ifr)第一次的ioctl函数调用,用来截获ifr(structifreq)构造中所含接口名称所指接口的标记。第一个参数是翻开的原始套接字描述符“sock,第二个参数是所要执行的请求操作。第三个参数是接口请求数据构造的地址指针,该构造中包含了所以进展请求操作的接口名称值o我们通过将混合标记(iff_
52、promisc)应用到接口请求构造的标记位变量中来改变接口标记位。操作符“|=将混合标记符与原有的接口标记进展“或操作来设置新的接口标记。获得新的接口标记后,将其设置到实际接口中。第二次的ioctl调用,将接口设备设置为混合模式。正如第一个ioctl调用是获得网络接口的标记,这次调用是设置ifr构造中修改正的新标记写到物理接口上。2翻开socket设备用socket函数来翻开socket设备。sock=socket(af_packet,sock_raw,htons(eth_p_all)domOW用af_packetjg够既接收链路层也接收网络层的数据包。3接收数据使用recvfrom()函数来
53、实现接收数据包:recvfrom(sock,(char*)buf,sizeof(buf),0,(structsockaddr*)&addr,&leni是从翻开的网络插座socket读取数据包的地方,但要注意,addr构造有一个强制类型转换,以适应recvfrom()函数的语法要求,recvfrom()函数在成功读取的情况下返回读取的字节数,否那么返回-1。4判断指针该数据包捕获模块可以接收到的数据包都是原始数据包,它们的格式一般先是以太网数据帧的头部,接着是arp或者ip数据包的头部。ip数据包后紧跟着tcp或udp、icmp的头部,最后才是真正要传输的数据。于是,在拆分ip数据包时,先提取以太网数据帧的头部,再提取ip数据包的头部,然后分析tcp或udp、icmp数据包的头部。最后,从数据包提取出需要的数据。第七章程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人财务顾问合同范例
- 基于BNN的水质分类方法研究及监测系统设计
- 加工车床租售合同范例
- 乡村水泥修路合同范例
- 产品续签合同范例
- 兴泽公司机械租赁合同范例
- 基于深度学习的胃癌CT成像分割方法研究
- 黄淮海平原农田生态系统服务多功能性评价研究
- 光伏发电融资租赁合同范例
- 关于展会框架合同范例
- 思想道德与法治教案第四章:明确价值要求践行价值准则
- 宁骚版《公共政策学》课后答案
- 氧气安全标签
- 不经历风雨怎么见彩虹》教学设计
- 二年级有余数的除法口算题1000道
- (综合治理)修复工程指南(试行) - 贵州省重金属污染防治与土壤修复网
- 员工就餐签到表
- A-level项目介绍(课堂PPT)
- 航海计算软件---ETA计算器
- 光伏电站运维手册
- 半导体及集成电路领域的撰写及常见问题
评论
0/150
提交评论