Linux个人防火墙的设计与实现_第1页
Linux个人防火墙的设计与实现_第2页
Linux个人防火墙的设计与实现_第3页
Linux个人防火墙的设计与实现_第4页
Linux个人防火墙的设计与实现_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.PAGE.xxxx《Linux个人防火墙的设计与实现》第1页共21页Linux个人防火墙的设计与实现学生__xxx指导xxx摘要防火墙在配置上能够防止来自"外部"世界未经授权的交互式登录。这大大有助于防止破坏者登录到你网络中的计算机上。本课程设计介绍基于Netfilter/Iptables的包过滤防火墙的实现原理。对Linux系统、TCP/IP的相关知识及Iptables语法做了介绍。详细介绍了Iptables命令的使用举例,通过实例介绍了基于Netfilter/Iptables的包过滤防火墙的配置过程。关键词网络操作系统;包过滤;Iptables;Netfilter;防火墙DesignandImplementThePersonalFirewallofLinuxStudentname:YUMing-yinAdvisor:HouLi-juanAbstractIntheconfigurationonthefirewalltopreventfromthe"external"worldofinteractiveunauthorizedlogin.Thiswillsignificantlyhelppreventspoilerstologintoyourcomputernetwork.Basedonthecurriculumdesign,introducedNetfilter/Iptablesfirewallpacketfilteringoftherealizationoftheprinciple.OnLinuxsystems,TCP/IPknowledgeandIptablessyntaxisintroduced.Iptablescommanddescribedindetailtheuseof,forexample,throughanexamplebasedontheNetfilter/Iptablesfirewall'spacketfilteringconfigurationprocess.KeywordsNetworkOS;PacketFilter;Iptbles;Netfilter;Firewall1引言1.1课程设计的意义对于因特网上的系统,不管是什么情况,首先我们要明确一点:网络是不安全的。虽然创建一个防火墙并不能保证系统100%安全[7],但却是绝对有必要的。防火墙的目的就是将破坏网络安全的人挡在你的网络之外,使你可以顺利完成自己的工作。LINUX是近几年突出的一种操作系统,以其公开的源代码、强大稳定的网络功能和大量的免费资源受到业界的普遍赞扬。LINUX防火墙其实是操作系统本身所自带的一个功能模块。通过安装特定的防火墙内核,LINUX操作系统会对接收到的数据包按一定的策略进行处理。随着Linux系统被越来越多地使用,安全问题成了关键。Linux防火墙技术也在不断的发展,经历了Ipfw、Ipchains等过程。Iptables作为Linux防火墙的新一代继承人,当然也针对骇客不断推陈出新的探测技术拟出一些因应之道,那就是对封包的联机状态,作出更详细的分析,透过这样的分析能对一些可能被骇客利用的弱点加以阻隔,另外也开发出真正的封包改写能力,不需要透过其它程序的协助来仿真网址转译,除此之外,Iptables也获得系统核心的直接支持,不需要像Ipchains那样需要自行重新编译核心。Iptables优越的性能使它取代了Ipchains,成为网络防火墙的主流,而Ipchains并未被淘汰,目前Ipchains已经转型成单机防火墙,在安装新版Linux时,会自动被安装启用,以保护单机上未被使用的通讯端口[1]。总之,目前大部分国内金融、商业等企业都采用Linux系统,因此在Linux上配置防火墙有极其重要的意义,同时可以学习这一先进的技术与熟悉一个优秀的操作平台。1.2课程设计的目的本课程设计设主要目的是在Linux操作系统下完成基于Netfilter/Iptables的包过滤防火墙的设计与实现。Internet等网络服务给人们的生活带来极大便利的同时也存在很多隐患,学会基于Netfilter/Iptables的包过滤防火墙的配置就能在一定程度上有效地抵御来自网络上的攻击。通过完成课程设计的过程,学习包过滤防火墙的相关知识,同时也深化对这学期Linux课程的学习。1.3Linux防火墙的背景知识Linux是一个类UNIX的操作系统[5],它是由芬兰赫尔辛基大学的学生LinusTorvalds于1991年创建并在因特网上发布,任何人只要遵守GPL版权,都可以免费使用和修改Linux。实际上,GPL要求的是完全的软件共享,你可从中获利,但你不能占为己有。经过因特网上的千千万万的志愿者对其的不断修改,八年后的今天,Linux已经变得强大无比!特别是去年下半年以来,IBM、Intel、Oracle、Sysbase、Borland,HP,SUN,Corel等商业软件[6]厂商纷纷表示对Linux进行商业开发和技术支持,更使得Linux的商业价值越来越高。同时Linux将在两个方向发展,即微型设备的嵌入式操作系统和桌面操作系统。IDC预测Linux将成为WindowsNT后的第二大操作系统[3]。Linux以它的高效性和灵活性著称。它能够在个人计算机上实现全部的UNIX特性,具有多任务、多用户的功能。Linux可在GNU〔"不是UNIX"工程的缩写公共许可权限下免费获得,是一个符合POSIX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用Windows一样,允许我们使用窗口、图标和菜单对系统进行操作。包过滤防火墙用软件查看所流经的数据包的XX〔header,由此决定整个包的命运。它可能丢弃〔DROP这个包,可能接受〔ACCEPT这个包,也可能执行其它更复杂的动作。Linux因其健壮性、可靠性、灵活性以及好象无限范围的可定制性而在IT界倍受欢迎。Linux具有许多内置的功能,使开发人员可以根据自己的需要定制其工具、行为和外观而无需昂贵的第三方工具。Netfilter/IptablesIP信息包过滤系统是最新的解决方案,而且也是第一个集成到Linux内核的解决方案。对于Linux系统管理员、网络管理员以及家庭用户〔他们想要根据自己特定的需求来配置防火墙,在防火墙解决方案上节省费用和对IP信息包过滤具有完全控制权来说,Netfilter/Iptables系统十分理想。Iptables是与最新的2.4.x版本Linux内核集成的IP信息包过滤系统。如果Linux系统连接到因特网或LAN、服务器或连接LAN和因特网的代理服务器,则该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。Iptables组件是一种工具,也称为用户空间〔userspace,它使插入、修改和除去信息包过滤表中的规则变得容易[2]。Iptables是复杂的,它集成到Linux内核中。用户通过Iptables可以对进出你的计算机的数据包进行过滤。通过Iptables命令设置来把守你的计算机网络--哪些数据允许通过,哪些不能通过,哪些通过的数据进行记录。2Netfilter/Iptables介绍2.1配置防火墙的filter表<1>查看本机关于IPTABLES的设置情况[rootlocalhostroot]#iptables-L–n<2>清除原有规则不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter[8]的所有规则。[rootlocalhostroot]#iptables-F

清除预设表filter中的所有规则链的规则。[rootlocalhostroot]#iptables-X

清除预设表filter中使用者自定链中的规则。<3>设定预设规则[rootlocalhostroot]#iptables-pINPUTDROP[rootlocalhostroot]#iptables-pOUTPUTACCEPT[rootlocalhostroot]#iptables-pFORWARDDROP<4>添加规则首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP<通过>的链。为了能采用远程SSH登陆,我们要开启22端口[rootlocalhostroot]#iptables-AINPUT-ptcp--dport22-jACCEPT[rootlocalhostroot]#iptables-AOUTPUT-ptcp--sport22-jACCEPT如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:[rootlocalhostroot]#iptables-AOUTPUT-ptcp--sport80-jACCEPT如果做了WEB服务器,开启80端口[rootlocalhostroot]#iptables-AINPUT-ptcp--dport80-jACCEPT如果做了邮件服务器,开启25110端口[rootlocalhostroot]#iptables-AINPUT-ptcp--dport110-jACCEPT[rootlocalhostroot]#iptables-AINPUT-ptcp--dport25-jACCEPT如果做了FTP服务器,开启21端口[rootlocalhostroot]#iptables-AINPUT-ptcp--dport21-jACCEPT[rootlocalhostroot]#iptables-AINPUT-ptcp--dport20-jACCEPT如果做了DNS服务器,开启53端口[rootlocalhostroot]#iptables-AINPUT-ptcp--dport53-jACCEPT2.2配置防火墙的NAT表<1>查看本机关于NAT的设置情况[rootlocalhostroot]#iptables-tnat–L<2>添加规则添加基本的NAT[8]地址转换,我们只添加DROP链.因为默认链全是ACCEPT。防止外网用内网IP欺骗[roottpsysconfig]#iptables-tnat-APREROUTING-ieth0-s.0/8-jDROP[roottpsysconfig]#iptables-tnat-APREROUTING-ietDROP非法连接[rootlocalhostroot]#iptables-AINPUT

-mstate--stateINVALID-jDROP[rootlocalhostroot]#iptables-AOUTPUT

-mstate--stateINVALID-jDROP[rootlocalhostroot]#iptables-AFORWARD-mstate--stateINVALID-jDROP允许所有已经建立的和相关的连接[rootlocalhostroot]#iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT[rootlocalhostroot]#iptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPT[rootlocalhostroot]#iptables-AOUTPUT-mstate--stateESTABLISHED,RELATED-jACCEPT[rootlocalhostroot]#/etc/rc.d/init.d/iptablessave这样就可以写到/etc/sysconfig/iptables文件里,写入后把防火墙重起一下,才能起作用。[rootlocalhostroot]#serviceiptablesrestart2.3Iptables的结构Iptables一般由指定表〔table、指定链〔chains、指定操作命令〔command、指定规则匹配器〔matcher、指定目标动作〔target等构成,如图2.1所示。图2.1Iptables结构图Iptables的指令结构如图2.2所示。图2.2Iptables的指令结构图2.4Iptables的规则要素一条Iptables规则基本上应该包含5个要素:1、指定表〔table2、指定操作命令〔command3、指定链〔chains4、指定规则匹配器〔matcher5、指定目标动作〔target2.5Iptables工具的调用语法Iptables的语法通常可以简化为下面的形式:Iptables[-ttable]CMD[chain][rule-matcher][-jtarget]其中:tables为表名,CMD为操作命令,chain为链名,rule-matcher为规则匹配器,target为目标动作。Iptables软件包提供了两个命令分别用于保存和恢复规则集。可以使用下在的命令转储在内存中的内核规则集。其中/etc/sysconfig/Iptables是Iptables守护进程调用的默认规则集文件:#/sbin/Iptables-save>;/etc/sysconfig/Iptables

要恢复原来的规则库,需使用命令:#/sbin/Iptables-restore</etc/sysconfig/Iptables为了使得用Iptables命令配置的规则在下次启动机器时还能被使用,有两种方法:1、使用Iptables的启动脚本实现。Iptables的启动脚/etc/rc.d/init.d/Iptables每次启动时都使用/etc/sysconfig/Iptables所提供的规则进行规则恢复,并可以使用如下的命令保存规则:#serviceIptablessave2、在自定义脚本中用Iptables命令直接创建规则集。可以直接用Iptables命令编写一个规则脚本,并在启动时执行这个脚本。例如:若规则脚本的文件名为/etc/fw/rules,则可以在启动脚本/etc/rd.d/init.d/rc.local中加入下面的代码:if[-x/etc/fw/rules];then/etc/fw/rules;fi;这样,机器每次启动时即可执行该规则脚本。如果使用此种方式,建议使用ntsysv命令关闭系统的Iptables守护进程。2.6Iptables的优点1、Iptables允许建立状态〔stateful防火墙,就是在内存中保存穿过防火墙的每条连接。这种模式对于有效地配置FTP和DNS以及其它网络服务是必要的。2、Iptables能够过滤TCP标志任意组合报文,还能够过滤MAC地址。3、系统日志比ipchains更容易配置,扩展性也更好。4、对于网络地址转换〔NetworkAddressTranslation和透明代理的支持,Netfilter更为强大和易于使用。5、Iptables能够阻止某些DOS攻击,例如SYS洪泛攻击。3防火墙的配置及操作命令3.1链的基本操作1、清除所有的规则。通常在开始配置包过滤防火墙之初清除所有的规则,重新开配置,以免原有的规则影响新的设定。使用如下命令[9]进行:清除预设表filter中所有规则链中的规则:#Iptables–F清除预设表filter中使用者自定义链中的规则:#Iptables–X将指定链所有规则的包字节记数器清零:#Iptables–Z2、设置链的默认策略。一般地,配置链的默认策略有两种方法。〔1允许所有的包,然后再禁止有危险的包通过防火墙。即"没有被拒绝的都允许"。这种方法对于用户而言比较灵活方便,但对系统而言,容易引起严重的安全问题。为此,应该使用如下的初始化命令:#Iptables-PINPUTACCEPT#Iptables-POUTPUTACCEPT#Iptables-PFORWARDACCEPT〔2禁止所有的包,然后再根据需要的服务允许特定的包通过防火墙。即"没有明确允许的都被拒绝"。这种方法最安全,但不太方便。为了使得系统有足够的安全性,一般采用此种策略进行Iptables防火墙[10]的配置。为此,应该使用如下的初始化命令:#Iptables-PINPUTDROP#Iptables-POUTPUTDROP#Iptables-PFORWAEDDROP列出表/链中的所有规则。包过滤防火墙只使用filter表,此表为默认的表,因此可以使用下面的命令列出filter表中所有规则:#Iptables–L使用上面的命令时,Iptables将逆向解析IP地址,这将发费很多时间,从而造成信息出来的非常慢。为了解决这个问题,可以使用下面的带有-n参数的命令〔-n参数用于显示数字化的地址和端口:#Iptables-L–n向链中添加规则。下面的语句用于开放网络接口:#Iptables-AINPUT-ilo-jACCEPT#Iptables-AOUTPUT-olo-jACCEPT#Iptables-A

INPUT-i

eth0-jACCEPT#Iptables-AOUTPUT-oeth0-jACCEPT#Iptables-AFORWARD-ieth0-jACCEPT#Iptables-AFPRWAED-oeth0-jACCEPT使用用户自定义链。下面是一个用户自定义链的创建、修改和调用的简单命令序列:#Iptables-Ncustom#Iptables-Acustom-s0/0-d0/0-picmp-jDROP#Iptables-AINPUT-s0/0-d0/0-jcustom首先使用带-N参数的Iptables命令新建了一个名为custom的用户定义链。然后使用带-A参数的命令添加了一条用户自定义的堵截规则,该规则丢弃全部的ICMP包。最后向默认的INPUT链加入一条规则,使所有的包都由custom自定义链处理。结果全部的ICMP包都将被丢弃。3.2设置基本的规则匹配下面举例说明Iptables的基本规则匹配〔忽略目标动作:指定协议匹配#Iptables-AINPUT-ptcp匹配指定协议之外的所有协议#Iptables-AINPUT-p!tcp指定地址匹配指定匹配的主机#Iptables-AINPUT-s指定匹配的网络#Iptables-AINPUT-s/24匹配指定主机之外的地址。#Iptables-AFORWARD-s!匹配指定网络之外的网络#Iptables-AFORWARD-s!/24指定网络接口匹配。指定单一的网络接口匹配。#Iptables-AINPUT-ieth0#Iptables-AFORWARD-oeth0指定同类型的网络接口匹配#Iptables-AFORWARD-oppp+指定端口匹配指定单一的端口匹配。#Iptables-AINPUT-ptcp-sportwww#Iptables-AINPUT-ptcp-sport80#Iptables-AINPUT-ptcp-sport53#Iptables-AINPUT-pudp-dport53匹配指定端口之外的端口。#Iptables-AINPUT-ptcp-dport!22匹配指定端口的范围。#Iptables-AINPUT-ptcp-soprt22:80匹配ICMP端口和ICMP类型。#Iptables-AINPUT-picmp--icmp-type8指定ip碎片在TCP/IP通信过程中,每一个网络接口都有一个最大的传输单元〔MTU,这个参数定义了可以通过的数据包的最大尺寸。如果一个数据包大于这个参数值时,系统会将其划分成更小的数个数据包〔称之为ip碎片来传输,而接收方则对这些ip碎片[9]再进行重组以还原整个包。但是在进行包过滤的时候,ip碎片会导致这样一个问题:当系统将大数据包划分成ip碎片传送时,第一个碎片含有完整的XX信息〔IP+TCP、UDP和ICMP,但是后续的碎片只有XX的部分信息〔如源地址、目的地址。因此,检查后面的ip碎片的头部〔就像有TCP、UDP和ICMP一样是不可能的。假如有这样一条规则:并且这时的FORWARD的策略〔policy为DROP时,系统只会让第一个ip碎片通过,而丢掉其余的ip碎片,因为第一个碎片含有完整的XX[11]信息,可以满足该规则的条件,而余下的碎片因为XX信息不完整而无法满足规则定义的条件,因而无法通过。可以通过-fragment/-f选项来指定第二个及其以后的ip碎片,以上面的例子为例,我们可以再加上这样一条规则来解决这个问题:但是需要注意的是,现在已经有许多进行ip碎片攻击的实例〔例如向Win98NT4SP5,6Win2K发送大量的ip碎片进行DOS攻击,因此允许ip碎片通过是有安全隐患的,对于这一点可以采用Iptables的匹配扩展来进行限制。3.3设置扩展的规则匹配要获得匹配的简要说明,可以使用如下的命令:#Iptables-mname_of_match–help下面举例说明Iptables的扩展规则匹配〔忽略目标动作:匹配多个源端口。#Iptables-AINPUT-ptcp-mmultiport-source-port22,53,80,110匹配多个目的端口#Iptables-AINPUT-ptcp-mmultiport-destionation-port22,53,80,110匹配多个端口〔无论源源端口还是目的端口。#Iptables-AINPUT-ptcp-mmultiport-port22,53,80,110指定TCP匹配扩展通过使用-tcp-flags选项可以根据tcp包的标志位进行过滤,该选项后接两个参数:第一个参数为要检查的标志位,可以是SYN、ACK、FIN、URG、PSH的组合,可以用ALL指定所有标志位:第二个参数是标志位值为1的标志#Iptables-AINPUT-ptcp-tcp-flagsSYN,FIN,ACKSYN表示SYN、ACK、FIN的标志都要被检查,但是只有设置了SYN的才匹配。#Iptables-AINPUT-ptcp-tcp-flagsALLSYN,ACK表示ALL〔SYN,ACK,FIN,RST,URG,PSH的标志都要被检查,但是只有设置了SYN和ACK的才匹配。选项-syn是以上的一种特殊情况,相当于"--tcp-flagsSYN,RST,ACKSYN"的简写。#Iptables-ptc-synlimit速率匹配扩展指定单位时间内允许通过的数据包的个数。单位时间可以是/second、/minute、/hour、/day或使用第一个字母。例如:#Iptables-AINPUT-mlimit-limit300/hour表示限制每小时允许通过300个数据包。指定触发事件的阀值。使用-limit-burst指定触发事件的阀值〔默认是5,用来比对瞬间大量数据包的数量。#Iptables-AINPUT-mlimit-limit-burst10上面的例子是用来比对一次同时涌入的封包是否超过10个,超过此上限的包将被直接丢弃。同时指定速率限制和触发阀值。#Iptables-AINPUT-picmp-mlimit-limit3/m-limit-burst3假设均匀通过,平均每分钟3个,那么触发阀值burst保持为3个,如果每分钟通过的包的数目小于3,那么触发阀值burst将在每个周期〔若每分钟允许通过3个,则周期数为20秒后加1,但最大值为3。每分钟要通过的包的数量如果超过3,那么触发阀值burst将减掉超出的数值,例如第二分钟有4个包,那么触发阀值burst变成2,同时4个包都可以通过,第三分钟有6个包,则只能通过5个,触发阀值burst将变成0。之后,每分钟如果包数小于等于3,则触发阀值burst将加1,如果每分钟包数大于3,触发阀值burst将逐渐减小最终维持为0。即每分钟所允许的最大包数量为限制速率〔本例为3加上当前的触发阀值burst数。在任何情况下,都可以保证3个包通过,触发阀值burst相当于是允许额外的包数量。基于状态的匹配扩展

每个网络连接包括以下信息:源地址、目的地址、源端口、目的湍口,称为套接字对〔socketpairs;协议类型、连接状态〔TCP协议和超时时间等。防火墙把这些信息称为状态〔stateful,能够检测每个连接状态的防火墙叫作状态包过滤防火墙。它除了能够完成简单包过滤防火墙的包过滤工作外,还在自己的内存中维护一个跟踪连接状态的表,比简单包过滤防火墙具有更大的安全性。Iptables与ipchains的不同之处在于Iptables可以使用连接状态信息,创建基于包的状态的规则匹配。Iptables-mstate-state[!]state[state,state,state]其中,state表是一个用逗号分割的列表,用来指定的连接状态可以是如下的4种:NEW:该包想要开始一个连接〔重新连接或将连接重定向。RELATED:该包是属于某个已经建立连接[4]所建立的新连接。例如:FTP的数据传输连接和控制连接之间就是RELATED关系。ESTABLISHED:该包属于某个已经建立的连接。INVALID:该包不匹配于任何连接,通常这些包会被DROP。例如:在INPUT链添加一条规则,匹配已经建立的连接或由已经建立的连接所建立的新连接。即匹配所有的TCP回应包。#Iptables-AINPUT-mstate-stateRELATED,ESTABLISHED在INPUTP链添加一条规则,匹配所有从非eth0接口来的连接请求包。#Iptables-AINPUT-mstate-stateNEW-i!eth0又如,对于ftp连接可以使用下面的连接跟踪:被动ftp连接模式。#Iptables-AINPUT-ptcp-sport1024:--dport1024:-mstate-stateESTABLES-jACCEPT#Iptables-AOUTPUT-ptcp-sport1024:--dport1024:-mstate-stateESTABLISHED,RELATED-jACCEPT主动ftp连接模式。#Iptables-AINPUT-ptcp-sport20-mstate-stateESTABLISHED,RELATED-jACCEPT-mstate-stateESTABLISHED-jACCEPTToS匹配扩展所有数据包的首部都有一个称为服务类型的专用字段。该字段用于当数据包经过路由器时区分优先顺序。使用ToS字段,可以使用某种类型的数据包优先于其它的数据包。有标记的数据包在路由器中进行不同的处理。设置ToS字段的工作是在网络层进行的。有关ToS的具体工作过程请参专考RFC1349。在数据包中设置ToS字段的主要原因是:对不同类型的数据包加以区分,从而在流量较高的网络上减少网络拥塞。数据包的ToS字段用一个字节表示。此字节的高3位舍弃不用,最低位使用固定值0,因此,有效位共有4个。有效位分别用来控制数据包的最小延时,最大吞吐量,最大可靠度和最小成本。其中最小延时:用于减少数据包从路由到达主机的时间。最大吞吐量:用于提高数据传输量。适用于FTP数据端口,大文件传输和大量的POP3传输。最大可靠度:用来试图减少数据重传。最小成本:通常只在商业产品中使用。要创建与ToS字段匹配的规则,可以使用下面的语法:Iptables[-ttable]CMD[chain]-mtostos_value[-jtarget],其中tos_value可以是0x02、0x04、0x06、0x08、0x10。3.4设置目标扩展要获得目标的简要说明,可以使用如下的命令:#Iptables-jname_of_TARGET-help目标扩展由内核模块组成,而且Iptables的一个可选扩展提供了新的命令行选项。在几个扩展是包含在默认netfilter发布中的。1、设置包的ToS值。为了设置数据包的ToS值,需要使用ToS目标扩展。设置ToS的值,只能对FORWARD、OUTPUT和PREROUTING链进行。语法如下:Iptables[-ttable]CMD[chain][rule-matcher]-jTOS-set-tostos_value其中tos_value可以是0x02、0x04、0x06、0x08、0x10。2、日志记录,Iptables使用新的目标扩展LOG来实现日志记录。LOG目标用syslogd记录此包并继续传播。LOG目标扩展还可以使用如下的一些参数:log-level--跟踪一个级别名称或数字。合适的名字是‘debug’、‘info’、‘notice’、‘warning’、‘err’、‘crit’、‘alert’和‘emerg’,相当于数字7到0。参考syslog.conf的手册可获取这些级别的说明。默认是‘warning’。log-prefix——跟踪一个最多29个字符的字符串,它被写入到log信息的开始处,这样可以方便地使用grep对日志进行过滤。另外,在使用LOG目标扩展的同时,还可以使用limitmatch,这样可以使记录有用日志的同时确保日志记录不会变得冗长。下面是使用LOG目标扩展的一些例子:#Iptables-AFORWARD-mtcp-ptcp-jLOG#Iptables-AFORWARD-micmp-picmp-sportecho-reply-jLOG4防火墙的设计与实现4.1网络结构假设内部网有有效的Internet地址。为了将内部网段/24与Internet隔离,在内部网络和Internet之间使用了包过滤防火墙。防火墙的网接口是eth1<54>,防火墙的Internet接口是eth0<54>。加外,内网中有3台服务器对外提供服务,如图4.1所示。分别为:WWW服务器:IP地址为51FTP服务器:IP地址为52E-mail服务器:IP地址为53图4.1网络拓扑图4.2防火墙的实现要求1、允许网络接口相连接的网络之间相互通信。2、从网络发往internet的数据包被伪装成IP地址54。3、网络上的任何主机可以使用internet的任何服务〔Web,E-mail,Ftp等。4、拒绝从防火墙的internet接口〔eth0进行的欺骗攻击〔即黑客把防火墙作为默认网关,伪装成内部网IP,进入内部网络,并进行日志记录。5、拒绝全部从eth0进入的ICMP通信。6、允许internet用户访问网络中的DNS服务、WEB服务、FTP服务〔其它服务禁止如telnet等。4.3防火墙的实现原理包过滤器操作的基本过程如下,器工作流程图如图4.2所示:包过滤规则必须被包过滤设备端口存储起来。当包到达端口时,对包报头进行语法分析。大多数包过滤设备只检查IP、TCP、或UDP报头中的字段。包过滤规则已特殊的方式存储。应用于包的规则的顺序与包过滤器规则存储顺序必须相同。若一条规则阻止包传输或接收,则此包不被允许。若一条规则允许包传输或接收,则此包可以被继续处理。若包不满足任何一条规则,则此包被阻止。图4.2包过滤操作流程图数据包在Filter表中的流程图如图4.3所示,数据包的过滤过程如图4.4所示。有数据包进入系统时,系统首先根据路由表决定将数据包发给哪一条链,则可能有3种情况:<1>如果数据包的目的地址是本机,则系统将数据包送往INPUT链,如果通过规则检查,则该数据包发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢弃。<2>如果数据包的目的地址不是本机,也就是说,这个包将被转发,则系统将数据包送往FORWARD链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢弃。<3>如果数据包是由本地系统进程产生的,则系统将其送往OUTPUT链,如果通过规则检查,则该包被发给相应的本地进程处理;如果没有通过规则检查,系统就会将这个包丢弃。图4.3数据包在Filter表中的处理流程图图4.4信息包过滤过程示意图4.4防火墙的建立过程此防火墙主要是对内部的各种服务器提供保护。下面采用编辑并执行可执行脚本的方法建立此防火墙。其截图如图4.5所示,具本过程如下:图4.5RedHat9.0中的安全设置截图基本规则的配置#!/sbin/bash在屏幕上显示信息:echo"StartingIptablesrules..."开启内核转发功能echo"1">;/proc/sys/net/ipv4/ip_forward定义变量:IPT=/sbin/IptablesWWW-SERVER=51FTP-SERVER=52EMAIL-SERVER=53IP_RANGE="/24"刷新所有的链的规则:$IPT–F首先禁止转发任何包,然后再一步步设置允许通过的包,所以首先设置防火墙FORWARD链的策略为DROP。$IPT-PFORWARDDROP下面设置关于服务器的包过滤规则,由于服务器/客户机交互是双向的,所以不仅仅要设置数据包,出去的规则,还要设置数据包返回的规则。<1>WWW服务服务端口为80,采用tcp或udp协议,规则为eth0=>;允许目的为内部网WWW服务器的包:$IPT-AFORWARD-ptcp-d$WWW-SERVER-dportwww-ieth0-jACCEPT<2>FTP服务服务端口为21,数据端口20,FTP的传输模式有主动和被动之分,FTP服务采用tcp协议,规则为eth0=>;仅允许目的为内部网ftp服务器的包$IPT-AFORWARD-ptcp-d$FTP-SERVER-dportftp-ieth0-jACCEPT<3>EMAIL服务包含两个协议,一个是smtp,另一个是pop3,出于安全性考虑,通常只提供对内的pop3服务,所以在这里我们只考虑对smtp的安全性问题。smtp端口为25,采用tcp协议,规则为etho=>;仅允许目的为E-mail服务器的smtp请求。$IPT-AFORWARD-ptcp-d$EMAIL-SERVER-dportsmtp-ieth

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论