ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:112.85KB ,
资源ID:8201478      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8201478.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Linux防火墙的设置Word格式.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

Linux防火墙的设置Word格式.docx

1、为了有效隔离来自 Internet 的外部入侵,防火墙(firewall)技术正在普及中。除了信息加密技术外,防火墙是当前最重要的一种网络安全技术。 防火墙实际上是一种访问控制技术,主要作用是通过限制网络或某一特定区域的通信,阻止对信息资源的非法访问和防止保密信息从受保护网络上非法输出。它是提供信息安全服务,实现网络和信息安全的基础设施。1.1 课程设计目的 在学习完计算机网络技术和Linux操作系统两门课程后,为了对所学的知识有一个全面的认识和系统的了解,通过此次课程设计的实际运用以便达到这些要求。1.2 Linux防火墙的简单介绍netfilter/iptables是Linux系统提供的一

2、个非常优秀的防火墙工具,它完全免费、功能强大、使用灵活、占用系统资源少,可以对经过的数据进行非常细致的控制。本节首先介绍有关iptables防火墙的基本知识,包括netfilter框架、iptables防火墙结构与原理、iptables命令格式等内容。2 Linux 防火墙的功能目前市场上有许多商用防火墙软件出售,但它们大多价格高昂,使许多个人及小企业用户难以承受。Linux 的出现给了我们一个新的选择。它提供了一套完全免费的解决方案,其内置防火墙功能非常强大,甚至超过了许多昂贵的商用软件。 1.1 包过滤功能 根据数据包的包头中某些标志性的字段,对数据包进行过滤。当数据包到达防火墙时,防火墙

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

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

5、用一个标志来确定包的一些基本信息是否要被写入日志中。1.2 代理服务功能 一个完整的防火墙解决方案不仅包括包过滤器,而且应该包括某种类型的应用层代理服务器。所谓代理服务,是指在防火墙上运行某种软件(称为代理程序),如果内部网需要与外部网通信,首先要建立与防火墙上代理程序的连接,把请求发送到代理程序;代理程序接收该请求,建立与外部网相应主机的连接,然后把内部网的请求通过新连接发送到外部网相应主机。反之亦然。概括的说,就是内部网和外部网的主机之间不能建立直接的连接,而是要通过代理服务进行转发。代理服务器具有用户级的身份验证,完备的日志记录和帐号管理等较包过滤器更加安全的功能。然而,许多代理机制需要

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

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

8、如下图2.1所示。图2.1 分组过滤示意图通过这种 IP 包伪装方式,Linux 方便地实现了“代理”功能。从外部看来,所有包的收发都是针对此 Linux 主机的,所以具有很好的安全性。3 Linux 防火墙的具体介绍前面说过,netfilter/iptables是Linux系统提供的一个非常优秀的防火墙工具,它完全免费、功能强大、使用灵活、占用系统资源少,可以对经过的数据进行非常细致的控制。下面就这些内容作一个比较具体的介绍。3.1 netfilter框架Linux内核包含了一个强大的网络子系统,名为netfilter,它可以为iptables内核防火墙模块提供有状态或无状态的包过滤服务,如

9、NAT、IP伪装等,也可以因高级路由或连接状态管理的需要而修改IP头信息。netfilter位于Linux网络层和防火墙内核模块之间,如图3.1所示。图3.1 netfilter在内核中的位置虽然防火墙模块构建在Linux内核,并且要对流经IP层的数据包进行处理,但它并没有改变IP协议栈的代码,而是通过netfilter模块将防火墙的功能引入IP层,从而实现防火墙代码和IP协议栈代码的完全分离。netfilter模块的结构如图3.2所示。图3.2 netfilter结构框架图对IPv4协议来说,netfilter在IP数据包处理流程的5个关键位置定义了5个钩子(hook)函数。当数据包流经这些

10、关键位置时,相应的钩子函数就被调用。从图3.2中可以看到,数据包从左边进入IP协议栈,进行IP校验以后,数据包被第一个钩子函数PRE_ROUTING处理,然后就进入路由模块,由其决定该数据包是转发出去还是送给本机。若该数据包是送给本机的,则要经过钩子函数LOCAL_IN处理后传递给本机的上层协议;若该数据包应该被转发,则它将被钩子函数FORWARD处理,然后还要经钩子函数POST_ROUTING处理后才能传输到网络。本机进程产生的数据包要先经过钩子函数LOCAL_OUT处理后,再进行路由选择处理,然后经过钩子函数POST_ROUTING处理后再发送到网络。3.2 iptables防火墙内核模块

11、netfilter框架为内核模块参与IP层数据包处理提供了很大的方便,内核的防火墙模块正是通过把自己的函数注册到netfilter的钩子函数这种方式介入了对数据包的处理。这些函数的功能非常强大,按照功能来分的话主要有4种,包括连接跟踪、数据包过滤、网络地址转换(NAT)和对数据包进行修改。其中,NAT还分为SNAT和DNAT,分别表示源网络地址转换和目的网络地址转换,内核防火墙模块函数的具体分布情况如图3.3所示。由图3.3可以看出,防火墙模块在netfilter的LOCAL_IN、FORWARD和LOCAL_OUT 3个位置分别注册了数据包过滤函数,数据包经过这些位置时,防火墙模块要对数据包

12、进行过滤。这三个位置也称为三条链,名称分别为INPUT、FORWARD和OUTPUT,它们共同组成了一张过滤表,每条链可以包含各种规则,每一条规则都包含0个或多个匹配以及一个动作。当数据包满足所有的匹配时,则过滤函数将执行设定的动作,以便对数据包进行过滤的。图3.3ptables防火墙内核模块结构框架图从图3.3中可以看出,除了过滤表以外,在PRE_ROUTING、LOCAL_OUT和POST_ ROUTING 3个位置各有一条有关NAT的链,名称分别为PREROUTING、OUTPUT和POSTROUTING,它们组成了NAT表。NAT链里面也可以包含各种规则,它指出了如何对数据包的地址进行

13、转换。此外,5个钩子函数位置的mangle链还组成了一张mangle表,这个表的主要功能是根据规则修改数据包的一些标志位,例如TTL、TOS等,也可以在内核空间为数据包设置一些标志。防火墙内的其他规则或程序(如tc等)可以利用这种标志对数据包进行过滤或高级路由。以上介绍的是iptables防火墙的内部结构,Linux系统还提供了iptables防火墙的用户接口,它可以在上述各张表所包含的链中添加规则,或者修改、删除规则,从而可以根据需要构建自己的防火墙。具体来说,用户是通过输入iptables命令来实现上述功能的。3.3 iptables命令格式在RHEL 中,iptables命令由iptab

14、les软件包提供,默认时,系统已经安装了该软件包,因此,用户可以直接输入iptables命令对防火墙中的规则进行管理。iptables命令相当复杂,具体格式如下所示。iptables -t 表名 链名 规则号 规则 -j 目标-t选项用于指定所使用的表,-j选项用于指定所使用的目标,iptables防火墙默认有filter、nat和mangle 3张表,也可以是用户自定义的表。表中包含了分布在各个位置的链,iptables命令所管理的规则就是存在于各种链中的。该选项不是必需的,如果未指定一个具体的表,则默认使用的是filter表。命令选项是必须要有的,它告诉iptables要做什么事情,是添加

15、规则、修改规则还是删除规则。有些命令选项后面要指定具体的链名称,而有些可以省略,此时,是对所有的链进行操作。还有一些命令要指定规则号。4 Netfilter/Iptables的原理Linux在其2.4内核中内置了一个基于网络层解决方案的防火墙系统Netfilter/Iptables,它使得用户能够很方便地在网络边界定制对数据包的各种控制,如有状态或无状态的包过滤、各种类型的网络地址转换、流量控制及高级的包处理等。Netfilter/Iptables系统采用模块化的架构方式,其主要模块有:通用框架Netfilter、数据包选择系统、连接跟踪系统及系统等等。4.1 Netfilter/Iptabl

16、es系统工作原理 Netfilter/Iptables系统所提供的数据包控制能力(包过滤、网络地址转换、包处理等)都是由内核模块通过注册回调函数和“IP表”来实现的。例如,iptablefilte模块通过注册 filter表及 3 个回调函数(NFIPLOCALIN;NFIPFORWARD;NFIPLOCALOUT)来实现 IPv4 包的过滤功能。下面以 iptablefilter模块的工作流程为例简单介绍一下 Netfilter/Iptables系统是如何工作的。当数据包进入系统时,系统首先根据路由表决定数据包的流向(即将数据包发往那个关键点),则可能有三种情况:(1)如果数据包的目的地址是

17、其它主机或网络,则系统将该包发往forward 关键点。此时,回调函数 NFIPFORWARD 根据 FORWARD 链(在 filter 表中)中的规则对数据包进行检查,如果规则匹配,则回调函数按规则所指定的动作来处理该包,否则丢弃该包。(2)如果数据包的目的地址是本机,则系统将数据包发往 input 关键点。此时,回调函数NFIPLOCALIN根据 INPUT 链(在 filter表中)中的规则对数据包进行检查,如果规则匹配,则回调函数就按规则所指定的动作来处理该包,否则丢弃该包。(3)如果该数据包的源地址是本机,则系统将该包发往 output 关键点。此时,回调函数 NFIPLOCALO

18、UT根据OUTPUT链(在filter表中)中的规则对数据包进行检查,如果规则匹配,则回调函数按规则所指定的动作来处理该包,否则丢弃该包。4.2 Netfilter 内核框架 Netfilter 是 Linux2.4.x 内核中用于包处理的抽象、通用化的框架,它为每种网络协议(IPv4、IPv6等)定义一套钩子函数(hook),其中 IPv4 定义了 5 个钩子函数。内核的模块可以对每种协议注册多个钩子,这样当某个数据包通过Netfilter框架时,Netfilter检测是否有任何模块对该协议和钩子函数进行了注册。若有,则将该数据包传给这些模块处理.Netfilter 提供了数据包过滤(fil

19、ter 表),网络地址转换(NAT表)及数据包处理(mangle表)三种数据包处理能力。4.3 内核与用户的交互 防火墙除了内核里的机制外,还需要在应用层有相应的配置工具 iptables,它是从三个默认的表Filter、Nat、Mangle 而得名,每个表有几条链。一条链就是发生在包 L 的一系列动作,例如 Filter表就有 INPUT、FORWARD、OUTPUT 三个不同的默认链。如果包过滤需要检查 IP包,则 netfilter框架在网络层截获 IP包,这就需要与用户定义的规则做比较。而这些规则的添加修改是通过内核和用户交互实现的,这就涉及一个如何与内核通信的问题。内核模块有三种办法

20、与进程打交道:首先是系统调用;第二种办法是通过设备文件;第三个办法便是使用 proc 文件系统。netfilter 采用了第一种修改系统调用的办法。ipables在应用层调用 setsockopt 进入内核,然后调用 netfilter c 又件中 nbetsockopt()实现交互,这样通过配置防火墙就可以按需要处理网络数据包。只有熟悉了 iptables提供的众多命令、选项等,在明白其工作原理的前提下,用户才能利用它未放心地创建大量的规则记录和策略去控制内核数据包,才能正确有效地使用防火墙。这样即使在图形界而下使用防火墙,通过点击你也明明白白内核里发生了什么。5 防火墙配置实例5.1 使用

21、命令方式进行配置RHEL 默认安装时,已经在系统中安装了iptables软件包,可以用以下命令查看。rootlocalhost # rpm -qa | grep iptables一般情况下,iptable开机时都已经默认运行,但与其他一些服务不同,iptables的功能是管理内核中的防火墙规则,不需要常驻内存的进程。如果对防火墙的配置做了修改,并且想保存已经配置的iptables规则,可以使用以下命令。# /etc/rc.d/init.d/iptables save此时,所有正在使用的防火墙规则将保存到/etc/sysconfig/iptables文件中,可以用以下命令查看该文件的内容。# m

22、ore /etc/sysconfig/iptables可以看到,/etc/sysconfig/iptables文件中包含了一些iptables规则,这些规则的形式与iptables命令类似,但也有区别。还有一种保存iptables规则的方法是使用iptables-save命令,格式如下:# iptables-save abc此时,正在使用的防火墙规则将保存到abc文件中。如果希望再次运行iptables,可以使用以下命令。# /etc/rc.d/init.d/iptables start上述命令实际上是清空防火墙所有规则后,再按/etc/sysconfig/iptables文件的内容重新设定防

23、火墙规则。还有一种复原防火墙规则的命令如下:# iptables-restore 此时,由iptables-save命令保存在abc文件中的规则将重新载入到防火墙中。如果使用以下命令,将停止iptables的运行。# /etc/rc.d/init.d/iptables stop上述命令实际上是清空防火墙中的规则,与“iptables F”命令类似。此外,/etc/sysconfig目录的iptables-config文件是iptables防火墙的配置文件,去掉注释后的初始内容和解释如下:配置1:IPTABLES_MODULES=ip_conntrack_netbios_ns ip_conntr

24、ack_ftp功能:当iptables启动时,载入ip_conntrack_netbios_ns和ip_conntrack_ftp两个iptables模块。配置2:IPTABLES_MODULES_UNLOAD=yes当iptables重启或停止时,是否卸载所载入的模块,yes表示是。配置3:IPTABLES_SAVE_ON_STOP=no当停止iptables时,是否把规则和链保存到/etc/sysconfig/iptables文件,no表示否。配置4:IPTABLES_SAVE_ON_RESTART=当重启iptables时,是否把规则和链保存到/etc/sysconfig/iptable

25、s文件,no表示否。配置5:IPTABLES_SAVE_COUNTER=当保存规则和链时,是否同时保存计数值,no表示否。配置6:IPTABLES_STATUS_NUMERIC=输出iptables状态时,是否以数字形式输出IP地址和端口号,yes表示是。配置7:IPTABLES_STATUS_VERBOSE=输出iptables状态时,是否包含输入输出设备,no表示否。配置8:IPTABLES_STATUS_LINENUMBERS=输出iptables状态时,是否同时输出每条规则的匹配数,yes表示是。通过以上各步骤的配置,可以建立一个基于 Linux 操作系统的包过滤防火墙。它具有配置简单

26、、安全性高和抵御能力强等优点。5.2使用图形界面方式进行配置为了使初学者也能构建iptables主机防火墙,在RHEL 中,还为用户提供了配置主机防火墙的图形界面。在RHEL 桌面环境下,选择“系统”|“管理”|“安全级别和防火墙”命令后,将出现图5.1所示的对话框。在图5.1中,名为“信任的服务”的列表框中列出了常见的网络服务名称,前面打勾的服务所对应的网络端口是开放的,允许外界的用户访问。如果用户需要开放更多的端口,可以在列出的服务名称前的框内单击鼠标,打上勾后再单击“应用”按钮即可。此外,窗口中还提供了启用或禁用防水墙的选择菜单,如图5.1所示。还有,如果在图5.1中单击了“其他端口”标

27、签,将在下面出现如图5.1所示的一个列表框和“添加”、“删除”按钮,用于添加和删除“信任的服务”列表框中未列出的端口。图5.1 防火墙设置对话框图5.2 展开后的防火墙设置对话框在图5.2中,如果单击“添加”按钮,将出现图5.3所示的对话框。此时,可以输入需要开放的端口号,并选择TCP或UDP协议,然后单击“确定”按钮,将返回到图5.2所示的防火墙设置对话框,然后在“其他端口”列表框中将出现所添加的端口号和协议名称。单击“删除”按钮可以删除列表框中选中的端口。为了使添加或删除端口生效,需要单击图5.2中的“应用”按钮,此时将出现图5.4所示的对话框,要求用户确认该操作。图5.3 添加端口图5.

28、4确认修改防火墙设置以上是通过图形界面管理主机防火墙规则,实际的结果和命令方式是一样的。6 结束语安全总是相对和无止境的,防火墙有其固有的局限性。人们必须时刻保持高度警惕去防止新的攻击,动态跟踪系统的安全状况,开发新的功能和采取新的策略。本文通过分析 netfilter 构建防火墙的机制与技术,利用实例讲解了利用 netfilter 框架编程实现新功能,这种分析有利于研究人员去开发新的好的功能用防火墙去努力保障主体的安全。7 参考文献1 The netfilter framework in linux 2.4EB/OL. http:/www.gnumonks.org/ 2 Linux 2.4 netfilter hacking HOWTOEB/OL. http:/ netfilter.kernelnotes.org/ 3 徐辉,潘爱民,阳振坤.Linux防火墙的原理与实现J.计算机应用,2002. 4 Linux操作系统实用教程M.北京:清华大学出版社,2010. 5 黄允聪,严望佳,防火墙的选型、配置、安装和维护M.北京:清华大学出版社,1999.

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2