linux下iptables网络防火墙的研究与实现_第1页
linux下iptables网络防火墙的研究与实现_第2页
linux下iptables网络防火墙的研究与实现_第3页
linux下iptables网络防火墙的研究与实现_第4页
linux下iptables网络防火墙的研究与实现_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

摘要LINUX24内核中NETFILTER/IPTABLES的出现,为构建LINUX下防火墙提供了很好的平台。IPTABLES是在LINUX操作系统下基于24之上内核版本的集成网络安全工具包。该工具通过编程可以实现多种网络安全功能,如数据包过滤、状态保持、NAT(NETWORKADDRESSTRANSLATION,网络地址转换以及抵抗攻击等等。本文主要是针对LINUX下IPTABLES的的应用进行学习与研究,结构上可以分为三个部分LINUX防火墙的概述,IPTABLES的的简介以及如何使用IPTABLES来为我们的日常工作所服务。例如在我们的日常工作中的应用到的过滤网址、IP,禁用端口、协议等等。利用IPTABLES这个工具在LINUX服务器上实现安全稳定、功能强大的防火墙。目前这也是被企业和高校广泛采用的一种比较成熟的技术。本次毕设课题研究的实验环境均在虚拟机上实现,使用RHEL4AS系统和CENTOS4系统。关键词LINUX,防火墙,IPTABLES,规则,过滤目录第一章LINUX防火墙概述111防火墙简介112LINUX包过滤防火墙的架构413LINUX防火墙的安装、启动和关闭5第二章IPTABLES简介921IPTABLES的基本概念922IPTABLES数据包的传输过程1023激活IP包转发功能11第三章IPTABLES的使用1331IPTABLES的命令格式1332IPTABLES命令的使用15第四章IPTABLES实现NAT服务2141NAT服务概述2142利用IPTABLES实现NAT服务23第五章IPTABLES技巧实例2951禁止访问不健康的网站2952禁止某些客户上网2953禁止客户使用某些服务3054禁止使用ICMP协议3055利用字符串匹配过滤视频网站3256利用IPTABLES的定时功能3457利用IPLIMIT参数设置最大连接数35第六章致谢37参考文献38第一章LINUX防火墙概述11防火墙简介1防火墙的功能防火墙是位于不同网络(如可信的企业内部网和不可信的公共网)或网络安全域之间,对网络进行隔离并实现有条件通信的一系列软件/硬件设备的集合。它通过访问控制机制确定哪些内部服务允许外部访问,以及允许哪些外部请求可以访问内部服务。其基本功能是分析出入防火墙的数据包,根据IP包头结合防火墙的规则,来决定是否接收或允许数据包通过。防火墙系统可以由一台路由器,也可以由一台或一组主机组成。它通常被放置在网络入口处,所有内外部网络通信数据包都必须经过防火墙,接受防火墙的检查,只有符合安全规则的数据才允许通过。通过使用防火墙可以实现以下功能保护内部网络中易受攻击的服务。控制内外网之间网络系统的访问。隐藏内部网络的IP地址及结构的细节,提高网络的保密性。对网络存取和访问进行监控和审计。集中管理内网的安全性,降低管理成本。2防火墙的发展史第一代防火墙第一代防火墙技术几乎与路由器同时出现,采用了包过滤PACKETFILTER技术。下图(11)表示了防火墙技术的简单发展历史。图11第二、三代防火墙1989年,贝尔实验室的DAVEPRESOTTO和HOWARDTRICKEY推出了第二代防火墙,即电路层防火墙,同时提出了第三代防火墙应用层防火墙代理防火墙的初步结构。第四代防火墙1992年,USC信息科学院的BOBBRADEN开发出了基于动态包过滤DYNAMICPACKETFILTER技术的第四代防火墙,后来演变为目前所说的状态监视STATEFULINSPECTION技术。1994年,以色列的CHECKPOINT公司开发出了第一个采用这种技术的商业化的产品。第五代防火墙1998年,NAI公司推出了一种自适应代理ADAPTIVEPROXY技术,并在其产品GAUNTLETFIREWALLFORNT中得以实现,给代理类型的防火墙赋予了全新的意义,可以称之为第五代防火墙。3防火墙的分类根据动作方式的不同,通常把防火墙分为包过滤型和应用级网关两大类。(1)包过滤防火墙(PACKETFILTER)包过滤防火墙通常安装在路由器或者安装了网络操作系统的主机上。它在网络层根据配置好的包过滤规则对数据包进行过滤,其工作方式为包过滤规则存储对应的包过滤设备端口,检查出入该防火墙端口的每一个IP数据包头和TCP头或UDP头来决定是否允许数据包通过。包过滤防火墙的优点是它对于用户来说是透明的,处理速度快,而且由于工作在网络层和传输层,与应用层无关,因此不用改动客户机和主机上的应用程序,易于安装和维护。缺点是非法访问一旦突破防火墙,即可对主机上的软件和配置漏洞进行攻击。(2)应用级网关(APPLICATIONLEVELGATEWAY)应用级网关又称代理服务器。它针对特定的网络应用服务协议使用指定的数据过滤逻辑,并在过滤的同时,对数据包进行必要的分析、登记和统计,形成报告,当发现被攻击迹象时会向网络管理员发出警报,并保留攻击痕迹。应用级网关比单一的包过滤更为可靠,而且会详细地记录所有的访问状态信息。其不足之处是访问速度慢,因为它不允许用户直接访问网络,其次应用级网关需要对每一个特定的因特网服务安装相应的代理服务软件,另外也不是所有的因特网应用软件都可以使用代理服务器。12LINUX包过滤防火墙的架构IPTABLES是一个免费的包过滤防火墙,它伴随着内核的发展而逐渐演变,大致经历了下面4个阶段在11内核中,采用IPFW来操作内核包过滤规则。在20内核中,采用IPFWADM来操作内核包过滤规则。在22内核中,采用IPCHAINS来控制内核包过滤规则。在24内核中(如REDHAT90、RHEL),采用一个全新的内核包过滤管理工具IPTABLES。IPTABLES只是防火墙与用户之间的接口,真正起到防火墙作用的是LINUX内核中运行的NETFILTER。LINUX平台下的包过滤防火墙由NETFILTER组件和IPTABLES组件组成,其中NETFILTER运行在内核态,而IPTABLES运行在用户态,用户通过IPTABLES命令来调用NETFILTER来实现防火墙的功能。(1)NETFILTER组件NETFILTER是LINUX内核中的一个用于扩展各种网络服务的结构化底层框架。该框架定义了包过滤子系统功能的实现,提供了FILTER、NAT和MANGLE3个表,默认使用的是FILTER表。每个表中包含有若干条内建的链(CHAINS),用户可在表中创建自定义的链。在每条链中,可定义一条或多条过滤规则(RULES)。每条规则应指定所要检查的包的特征以及如何处理与这对应的包,这被称为目标(TARGET)。目标值可以是用户自定义的一个链名,也可以是ACCEPT、DROP、REJECT、RETURN等值。(2)IPTABLES组件IPTABLES组件是一个用来指定NETFILTER规则和管理内核包过滤的工具,用户通过它来创建、删除或插入链,并可以在链中插入、删除和修改过滤规则。IPTABLES仅仅是一个包过滤工具,对过滤规则的执行则是通过NETFILTER和相关的支持模块来实现的。13LINUX防火墙的安装、启动和关闭IPTABLES防火墙内置于REDHAT系统内核中,所以它是随系统的安装而自动安装的。可使用如下命令检查是否已安装(如下图)图12检查IPTABLES是否安装安装RHEL4AS时系统会提示是否开启防火墙,默认情况下将开启防火墙。由于系统的防火墙功能是使用IPTABLES实现的,因此系统会根据用户的设置在IPTABLES中添加相应的规则。如果在安装时选择禁用防火墙,则在安装完成后可在终端命令窗口中执行“SETUP”命令将弹出“配置应用程序”窗口(如下图13)。图13“配置应用程序”窗口选择FIREWALLCONFIGURATION选项,则会进入防火墙配置窗口如图14。图14“防火墙配置”窗口图15“防火墙配置定制”窗口完成以上配置后,可在终端命令窗口中执行如下命令启动IPTABLES防火墙如图16图16启动IPTABLES防火墙第二章IPTABLES简介21IPTABLES的基本概念在使用IPTABLES之前我们先要理解规则、链、表这3个概念以及IPTABLES传输数据包的过程。规则规则RULES就是网络管理员预先定义的条件,每条规则的定义方式一般是“如果封包符合这样的条件就这样处理该数包”。链链CHAINS是数据包传输的路径,每一条链中可以有一条或数条规则。表IPTABLES内置了FILTER表、NAT表和MANGLE表用于实现包过滤、网络地址转换和包重构的功能。(1)FILTER表FILTER表是IPTABLES默认的表,如果没有指定使用哪个表,IPTABLES默认使用FILTER表来执行所有的命令。FILTER表根据系统管理员预定义的一组规则过滤符合条件的数据包。在FILTER表中只允许对数据包进行接收、丢弃的操作,而无法对数据包进行更改。(2)NAT表NAT表主要是用于网络地址转换NAT,该表可以实现一对一、一对多、多对多等NAT工作。NAT表包含了PREROUTING链、OUTPUT链和POSTROUTING链。其中PREROUTING链用于处理刚刚进入网络层未进行路由判断的数据包,OUTPUT链用于处理在路由之前本地生成的数据包,POSTROUTING链处理在路由判断之后即将通过网卡发送出去的数据包。(3)MANGLE表某些特殊应用可能需要改写数据包的一些传输特性,例如更改数据包的TTL和TOS等,MANGLE表主要用于对指定包的传输特性进行修改。22IPTABLES数据包的传输过程数据包通过IPTABLES的具体流程如图21所示。图21IPTABLES数据包传输的过程由图可知,当一个数据包进入计算机的网络接口时,数据首先进入POSTROUTING链,然后内核根据路由表决定数据包的目标。若数据包的目的地址是本机,则将数据包送往INPUT链进行规则检查,当数据包进入INPUT链后,系统的任何进程都会收到它,本机上运行的程序可以发送该数据包,这些数据包会经过OUTPUT链,再POSTROUTING链发出;若数据包的目的地址不是本机,则检查内核是否允许转发,若允许,则将数据包送FORWARD链进行规则检查,若不允许,则丢弃该数据包。若是防火墙主机本地进程产生并准备发出的包,则数据包被送往OUTPUT链进行规则检查。23激活IP包转发功能如果要把LINUX配置成网关防火墙,内核必须打开IP包转发功能(即路由功能),这样一个数据包才能被送到FORWARD链进行规则检查,否则与防火墙相连的两边的网络是完全隔离的。打开LINUX内核包转发功能,可使用以下命令来实现ROOTLOCALECHO“1”/PROC/SYS/NET/IPV4/IP_FORWARD上述命令只是一次性有效,为了让主机每次开机后都自动激活IP数据包转发功能,可以采用编辑配置文件/ETC/SYSCTLCONF的方法,将其中的语句NETIPV4IP_FORWARD0更改为NETIPV4IP_FORWARD1执行如下命令ROOTLOCALSYSCTLP即可让系统启动后自动打开内核的包转发功能。上述操作也可以通过执行下列命令来实现相应功能ROOTLOCALSYSCTLWNETIPV4IP_FORWARD”1”ROOTLOCALSYSCTLP还可以/ETC/SYSCONFIG/NETWORK配置文件中,通过以下配置项来开启内核的包转发功能FORWARD_IPV4TRUE第三章IPTABLES的使用31IPTABLES的命令格式IPTABLES用于创建、维护和检查LINUX内核的IP包过滤规则,利用该命令可创建、删除或更名链,在链中创建或删除规则,设置链的策略等,功能很强大,用法也比较多,其命令基本格式为IPTABLEST表名命令选项链匹配选项操作选项1表名选项“T表名”用来选择要操作的表,表名可以是FILTER,NAT,MANGLE三者之一,如该参数缺省则默认为FILTER表。2命令选项命令选项用来指定对链或规则的操作,包括插入、删除、添加规则等。IPTABLES的主要命令选项如表31所示。表31IPTABLES的主要命令选项3链名选项“链”指定要操作的链名,除使用系统定义的链名外,用户也可自定义链名。4匹配选项匹配选项指定数据包与规则匹配所应具有的特征,包括源地址、目的地址、传输协议和端口号等。主要的匹配选项如表32所示。表32IPTABLES的主要匹配选项5操作选项操作选项用于指定对匹配过滤规则的数据包所进行的处理。其形式为“JTARGET/JUMP”,其中“TARGET”是对包的处理动作,“JUMP”代表一个用户自定义的链名,用于跳转到该链进行规则检查。对数据常用的处理动作如表33所示。表33IPTABLES的主要目标动作选项32IPTABLES命令的使用1对链的操作(1)查看链命令用法IPTABLESL链命令功能列出指定表的全部链及其规则例列出FILTER表的全部规则链。ROOTLOCALIPTABLESL若要列出NAT表的全部规则链,则操作命令为ROOTLOCALIPTABLESTNATL(2)创建新链命令用法IPTABLESN链名命令功能以指定的名称创建一个新链例创建一个名为MYCHAIN的新链。ROOTLOCALIPTABLESNMYCHAIN(3)删除链命令用法IPTABLESX链名命令功能删除指定的用户自定义链例删除新建的MYCHAIN链。ROOTLOCALIPTABLESXMYCHAIN2对规则的操作(1)添加规则命令用法IPTABLEST表名A链名匹配选项J动作命令功能向指定链的添加一条规则,该规则将会增加到规则列表的最后一行。例向FILTER表的INPUT链添加一条规则,将来自IP地址为19216811这台主机的数据包都丢弃。ROOTLOCALIPTABLESTFILTERAINPUTS19216811JDROPROOTLOCALIPTABLESTFILTERLINPUT(2)插入规则命令用法IPTABLEST表名I链名规则号匹配选项J动作命令功能在指定的规则号的前面插入一条规则,原规则将自动后移。若未指定规则号,则默认为1,即插入在所有规则的前面。例在第3条规则前插入一条规则,其内容是禁止19216820子网段的所有用户访问本机TCP协议的80端口。ROOTLOCALIPTABLESIINPUT3S19216820/24PTCPDPORT80JDROPROOTLOCALIPTABLESLINPUT例在第4条规则前插入一条规则,拒绝所有主机PING本机。ROOTLOCALIPTABLESIINPUT4S0/0PICMPICMPTYPEECHOREQUESTJDROPROOTLOCALIPTABLESLINPUTCHAININPUTPOLICYACCEPTTARGETPROTOPTSOURCEDESTINATIONRHFIREWALL1INPUTALLANYWHEREANYWHEREDROPALL19216811ANYWHEREDROPTCP19216820/24ANYWHERETCPDPTHTTPDROPICMPANYWHEREANYWHEREICMPECHOREQUESTACCEPTALL19216811ANYWHERE在该命令中,“S0/0”用于指定源地址为所有主机,“ICMPTYPE”用于指定ICMP包的类型,“ECHOREQUEST”代表PING包。(3)替换规则命令用法IPTABLEST表名R链名规则号匹配选项J动作命令功能将指定编号的规则替换为新的规则。例将上例中的第3条规则替换为允许19216820子网段的所有用户访问本机TCP协议的80端口。ROOTLOCALIPTABLESIINPUT3S19216820/24PTCPDPORT80JACCEPTROOTLOCALIPTABLESLINPUT(4)删除规则命令用法IPTABLEST表名D链名匹配选项J动作或IPTABLEST表名D链名规则号命令功能删除指定的规则或指定编号的规则例删除上例中被替换的第3条规则。ROOTLOCALIPTABLESDINPUTS19216820/24PTCPDPORT80JACCEPT或ROOTLOCALIPTABLESDINPUT3(5)设置链的默认策略命令用法IPTABLEST表名P链名目标动作命令功能定义指定链的默认策略,即设置所有过滤规则都不满足的数据包的默认处理方式。例将INPUT、FORWARD和OUTPUT链的默认策略设置为ACCEPT。ROOTLOCALIPTABLESPINPUTACCEPTROOTLOCALIPTABLESPFORWARDACCEPTROOTLOCALIPTABLESPOUTPUTACCEPT(6)清除规则链中的所有规则在新建规则时往往需要清除原有的规则,以免它们影响新设定的规则。如果规则比较多,一条条删除就会十分麻烦这时可以使用IPTABLES提供的清除规则选项达到快速删除所有规则的目的。命令用法IPTABLEST表名F链名命令功能删除指定链中的全部规则,若未指定链,则删除表中所有链中的规则。例清除FILTER表中INPUT链中的全部规则。ROOTLOCALIPTABLESFINPUT(7)归零包计数器命令用法IPTABLEST表名Z命令功能将指定表中的包计数器和流量计数器清零,如不指定表,则默认为FILTER表。例将FILTER表中的所有包计数器清零。ROOTLOCALIPTABLESZ若要将NAT表中的所有包计数器清零,则实现命令为ROOTLOCALIPTABLESTNATZ3保存与恢复过滤规则用上述方法所建立的规则会被保存到内核中,在重启系统时,会丢失这些规则。所以如果用户将没有错误且有效的规则集添加到数据包过滤表,则时希望在重启系统之后再次使用这些规则,必须将该规则集保存在文件中。其命令为ROOTLOCALIPTABLESSAVE/ETC/SYSCONFIG/IPTABLES将数据包过滤表中的所有规则保存到/ETC/SYSCONFIG/IPTABLES脚本文件中以后,无论何时重启系统,都可以使用IPTABLESRESTORE命令将规则集从该脚本文件恢复到数据包过滤表。其命令为ROOTLALIPTABLESRESTOREMINIMUMHHMMTIMESTOPVALUEMAXIMUMHHMMDAYSLISTOFDAYSALISTOFDAYSTOAPPLY,FROMCASESENSITIVEMONTUEWEDTHUFRISATSUN首先需要说明的是,这里所需要的TIME参数,在发行版的IPTABLES里是没有的,只有在EXTENSIONS里才有,而这些EXTENSIONS由不同的开发者提供,可以从网上下载安装。57利用IPLIMIT参数设置最大连接数1下载并安装最新的内核源码KENRELSOURCE2420137I386RPM。RPMUVHKENRELSOURCE2420137I386RPM2进入/USR/INCLUDE目录,执行以下操作ROOTMVASMASM_OLDROOTMVLINUXLINUX_OLDROOTMVSCSISCSI_OLDROOTLNS/USR/SRC/LINUX24/INCLUDE/ASM/ASMROOTLNS/USR/SRC/LINUX24/INCLUDE/LINUX/LINUXROOTLNS/USR/SRC/LINUX24/INCLUDE/SCSI/SCSI3下载PATCHOMATIC20030107TARTAR并执行以下操作ROOTEXPORTKERNEL_DIR“/USR/SRC/LINUX24“ROOT/RUNMEEXTRA按提示只需要安装自己想要的那些扩展功能补丁,这里只选择了IPLIMIT。4执行MAKEMRPROPER用MAKEMENUCONFIG设置内核选项,依次进入“NETWORKINGOPTIONS“IPNETFILTERCONFIGURATION“,选择刚才加入的扩展功能,在这里只要把IPLIMIT选定成M模式就可以了。然后ROOTMAKEDEPROOTMAKEBZIMAGEROOTMAKEINSTALLROOTMAKEMODULESROOTMAKEMODULES_INSTALL安装完成,IPLIMIT就可以使用了,例我们让同一个IP到服务器的SSH的连接数不能超

温馨提示

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

评论

0/150

提交评论