IPTables下防火墙的研究和实现

上传人:xx****m 文档编号:66916139 上传时间:2022-03-29 格式:DOCX 页数:33 大小:550.35KB
收藏 版权申诉 举报 下载
IPTables下防火墙的研究和实现_第1页
第1页 / 共33页
IPTables下防火墙的研究和实现_第2页
第2页 / 共33页
IPTables下防火墙的研究和实现_第3页
第3页 / 共33页
资源描述:

《IPTables下防火墙的研究和实现》由会员分享,可在线阅读,更多相关《IPTables下防火墙的研究和实现(33页珍藏版)》请在装配图网上搜索。

1、Hunan Vocational Institute of Safety Technology设计(论文)题目:IPTables下防火墙的研究与实现32 / 33摘 要计算机网络的迅速发展给人类社会带来了前所未有的飞跃,极大的提高了工作效率,丰富了人们的精神生活,而与此同时也带来了一个日益严峻的问题-网络安全。防火墙作为 一种行之有效的网络安全机制,已经得到广大用户的接受和认同。另一方面,网络应用的日益广泛使得各种不同的应用层协议不断涌现,这些协议在方便使用网络的同时也带了各种问题。例如P2P 协议在有多个用户同时进行下载的情况下会占用大量的网络资源,严重影响 网络的正常服务。因此,如何识别这

2、些协议并在需要的时候对其加以过滤具有很高的实用价值。作者在研究包过滤、代理服务、状态检测等防火墙基本实现技术的基础上,提出一种基于应用层协议过滤的iptables 防火墙解决方案。关键词:Linux;网络安全;防火墙;iptablesABSTRACTWiththerapiddevelopmentofcomputer network,theproblem of network security is becoming increasingly serious. As an effective way to guarantee the safety of network, firewall has

3、 been widely accepted and used. In the meantime, the wide use of computer network has result in more and more application protocols been introduced. These protocols make it easy for people to obtain information, but also cause inconvenience. For example, although P2P protocol makes download efficien

4、t, network bandwidth will be exhausted quickly if manypeopleuse P2P download simultaneously, which will make network service degrade. Therefore, it is important to identify these protocols and filter them. On the basis of the studies of firewall, such as package filter, application gateway, status i

5、nspection, the author introduced a solution of iptables firewall system based on layer7-filter.Keywords: Linux; network security; firewall; iptables; 目 录摘要I第一章 Linux防火墙概述41.1防火墙简介41.1.1 防火墙的功能41.1.2 防火墙的发展史41.1.3 防火墙的分类51.2 Linux 包过滤防火墙的架构61.3 Linux防火墙是安装,启动和关闭7第二章 IPTables 简介92.1 IPTables的基本概念92.2

6、IPTables数据包的传输过程102.3 激活IP包转发功能10第三章 IPTables的使用123.1 IPTables的基本格式123.2 IPTables命令的使用13第四章IPTables实现NAT功能184.1 NAT服务概念184.2 利用 IPTables服务实现NAT服务19第五章 IPTables技巧实例245.1 禁止访问不健康的245.2 禁止某些客户上网245.3 禁止客户使用某些服务255.4 禁止使用ICMP协议255.5 过滤265.6 利用IPTables的定时功能275.7 利用IPlimit参数设置最接数28结论30参考文献31致32第一章 Linux防火

7、墙概述1.1防火墙简介1.1.1 防火墙的功能防火墙是位于不同网络(如可信的企业部网和不可信的公共网)或网络安全域之间,对网络进行隔离并实现有条件通信的一系列软件/硬件设备的集合。它通过访问控制机制确定哪些部服务允许外部访问,以与允许哪些外部请求可以访问部服务。其基本功能是分析出入防火墙的数据包,根据IP结合防火墙的规则,来决定是否接收或允许数据包通过。防火墙系统可以由一台路由器,也可以由一台或一组主机组成。它通常被放置在网络入口处,所有外部网络通信数据包都必须经过防火墙,接受防火墙的检查,只有符合安全规则的数据才允许通过。通过使用防火墙可以实现以下功能:保护部网络中易受攻击的服务。控制外网之

8、间网络系统的访问。隐藏部网络的IP地址与结构的细节,提高网络的性。对网络存取和访问进行监控和审计。集中管理网的安全性,降低管理成本。1.1.2 防火墙的发展史第一代防火墙第一代防火墙技术几乎与路由器同时出现,采用了包过滤(Packet filter)技术。下图1.1表示了防火墙技术的简单发展历史。图1.1第二、三代防火墙1989年,贝尔实验室的Dave Presotto和Howard Trickey推出了第二代防火墙,即电路层防火墙,同时提出了第三代防火墙应用层防火墙(代理防火墙)的初步结构第四代防火墙1992年,USC信息科学院的BobBraden开发出了基于动态包过滤(Dynamic pa

9、cket filter)技术的第四代防火墙,后来演变为目前所说的状态监视(Stateful inspection)技术。1994年,以色列的CheckPoint公司开发出了第一个采用这种技术的商业化的产品。第五代防火墙1998年,NAI公司推出了一种自适应代理(Adaptive proxy)技术,并在其产品Gauntlet Firewall for NT中得以实现,给代理类型的防火墙赋予了全新的意义,可以称之为第五代防火墙。1.1.3 防火墙的分类根据动作方式的不同,通常把防火墙分为包过滤型和应用级网关两大类。(1)包过滤防火墙(Packet Filter) 包过滤防火墙通常安装在路由器或者安

10、装了网络操作系统的主机上。它在网络层根据配置好的包过滤规则对数据包进行过滤,其工作方式为:包过滤规则存储对应的包过滤设备端口,检查出入该防火墙端口的每一个IP数据和TCP头或UDP头来决定是否允许数据包通过。包过滤防火墙的优点是它对于用户来说是透明的,处理速度快,而且由于工作在网络层和传输层,与应用层无关,因此不用改动客户机和主机上的应用程序,易于安装和维护。缺点是非法访问一旦突破防火墙,即可对主机上的软件和配置漏洞进行攻击。(2)应用级网关(Application-level Gateway) 应用级网关又称代理服务器。它针对特定的网络应用服务协议使用指定的数据过滤逻辑,并在过滤的同时,对数

11、据包进行必要的分析、登记和统计,形成报告,当发现被攻击迹象时会向网络管理员发出警报,并保留攻击痕迹。应用级网关比单一的包过滤更为可靠,而且会详细地记录所有的访问状态信息。其不足之处是访问速度慢,因为它不允许用户直接访问网络,其次应用级网关需要对每一个特定的因特网服务安装相应的代理服务软件。1.2 Linux 包过滤防火墙的架构IPTables是一个免费的包过滤防火墙,它伴随着核的发展而逐渐演变,大致经历了下面4个阶段: 在1.1核中,采用ipfw来操作核包过滤规则。在2.0核中,采用ipfwadm来操作核包过滤规则。在2.2核中,采用ipchains来控制核包过滤规则。在2.4核中(如Red

12、Hat 9.0、RHEL),采用一个全新的核包过滤管理工具IPTables。 IPTables只是防火墙与用户之间的接口,真正起到防火墙作用的是Linux核中运行的netfilter。Linux平台下的包过滤防火墙由netfilter组件和IPTables组件组成,其中netfilter运行在核态,而IPTables运行在用户态,用户通过IPTables命令来调用netfilter来实现防火墙的功能。(1)netfilter组件netfilter是Linux核中的一个用于扩展各种网络服务的结构化底层框架。该框架定义了包过滤子系统功能的实现,提供了filter、nat和mangle3个表,默认使

13、用的是filter表。每个表中包含有若干条建的链(chains),用户可在表中创建自定义的链。在每条链中,可定义一条或多条过滤规则(rules)。每条规则应指定所要检查的包的特征以与如何处理与这对应的包,这被称为目标(target)。目标值可以是用户自定义的一个链名,也可以是ACCEPT、DROP、REJECT、RETURN等值。(2)IPTables组件IPTables组件是一个用来指定netfilter规则和管理核包过滤的工具,用户通过它来创建、删除或插入链,并可以在链中插入、删除和修改过滤规则。IPTables仅仅是一个包过滤工具,对过滤规则的执行则是通过netfilter和相关的支持模

14、块来实现的。1.3 Linux防火墙是安装,启动和关闭IPTables防火墙置于RedHat系统核中,所以它是随系统的安装而自动安装的。可使用如下命令检查是否已安装(如下图):图1.2 检查IPTables是否安装安装RHEL 4 AS时系统会提示是否开启防火墙,默认情况下将开启防火墙。由于系统的防火墙功能是使用IPTables实现的,因此系统会根据用户的设置在IPTables中添加相应的规则。如果在安装时选择禁用防火墙,则在安装完成后可在终端命令窗口中执行“setup”命令将弹出“配置应用程序” 窗口(如下图1-3)。图1.3“配置应用程序”窗口选择Firewall configuratio

15、n选项,则会进入防火墙配置窗如图1.4图1.4 “防火墙配置”窗口图1.5“防火墙配置定制”窗口 完成以上配置后,可在终端命令窗口中执行如下命令启动IPTables防火墙如图:图1.6 启动IPTables防火墙第二章 IPTables 简介2.1 IPTables的基本概念在使用IPTables之前我们先要理解规则、链、表这3个概念以与IPTables传输数据包的过程。规则 规则(rules)就是网络管理员预先定义的条件,每条规则的定义方式一般是“如果封包符合这样的条件就这样处理该数包”。链 链(chains)是数据包传输的路径,每一条链中可以有一条或数条规则。表 IPTables置了fil

16、ter表、nat表和mangle表用于实现包过滤、网络地址转换和包重构的功能。(1)filter表filter表是IPTables默认的表,如果没有指定使用哪个表,IPTables默认使用filter表来执行所有的命令。filter表根据系统管理员预定义的一组规则过滤符合条件的数据包。在filter表中只允许对数据包进行接收、丢弃的操作,而无法对数据包进行更改。(2)nat表nat表主要是用于网络地址转换NAT,该表可以实现一对一、一对多、多对多等NAT工作。NAT表包含了PREROUTING链、OUTPUT链和POSTROUTING链。其中PREROUTING链用于处理刚刚进入网络层未进行路

17、由判断的数据包,OUTPUT链用于处理在路由之前本地生成的数据包,POSTROUTING链处理在路由判断之后即将通过网卡发送出去的数据包。(3)mangle表某些特殊应用可能需要改写数据包的一些传输特性,例如更改数据包的TTL和TOS等,mangle表主要用于对指定包的传输特性进行修改。2.2 IPTables数据包的传输过程数据包通过IPTables的具体流程如图2-1所示。图2.1IPTables数据包传输的过程由图可知,当一个数据包进入计算机的网络接口时,数据首先进入POSTROUTING链,然后核根据路由表决定数据包的目标。若数据包的目的地址是本机,则将数据包送往INPUT链进行规则检

18、查,当数据包进入INPUT链后,系统的任何进程都会收到它,本机上运行的程序可以发送该数据包,这些数据包会经过OUTPUT链,再POSTROUTING链发出;若数据包的目的地址不是本机,则检查核是否允许转发,若允许,则将数据包送FORWARD链进行规则检查,若不允许,则丢弃该数据包。若是防火墙主机本地进程产生并准备发出的包,则数据包被送往OUTPUT链进行规则检查。2.3 激活IP包转发功能如果要把Linux配置成网关防火墙,核必须打开IP包转发功能(即路由功能),这样一个数据包才能被送到FORWARD链进行规则检查,否则与防火墙相连的两边的网络是完全隔离的。打开Linux核包转发功能,可使用以

19、下命令来实现 rootlocal # echo “1” /proc/sys/net/ipv4/ip_forward 上述命令只是一次性有效,为了让主机每次开机后都自动激活IP数据包转发功能,可以采用编辑配置文件/etc/sysctl.conf的方法,将其中的语句:net.ipv4.ip_forward=0 更改为net.ipv4.ip_forward=1执行如下命令: rootlocal # sysctl -p即可让系统启动后自动打开核的包转发功能。上述操作也可以通过执行下列命令来实现相应功能:rootlocal # sysctl -w net.ipv4.ip_forward=”1”rootl

20、ocal # sysctl -p还可以/etc/sysconfig/network配置文件中,通过以下配置项来开启核的包转发功能:FORWARD_IPV4true第三章 IPTables的使用3.1 IPTables的基本格式IPTables用于创建、维护和检查Linux核的IP包过滤规则,利用该命令可创建、删除或更名链,在链中创建或删除规则,设置链的策略等,功能很强大,用法也比较多,其命令基本格式为:IPTables -t 表名 命令选项 链 匹配选项 操作选项1. 表名选项“-t表名”用来选择要操作的表,表名可以是 filter,nat,mangle三者之一,如该参数缺省则默认为filte

21、r表。2. 命令选项命令选项用来指定对链或规则的操作,包括插入、删除、添加规则等。 IPTables的主要命令选项如表3.1所示。表3-1 IPTables的主要命令选项3. 链名选项“链”指定要操作的链名,除使用系统定义的链名外,用户也可自定义链名。4. 匹配选项匹配选项指定数据包与规则匹配所应具有的特征,包括源地址、目的地址、传输协议和端口号等。主要的匹配选项如表3.2所示。表3-2 IPTables的主要匹配选项5. 操作选项操作选项用于指定对匹配过滤规则的数据包所进行的处理。其形式为“-j target/jump”,其中“target”是对包的处理动作,“jump”代表一个用户自定义的

22、链名,用于跳转到该链进行规则检查。对数据常用的处理动作如表3.3所示。3-3 IPTables的主要目标动作选项3.2 IPTables命令的使用1. 对链的操作(1)查看链命令用法:IPTables -L 链命令功能:列出指定表的全部链与其规则例:列出filter表的全部规则链。rootlocal # IPTables -L 若要列出nat表的全部规则链,则操作命令为:rootlocal # IPTables -t nat -L(2)创建新链命令用法:IPTables -N 链名命令功能:以指定的名称创建一个新链例:创建一个名为mychain的新链。rootlocal # IPTables

23、-Nmychain(3)删除链命令用法:IPTables -X 链名命令功能:删除指定的用户自定义链例:删除新建的mychain链。rootlocal # IPTables -Xmychain2. 对规则的操作(1)添加规则 命令用法:IPTables-t 表名 -A 链名匹配选项-j动作 命令功能:向指定链的添加一条规则,该规则将会增加到规则列表的最后一行。 例:向filter表的INPUT链添加一条规则,将来自IP地址为192.168.1.1这台主机的数据包都丢弃。 rootlocal # IPTables -t filter -A INPUT -s 192.168.1.1 -j DROP

24、rootlocal # IPTables -t filter -L INPUT(2)插入规则命令用法:IPTables-t 表名 -I 链名规则号匹配选项-j动作 命令功能:在指定的规则号的前面插入一条规则,原规则将自动后移。若未指定规则号,则默认为1,即插入在所有规则的前面。 例:在第3条规则前插入一条规则,其容是禁止192.168.2.0子网段的所有用户访问本机TCP协议的80端口。rootlocal # IPTables -I INPUT 3 -s 192.168.2.0/24 -p tcp -dport 80 j DROProotlocal # IPTables -L INPUT例:在

25、第4条规则前插入一条规则,拒绝所有主机PING本机。rootlocal # IPTables I INPUT 4 s 0/0p icmp -icmp-type echo-request j DROProotlocal # IPTables -L INPUTChain INPUT (policy ACCEPT)target prot opt source destinationRH-Firewall-1-INPUT all - anywhere anywhereDROP all - 192.168.1.1 anywhereDROP tcp - 192.168.2.0/24 anywhere tc

26、p dpt: DROP icmp - anywhere anywhere icmp echo-requestACCEPT all - 192.168.1.1 anywhere 在该命令中,“-s 0/0”用于指定源地址为所有主机,“-icmp-type”用于指定icmp包的类型,“echo-request”代表ping包。(3)替换规则 命令用法:IPTables-t 表名 -R 链名规则号匹配选项-j动作 命令功能:将指定编号的规则替换为新的规则。 例:将上例中的第3条规则替换为允许192.168.2.0子网段的所有用户访问本机TCP协议的80端口。rootlocal # IPTables

27、-I INPUT 3 -s 192.168.2.0/24 -p tcp -dport80 j ACCEPTrootlocal # IPTables -L INPUT(4)删除规则 命令用法:IPTables-t 表名 -D 链名匹配选项-j动作 或:IPTables-t 表名 -D 链名规则号 命令功能:删除指定的规则或指定编号的规则 例:删除上例中被替换的第3条规则。rootlocal # IPTables -D INPUT -s 192.168.2.0/24 -p tcp -dport 80 -jACCEPT或:rootlocal # IPTables -D INPUT 3(5)设置链的默

28、认策略 命令用法:IPTables -t 表名 -P 链名 目标动作 命令功能:定义指定链的默认策略,即设置所有过滤规则都不满足的数据包的默认处理方式。 例:将INPUT、FORWARD和OUTPUT链的默认策略设置为ACCEPT。rootlocal # IPTables -P INPUT ACCEPTrootlocal # IPTables -P FORWARD ACCEPTrootlocal # IPTables -P OUTPUT ACCEPT(6)清除规则链中的所有规则 在新建规则时往往需要清除原有的规则,以免它们影响新设定的规则。如果规则比较多,一条条删除就会十分麻烦这时可以使用IP

29、Tables提供的清除规则选项达到快速删除所有规则的目的。 命令用法:IPTables -t 表名 -F 链名 命令功能:删除指定链中的全部规则,若未指定链,则删除表中所有链中的规则。 例:清除filter表中INPUT链中的全部规则。rootlocal # IPTables -F INPUT(7)归零包计数器 命令用法:IPTables -t 表名 -Z 命令功能:将指定表中的包计数器和流量计数器清零,如不指定表,则默认为filter表。 例:将filter表中的所有包计数器清零。rootlocal # IPTables -Z 若要将nat表中的所有包计数器清零,则实现命令为:rootloc

30、al # IPTables -t nat -Z3. 保存与恢复过滤规则用上述方法所建立的规则会被保存到核中,在重启系统时,会丢失这些规则。所以如果用户将没有错误且有效的规则集添加到数据包过滤表,则时希望在重启系统之后再次使用这些规则,必须将该规则集保存在文件中。其命令为: rootlocal # IPTables-save /etc/sysconfig/IPTables将数据包过滤表中的所有规则保存到/etc/sysconfig/IPTables脚本文件中以后,无论何时重启系统,都可以使用IPTables-restore命令将规则集从该脚本文件恢复到数据包过滤表。其命令为:rootlal #

31、IPTables-restore ;minimumHH:MM -timestopvalue -;maximumHH:MM -dayslistofdays -;alistofdaystoapply,from(casesensitive) Mon Tue Wed Thu Fri Sat Sun首先需要说明的是,这里所需要的time参数,在发行版的IPTables里是没有的,只有在extensions里才有,而这些extensions由不同的开发者提供,可以从网上下载安装。5.7 利用IPlimit参数设置最接数1.下载并安装最新的核源码 kenrel-source-2.4.20-13.7-i386

32、.rpm。 rpm-Uvhkenrel-source-2.4.20-13.7-i386.rpm 2.进入/usr/include目录,执行以下操作: root# mvasmasm_old root# mvlinuxlinux_old root# mvscsiscsi_old root#ln-s/usr/src/linux-2.4/include/asm./asm root#ln-s/usr/src/linux-2.4/include/linux./linux root# ln-s/usr/src/linux-2.4/include/scsi./scsi 3.下载patch-o-matic-20

33、030107.tar.tar并执行以下操作: root#exportKERNEL_DIR=/usr/src/linux-2.4 root#./runmeextra 按提示只需要安装自己想要的那些扩展功能补丁,这里只选择了iplimit。 4.执行makemrproper用makemenuconfig设置核选项,依次进入Networkingoptions-;IP:NetfilterConfiguration,选择刚才加入的扩展功能,在这里只要把iplimit选定成M模式就可以了。然后: root#makedep root#makebzImage root#makeinstall root#mak

34、emodules root#makemodules_install 安装完成,iplimit就可以使用了,例:我们让同一个IP到服务器的SSH的连接数不能超过3个。则命令如下: root#IPTables-AINPUT-ptcp-dport22-syn-miplimit-iplimit-above3-jREJECT 这样,从同一个IP到服务器的SSH的连接就只不能超过3个了。这个功能如果应用在上限制某些人下载容是很有帮助的,比apache加载连接数限制模块的方法要有效得多。结论 网络技术的发展,动态端口的应用日益增加对防火墙的数据包识别能力提出了新的要求。本文所设计的基于Iptables的Li

35、nux防火墙具有使用简单,配置容易,功能强大等特点,可以满足中小型企业网络安全防护功能。若将功能近一步扩展,如添加VPN等功能,即可成为成为具有大型企业级功能的防火墙。参考文献1 .Linux系统与网络管理.:中国铁道出版,2009;p20p22;2 江华.Linux服务器安全策略详解.:电子工业,2009;p202p204.3 陆昌辉,文龙.网络服务器组建、配置和管理Linux篇. :电子工业,2008;p32p34.4 Mark G.Sobell.Red Hat Linux指南基础与系统管理篇. :人民邮电,2008;p108p110.5 鸟哥.鸟哥的Linux私房菜服务器架设篇. :人民

36、邮电,2008;p90p93.6 晓辉,洪彬.Red Hat Linux服务器管理与配置实战详解. :化学工业,2010;p211p212.7 Linux时代:.8 Linux伊甸园:.linuxeden.致本次毕业设计最终得以完成,很感我的同学给我的帮助,一个人的知识是有限的,但两个人的智慧加起来就是无限的。当我遇到不会的地方,我的同学总能和我一起来讨论,在网上找解决的办法,没有你们的帮助,我的毕业设计不能这么顺利的完成,你们!在本次毕业设计的过程中自己也对以前的知识进行了一次重新的梳理,对之前掌握不牢固的知识点又进行了强化练习。同时自己也养成了在网上搜索解决问题方法的习惯,我们本是计算机人就应当要利用好网络来为我们服务。在这里我还要非常感我的指导老师匡老师,您的教学和指导是让我学好的一个最主要原因,您!最后,我祝愿我们所有的同学都能有一个自己喜欢的工作,从而去热爱自己的工作,热爱生活!

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!