欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    个人防火墙的设计与实现.doc

    • 资源ID:834890       资源大小:222.73KB        全文页数:31页
    • 资源格式: DOC        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    个人防火墙的设计与实现.doc

    1、摘 要 现在人们的生活中,网络已经越来越成为必不可少的一部分。随之,网络安全也备受关注。防火墙成为个人PC与外网间的一道屏障,把攻击者挡在受保护网的外面,在很大程度上起到了维护网络安全的作用。这种技术强制所有内外网的连接都必须经过此保护层,在此进行检查和连接,从而保护了受保护网资源免遭外部非法入侵。Linux系统由于本身的稳定性,更多的被应用于对网络安全要求高的领域。针对具体需求,在Linux中编写个人防火墙的C语言程序,运行makefile文件,编译程序。最后放入内核全编译。运行防火墙后可通过输入具体的iptables命令进行规则配置,实现网络地址转换和包过滤的功能。这篇论文对防火墙的原理,

    2、所用技术和如何进行防火墙配置做了详细介绍,列举实例解释如何通过iptables命令配置防火墙规则。关键词 包过滤 防火墙 Linux 网络安全 iptablesThe Personal Firewall Abstract In peoples lives, the network has increasingly become an indispensable part. Following this, the network security is also of concern. Firewall personal PC and outside the gateway of a barri

    3、er to block the attacker outside the protected network, in large part to play the role of maintaining network security. This technique to force all internal and external network connections must go through this protective layer, this inspection and connection to protect the illegal invasion of a pro

    4、tected network resources from external. Linux systems because of their stability, have been applied to high field of network security requirements. C language program to write a personal firewall for specific needs, in Linux, run the makefile, and compile the program. And finally into a full compile

    5、 of the kernel. By entering a specific iptables command after running a firewall rule configuration, network address translation and packet filtering functions. This paper the principle of the firewall, use technology and how to conduct firewall configuration to a detailed description, cited the exa

    6、mple explained how to configure the firewall rules through the iptables command.Key words firewall packet filter Linux network security iptablesII目 录摘要IABSTRACTII1 引言11.1 课题研究的背景及意义11.2课程设计的目的11.3Linux防火墙的简单介绍12 LINUX防火墙技术12.1 网络地址转换(NAT)技术12.2 包过滤技术22.2.1 数据表结构22.2.2 传统包过滤技术32.2.1 动态包过滤33 LINUX防火墙功

    7、能介绍33.1包过滤功能43.2 代理服务功能43.3 包伪装44 个人防火墙的设计与实现44.1 防火墙的实现原理54.2 代码分析54.3 防火墙的建立过程84.4包过滤的实现过程104.5 防火墙的应用举例105 结论11参考文献:12致 谢13附 录142个人防火墙的设计与实现1 引言1.1 课题研究的背景及意义随着互联网的迅速普及,各种计算机应用更加广泛和深入,从而使人们对计算机网络的依赖性逐步加强。与此同时,我们也发现,网络虽然强大,也有其脆弱的一面,它随时都有被利用,被攻击的危险。网络通信大多数采用协议完成,协议在设计上要力求运行的效率,因而造成了网络不安全的现象。人们总是在网络

    8、安全问题发生带来严重后果后,才意识到网络安全的重要。随着网络的进一步普及,网络安全产品逐渐地进入人们的视野,而防火墙作为把守用户安全大门的重要工具,越来越受到人们的重视。全球信息安全方面的研究工作者就此问题展开了广泛而深入的研究,其中防火墙技术是近年发展起来的一种网络安全技术。顾名思义,它是在受保护网与外部网之间构造一个保护层,把攻击者挡在受保护网的外面。这种技术强制所有内外网的连接都必须经过此保护层,在此进行检查和连接,从而保护了受保护网资源免遭外部非法入侵。它通过监测、限制或更改跨越防火墙的数据流,尽可能地对外部网络屏蔽有关受保护网络的信息和结构来实现对网络的安全保护。本文将首先从Linu

    9、x下防火墙要用到的技术入手,掌握包过滤的实现原理,然后详述防火墙的配置方法,最后重点介绍我们提出的基于Linux平台的个人防火墙的设计和实现。1.2 课程设计的目的本课程设计设主要目的是在Linux操作系统下完成基于Netfilter/Iptables的包过滤防火墙的设计与实现。Internet等网络服务给人们的生活带来极大便利的同时也存在很多隐患,学会基于Netfilter/Iptables的包过滤防火墙的配置就能在一定程度上有效地抵御来自网络上的攻击。通过完成课程设计,学习包过滤防火墙的相关知识,同时也深化对Linux课程的理解。1.3 Linux防火墙的简单介绍目前的防火墙无论从技术上还

    10、是产品发展历程上,都经历了五个发展阶段。第一代防火墙技术几乎与路由器同时出现,采用了包过滤技术。1989年,贝尔实验室的Dave Presotto和Howard Trickey推出了第二代防火墙,即电路层防火墙,同时提出了第三代防火墙,即应用层防火墙的初步结构。第四代防火墙是1992年,USC信息科学院的BobBraden开发出了基于动态包过滤技术的第四代防火墙,后来演变为目前所说的状态监视技术。1994年,以色列的CheckPoint公司开发出了第一个采用这种技术的商业化的产品。第五代防火墙是1998年,NAI公司推出了一种自适应代理技术,并在其产品Gauntlet Firewall for

    11、 NT中得以实现,给代理类型的防火墙赋予了全新的意义。高级应用代理的研究,克服速度和安全性之间的矛盾,可以称之为第五代防火墙。前五代防火墙技术有一个共同的特点,就是采用逐一匹配方法,计算量太大。包过滤是对IP包进行匹配检查,状态检测包过滤除了对包进行匹配检查外还要对状态信息进行匹配检查,应用代理对应用协议和应用数据进行匹配检查。因此,它们都有一个共同的缺陷,安全性越高,检查的越多,效率越低。用一个定律来描述,就是防火墙的安全性与效率成反比。2 Linux防火墙技术2.1 网络地址转换(NAT)技术NAT英文全称是Network Address Translation,称是网络地址转换,允许一个

    12、机构以一个地址出现在Internet上。NAT将每个局域网节点的地址转换成一个IP地址,反之亦然。它常被应用到防火墙技术里,把个别IP地址隐藏起来不被外界发现,使外界无法直接访问内部网络设备,同时,它还帮助网络可以超越地址的限制,合理地安排网络中的公有Internet 地址和私有IP地址的使用。NAT技术能帮助解决令人头痛的IP地址紧缺的问题,而且能使得内外网络隔离,提供一定的网络安全保障。它解决问题的办法是:在内部网络中使用内部地址,通过NAT把内部地址翻译成合法的IP地址在Internet上使用,其具体的做法是把IP包内的地址域用合法的IP地址来替换。 NAT功能通常被集成到路由器、防火墙

    13、、ISDN路由器或者单独的NAT设备中。NAT设备维护一个状态表,用来把非法的IP地址映射到合法的IP地址上去。每个包在NAT设备中都被翻译成正确的IP地址,发往下一级,这意味着给处理器带来了一定的负担。但对于一般的网络来说,这种负担是微不足道的。2.2 包过滤技术所谓包过滤,就是对流经网络防火墙的所有数据包逐个检查,并依据所制定的安全策略来决定数据包是通过还是不通过。包过滤最主要的优点在于其速度与透明性。也正是由于此,包过滤技术历经发展演变而未被淘汰。由于其主要是对数据包的过滤操作,所以数据包结构是包过滤技术的基础。考虑包过滤技术的发展过程,可以认为包过滤的核心问题就是如何充分利用数据包中各

    14、个字段的信息,并结合安全策略来完成防火墙的功能。包过滤具体操作流程如图2-1是否是最后一个包规则存储包过滤规则分析IP、TCP、UDP数据包包头字段应用下一个包规则包规则是否允许传输包规则是否阻止传输允许包阻止包是是是否否否图2-1 包过滤操作流程图2.2.1 数据表结构当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对接收到的数据都要增加一些首部信息。TCP传给IP的数据单元称作TCP报文段,IP传给网络接口层的数据单元称作IP数据报,通过以太网传输的比特流称作帧(Frame)。对于进入防火墙的数据包,顺序正好与此相反,头部信息逐层

    15、剥掉。对于帧的头部信息主要是源主机和目的主机的MAC地址;IP数据报头部信息主要是源主机和目的主机的IP地址;TCP头部的主要字段包括源主机和目的端口、发送及确认序号、状态标识等。理论上讲,数据包所有头部信息以及有效载荷都可以作为判断包通过与否的依据,但是在实际情况中,包过滤技术上的问题主要是选取哪些字段信息,以及如何有效地利用这些字段信息并结合访问控制列表来执行包过滤操作,并尽可能提高安全控制力度。2.2.2 传统包过滤技术传统包过滤技术,大多是在IP层实现,它只是简单的对当前正在通过的单一数据包进行检测,查看源IP地址和目的IP地址、端口号以及协议类型(UDP/TCP)等,结合访问控制规则

    16、对数据包实施有选择的通过。这种技术实现简单,处理速度快,对应用透明,但是它存在的问题也很多,主要表现有: (1)所有可能会用到的端口都必须静态放开。若允许建立HTTP连接,就需要开放1024以上所有端口,这无疑增加了被攻击的可能性。(2)不能对数据传输状态进行判断。如接收到一个ACK数据包,就认为这是一个己建立的连接,这就导致许多安全隐患,一些恶意扫描和拒绝服务攻击就是利用了这个缺陷。(3)无法过滤审核数据包上层的内容。即使通过防火墙的数据包有攻击性或包含病毒代码,也无法进行控制和阻断。综合上述问题,传统包过滤技术的缺陷在于:(l)缺乏状态检测能力;(2)缺乏应用防御能力;(3)只对当前正在通

    17、过的单一数据包进行检测,而没有考虑前后数据包之间的联系;(4)只检查包头信息,而没有深入检测数据包的有效载荷。传统包过滤技术必须发展进化,在继承其优点的前提下,采用新的技术手段,克服其缺陷,并进一步满足新的安全应用要求。从数据包结构出发考虑,目前包过滤技术向两个方向发展:(l)横向联系。即在包检测中考虑前后数据包之间的关系,充分利用包头信息中能体现此关系的字段,如IP首部的标识字段和片偏移字段、TCP首部的发送及确认序号、滑动窗口的大小、状态标识等,动态执行数据包过滤。(2)纵向发展。深入检测数据包有效载荷,识别并阻止病毒代码和基于高层协议的攻击,以此来提高应用防御能力。这两种技术的发展并不是

    18、独立的,动态包过滤可以说是基于内容检测技术的基础。实际上,在深度包检测技术中己经体现了两种技术的融合趋势。2.2.1 动态包过滤动态包过滤又称为基于状态的数据包过滤,是在传统包过滤技术基础之上发展起来的一项过滤技术,最早由Checkpoint提出。与传统包过滤技术只检查单个、孤立的数据包不同,动态包过滤试图将数据包的上下文联系起来,建立一种基于状态的包过滤机制。对于新建的应用连接,防火墙检查预先设置的安全规则,允许符合规则的连接通过,并在内存中记录下该连接的相关信息,这些相关信息构成一个状态表。这样,当一个新的数据包到达,如果属于已经建立的连接,则检查状态表,参考数据流上下文决定当前数据包通过

    19、与否,如果是新建连接,则检查静态规则表。动态包过滤通过在内存中动态地建立和维护一个状态表,数据包到达时,对该数据包的处理方式将综合静态安全规则和数据包所处的状态进行。这种方法的好处在于由于不需要对每个数据包进行规则检查,而是一个连接的后续数据包(通常是大量的数据包)通过散列算法,直接进行状态检查,从而使性能得到了较大提高;而且,由于状态表是动态的,因而可以有选择地、动态地开通1024号以上的端口,使安全性得到进一步地提高。动态包过滤技术克服了传统包过滤仅仅孤立的检查单个数据包和安全规则静态不可变的缺陷,使得防火墙的安全控制力度更为细致。3 Linux防火墙功能介绍3.1 包过滤功能根据数据包的

    20、包头中某些标志性的字段,对数据包进行过滤。当数据包到达防火墙时,防火墙根据包头中的某些字段中的一些或全部进行判断,决定接受还是丢弃数据包。包过滤可能发生在以下几个时刻:接收到数据包时,发送数据包时以及转发数据包时。Linux中过滤包的方法如下: (1)将包头和过滤规则逐一进行匹配。 (2)第一条与包匹配的规则将决定以下采取的行动:首先,此规则指定的策略将被应用到该包上。应用在一个包的策略包括以下几种:接受(ACCEPT),即允许包通过该过滤器;拒绝 (REJECTt),即丢掉该包并发一个“主机不可到达”的 ICMP报文回发送者;丢弃(DROP),即丢掉该包且不发任何返回信息。其次,修改此规则对

    21、应的包和字节计数器的值;再次,一些关于包的信息有选择性地被写入日志中。有的规则中可能含有参数来定义如何改写包头的服务类型(TOS)字段,用于确定不同包的优先级。(3)如果没有与包相匹配的过滤规则,则将对该包采取缺省的过滤规则。Linux 的包过滤规则可包含如下一些信息: 源地址和目的地址以及子网掩码,其中子网掩码中的 0 表示可以匹配任何地址; 包的类型可以是 TCP,UDP,ICMP 或“any”; 源和目的端口号,一条规则中可以指定 10 个以上的端口,也允许指定端口范围; ICMP报文类型; 包中的 ACK和 SYN标志,这是为了防止在某个特定方向上建立新的链接; 某块网卡的名字或 IP

    22、地址,这样可以指定在特定的网卡上进出包; 指定是否修改包头的TOS字段; 用一个标志来确定包的一些基本信息是否要被写入日志中3.2 代理服务功能一个完整的防火墙解决方案不仅包括包过滤器,而且应该包括某种类型的应用层代理服务器。所谓代理服务,是指在防火墙上运行某种软件(称为代理程序),如果内部网需要与外部网通信,首先要建立与防火墙上代理程序的连接,把请求发送到代理程序;代理程序接收该请求,建立与外部网相应主机的连接,然后把内部网的请求通过新连接发送到外部网相应主机。反之亦然。概括的说,就是内部网和外部网的主机之间不能建立直接的连接,而是要通过代理服务进行转发。代理服务器具有用户级的身份验证,完备

    23、的日志记录和帐号管理等较包过滤器更加安全的功能。然而,许多代理机制需要客户端修改软件或修改用户接口,使用户意识到正在使用代理服务器。而 Linux 内核支持透明代理服务功能,透明代理用一种完全透明的方式,将一个经过本防火墙的连接重定向到本地代理服务器。客户端完全不知道他们的连接被一个代理进程处理,他们认为自已在直接和指定的服务器对话。3.3 包伪装Linux 核心提供了一个用于防火墙解决方案的附加功能:IP 包伪装。IP 包伪装是 Linux 中的一种网络功能,它只能用于TCP/UDP包,它能使没有Internet地址的主机通过有Internet地址的主机访问Internet。如果一台 Lin

    24、ux 服务器用包伪装功能连接到 Internet 上,那私接上它的电脑即使没有获得正式指定的IP地址也可以接入Internet.这些电脑可以隐藏在Linux服务器后面存取Internet上的信息而不被发现,看起来就好象是服务器在使用 Internet。Linux 服务器实现代理功能的方法如下:当一个内部主机向外发包时,Linux 服务器在转发此IP包之前,用自已 IP地址替换此包的源 IP地址,并临时产生一个本机端口号来替换此包的TCP/UDP 头中的源端口号;同时,内核会记录下此替换。当外部的返回包到来时(送往防火墙主机的临时端口),服务器能自动识别它,将此返回包的 IP 地址和端口号替换成

    25、内部主机的地址和端口号,发给内部主机。4 个人防火墙的设计与实现4.1 防火墙的实现原理防火墙是设置在内部网与Internet之间的软件系统。用于实施2个网络之间访问控制和安全策略。它至少有2个网络设备,分别连接受保护的内部网和Internet。Linux 的防火墙软件包内置于内核当中,其中心思想是根据网络层的IP包头来控制包的流向,因此它是一种基于包过滤型的防火墙。在Linux 中,利用Iptables工具,我们可以对IP包进行严格的控制。包过滤器实际上是一段程序。它检查IP包的包头,决定包的命运,它可以丢弃(DENY)这些包,将数据包扔掉就像未曾收到一样、接受(ACCEPT)或拒绝(REJ

    26、ECT)包(将数据包扔掉,但产生1 个ICMP回复告诉发包者的目的地址无法到达)。Iptables命令用于过滤和地址转换规则的建立、维护及检查。Linux中有两张表:filter表和nat表。 Linux防火墙分为5个链INPUT链、OUTPUT链、FORWARD链、PREROUTING链、POSTROUTING链。这5个链的作用:当所有的包访问的时候都会从PREROUTING链通过,然后在选择走INPUT链和FORWARD链(也就是说,是访问服务器还是通过服务器进行转发)然后在在选择OUTPUT还是POSTROUTING链。filter表:用来过滤的表,包括INPUT链、OUTPUT链、FO

    27、RWARD链。Nat表:用来做地址转换的表,包括PREROUTING链、POSTROUTING链。INPUT链:指从主机外部通过防火墙某块网卡进入防火墙主机的IP 包的规则集合。OUTPUT链:链是指从主机通过防火墙某块网卡出到防火墙主机外部的IP 包的规则集合。FORWARD链:是指防火墙主机内部从某块网卡转发到另一网卡的IP 包的规则集合。PREROUTING链:用来修改目的地址(DNAT);POSTROUTING链:用来修改源地址(SNAT)。当1个包从Internet进入配置了防火墙的Linux的主机,内核使用输入链决定该包的取舍。如果该包没有被丢弃,则内核继而调用转发链决定是否将该包

    28、发送到某个出口。最后当包要被发出前,内核通过输出链来做决定。流程如图4-1所示OUTPUT链数据包进入上层协议栈输入包路由输入包路由INPUT链PREROUTING链FORWARD链POSTROUTING链数据包传出图4-1 防火墙内核模块结构框架图4.2 代码分析此防火墙netfilter框架包括有5个钩子函数NF_IP_PRE_ROUTING、NF_IP_LOCAL_IN、NF_IP_FORWARD、NF_IP_LOCAL_OUT、NF_IP_POST_ROUTING不同的模块将会注册不同的钩子函数,每当数据包处理到这个阶段时,就调用模块中定义的处理函数,而netfilter提供了一个整体

    29、框架,避免了原来代码的杂乱无章。当数据包从外部进来,首先处理的是PRE_ROUTING,然后转到路由,路由判断究竟是forward这个数据包还是读入本机处理,如果是转发的,会进入到FORWARD钩子,如果是读入处理的,会到LOCAL_IN钩子。当数据包是从本机发出的数据包时,经过LOCAL_OUT钩子,然后路由判断。最后FORWARD和LOCAL_OUT都会经过POST_ROUTING钩子。这样整个防火墙的结构就很清晰了。ip_local_deliver()是发送ip数据包到上层的函数,将其放在了net/ipv4/ip_input.c中。int ip_local_deliver(struct

    30、sk_buff *skb)if (ip_hdr(skb)-frag_off & htons(IP_MF | IP_OFFSET) if (ip_defrag(skb, IP_DEFRAG_LOCAL_DELIVER)return 0;return NF_HOOK(PF_INET, NF_INET_LOCAL_IN, skb, skb-dev, NULL, ip_local_deliver_finish);函数的关键在returen语句,调用了函数NF_HOOK,这便是netfilter的hook调用。我们发现这其实是一个宏,那么继续深入:#define NF_HOOK(pf, hook, sk

    31、b, indev, outdev, okfn) NF_HOOK_THRESH(pf, hook, skb, indev, outdev, okfn, INT_MIN) 可见它的形参分别是协议类型,钩子类型,skb,进去的device,出去的device以及回调函数指针,它首先会探寻说我们的规则表中有没有对这类情况注册钩子函数进行匹配处理,如果有的话,会调用钩子函数,如果没有的话,则继续执行形参中的回调函数,完成整个过程。可见netfilter是一个很轻量级的,和内核网络代码能轻易剥离的防火墙。以下为剥离并提取钩子信息的程序:static inline int nf_hook_thresh(in

    32、t pf, unsigned int hook, struct sk_buff *skb, struct net_device *indev, struct net_device *outdev, int (*okfn)(struct sk_buff *), int thresh, int cond)if (!cond)return 1;if (list_empty(&nf_hookspfhook)return 1;return nf_hook_slow(pf, hook, skb, indev, outdev, okfn, thresh);下面分析以下程序中非常重要的一个数据结构nf_hoo

    33、ks:struct list_head nf_hooksNPROTONF_MAX_HOOKS;一个很典型的二维数组,第一维是协议类型,第二维是一个协议最多的钩子函数的数量。这个数组的每一项就是一个list头,指向一串有钩子函数的链表,当这个数组的这一项为空时,即没有钩子函数挂接时,函数nf_hook_thresh返回1,也就是直接执行okfn函数,否则的话继续调用nf_hook_slow()。接下来是nf_hooks的初始化,在net/ipv4/netfilter/iptable_filter.c中的初始化函数static int _init iptable_filter_init(void)

    34、int ret;if (forward NF_MAX_VERDICT) printk(iptables forward must be 0 or 1n);return -EINVAL;/* Entry 1 is the FORWARD hook */initial_table.entries1.target.verdict = -forward - 1;ret = register_pernet_subsys(&iptable_filter_net_ops);if (ret 0)return ret;/* Register hooks */ret = nf_register_hooks(ipt

    35、_ops, ARRAY_SIZE(ipt_ops);if (ret 0)goto cleanup_table;return ret; cleanup_table:unregister_pernet_subsys(&iptable_filter_net_ops);return ret;其中的注册table和注册钩子函数就很清晰了,这些都是在初始化时候完成的。上面的程序调用了nf_register_hook函数。int nf_register_hook(struct nf_hook_ops *reg)struct nf_hook_ops *elem;int err;err = mutex_lock

    36、_interruptible(&nf_hook_mutex);if (err pfreg-hooknum, list) if (reg-priority priority)break;list_add_rcu(®-list, elem-list.prev);mutex_unlock(&nf_hook_mutex);return 0;这个函数很清楚了,它注册一个数据结构到nf_hook_ops的数据结构到表nf_hooks中的相应位置中去,在list中的位置根据reg的priority的值,应该是数值越小,优先级越高,就越先处理。而nf_hook_ops的内容肯定就要是钩子函数了。然后回到

    37、前面的调用函数nf_hook_slow那个地方,看看这个函数究竟做什么的。int nf_hook_slow(int pf, unsigned int hook, struct sk_buff *skb, struct net_device *indev, struct net_device *outdev, int (*okfn)(struct sk_buff *), int hook_thresh)struct list_head *elem;unsigned int verdict;int ret = 0;#ifdef CONFIG_NET_NSstruct net *net;net =

    38、indev = NULL ? dev_net(outdev) : dev_net(indev);if (net != &init_net)return 1;#endif/* We may already have this, but read-locks nest anyway */rcu_read_lock();elem = &nf_hookspfhook;next_hook:verdict = nf_iterate(&nf_hookspfhook, skb, hook, indev, outdev, &elem, okfn, hook_thresh);if (verdict = NF_AC

    39、CEPT | verdict = NF_STOP) ret = 1;goto unlock; else if (verdict = NF_DROP) kfree_skb(skb);ret = -EPERM; else if (verdict & NF_VERDICT_MASK) = NF_QUEUE) if (!nf_queue(skb, elem, pf, hook, indev, outdev, okfn, verdict NF_VERDICT_BITS)goto next_hook;unlock:rcu_read_unlock();return ret;4.3 防火墙的建立过程在Red

    40、Hat 9.0中,提供一个GUI程序来让用户对系统的安装级别进行简单的配置。如图4-2所示。图4-2 Red Hat 9.0中的安全设置现实中一般不使用这个GUI工具,因为它的功能有限,能提供给用户的可编辑范围也比较窄。具体的防火墙配置仍需使用iptables命令进行设置。1、开启关闭防火墙重启后生效开启:chkconfig iptables on关闭:chkconfig iptables off即时生效,重启后失效开启:service iptables start关闭:service iptables stop2、刷新所有的链的规则: rootBC /# iptables nvL3、首先丢弃

    41、任何包,然后再一步步设置允许通过的包,为每一个链设置缺省的规则:rootBC /# iptables -P INPUT DROProotBC /# iptables -P OUTPUT DROProotBC /# iptables -P FORWARD DROP 4、NAT表规则配置:配置前需要开启一个内核的路由转发功能,可以通过命令:rootBC /# echo 1/proc/sys/net/ipv4/ip_forward然后就可以开始配置NAT了,rootBC /# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT -to 2

    42、1.1.1.1 把来自192.168.1.0/24 网段的数据包源地址改为21.1.1.1 ,源NAT完成rootLinux # iptables -nvL -t nat | grep SNAT0 0 SNAT all - * * 192.168.1.0/24 0.0.0.0/0 to:20.1.1.15、规则的保存:在规则配置好后,可以将它们保存为脚本,使用 iptables-save 命令来实现:rootBC /# iptables-save iptables-script信息包过滤表中的所有规则都被保存在文件iptables-script中。无论何时再次引导系统,都可以使用iptable

    43、s-restore命令将规则集从该脚本文件恢复到信息包过滤表。恢复命令:rootBC /# iptables-restore iptables-script4.4包过滤的实现过程通过使用iptables命令建立具体规则,并将其添加到内核空间特定信息包过滤表内的链中。我们必须明确防火墙过滤器是按照链上定义的顺序进行过滤的,规则按照定义的顺序添加在链的结尾。IP 包的处理以第1 条匹配规则为准,若无匹配规则,则应用默认规则处理。正因为如此,防火墙规则必须定义成1个从最明确到最一般规则的层次顺序。关于添加、去除、编辑规则的命令,一般语法如下: iptables -t table command ma

    44、tch target1表(table) -t table选项允许使用标准表之外的任何表。有两个可用的表选项:filter、nat。该选项不是必需的,如果未指定,则filter作为缺省表。2命令(command) command部分是iptables命令最重要的部分。它告诉iptables命令要做什么,例如插入规则、将规则添加到链的末尾或删除规则。-A或-append:将一条规则附加到链的末尾。-I或-insert:向链中插入一条规则,默认放在最前面。-D或-delete:删除能匹配上的规则。-P或-policy:设置链的缺省策略。所有与链中任何规则都不匹配的信息包将强制使用此策略。-N或-ne

    45、w-chain:用命令中所指定的名称创建一个新链。-F或-flush:如指定链名,则删除链中的所有规则;如未指定链名,则删除所有链中的所有规则。-L或-list:列出指定链中的所有规则。3匹配(match)iptables命令的可选match部分指定信息包与规则匹配所应具有的特征(如源地址、目的地址、协议等)。下面介绍可用于采用任何协议的信息包的通用匹配。-p或-protocol:该通用协议匹配用于检查某些特定协议。包括TCP、UDP、ICMP。-s或-source:该源匹配是对信息包的源IP地址或地址范围的匹配。-d或-destination:该目的匹配是对信息包的目的IP地址或地址范围的匹配。4目标(target)目标是由规则指定的操作,对与那些规则匹配的信息包执行这些操作。除了允许用户定义的目标之外,还有许多可用的目标选项。ACCEPT:当信息包与具有ACCEPT目标的规则完全匹配时,会被接受,并停止遍历链。DROP:当信息包与具有DROP目标的规则完全匹配时,会被丢弃并且不对它做进一步处理。REJECT:该目标的工作方式与DROP相同,但比DROP好。它不会在服务器和客户机上留下死套接字,并且会将错误消息发回给信息包的发送方。4.5 防火墙的应用举例Linux 本机下网卡IP为:192.168.128.234,用来攻击的电脑网卡IP为:183.197.126.251。


    注意事项

    本文(个人防火墙的设计与实现.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922