linux防火墙的设置.docx

上传人:b****1 文档编号:14089180 上传时间:2023-06-20 格式:DOCX 页数:20 大小:25.91KB
下载 相关 举报
linux防火墙的设置.docx_第1页
第1页 / 共20页
linux防火墙的设置.docx_第2页
第2页 / 共20页
linux防火墙的设置.docx_第3页
第3页 / 共20页
linux防火墙的设置.docx_第4页
第4页 / 共20页
linux防火墙的设置.docx_第5页
第5页 / 共20页
linux防火墙的设置.docx_第6页
第6页 / 共20页
linux防火墙的设置.docx_第7页
第7页 / 共20页
linux防火墙的设置.docx_第8页
第8页 / 共20页
linux防火墙的设置.docx_第9页
第9页 / 共20页
linux防火墙的设置.docx_第10页
第10页 / 共20页
linux防火墙的设置.docx_第11页
第11页 / 共20页
linux防火墙的设置.docx_第12页
第12页 / 共20页
linux防火墙的设置.docx_第13页
第13页 / 共20页
linux防火墙的设置.docx_第14页
第14页 / 共20页
linux防火墙的设置.docx_第15页
第15页 / 共20页
linux防火墙的设置.docx_第16页
第16页 / 共20页
linux防火墙的设置.docx_第17页
第17页 / 共20页
linux防火墙的设置.docx_第18页
第18页 / 共20页
linux防火墙的设置.docx_第19页
第19页 / 共20页
linux防火墙的设置.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

linux防火墙的设置.docx

《linux防火墙的设置.docx》由会员分享,可在线阅读,更多相关《linux防火墙的设置.docx(20页珍藏版)》请在冰点文库上搜索。

linux防火墙的设置.docx

linux防火墙的设置

linux防火墙的设置

Linux防火墙配置

(一)

随着Internet规模的迅速扩大,安全问题也越来越重要,而构建防火墙是保护系统免受侵害的最基本的一种手段。

虽然防火墙并不能保证系统绝对的安全,但由于它简单易行、工作可靠、适应性强,还是得到了广泛的应用。

本章主要介绍与Linux系统紧密集成的iptables防火墙的工作原理、命令格式,以及一些应用实例。

9.1iptables防火墙介绍

netfilter/iptables是Linux系统提供的一个非常优秀的防火墙工具,它完全免费、功能强大、使用灵活、占用系统资源少,可以对经过的数据进行非常细致的控制。

本节首先介绍有关iptables防火墙的基本知识,包括netfilter框架、iptables防火墙结构与原理、iptables命令格式等内容。

9.1.1netfilter框架

Linux内核包含了一个强大的网络子系统,名为netfilter,它可以为iptables内核防火墙模块提供有状态或无状态的包过滤服务,如NAT、IP伪装等,也可以因高级路由或连接状态管理的需要而修改IP头信息。

netfilter位于Linux网络层和防火墙内核模块之间,如图9-1所示。

        图9-1netfilter在内核中的位置

虽然防火墙模块构建在Linux内核,并且要对流经IP层的数据包进行处理,但它并没有改变IP协议栈的代码,而是通过netfilter模块将防火墙的功能引入IP层,从而实现防火墙代码和IP协议栈代码的完全分离。

netfilter模块的结构如图9-2所示。

                  图9-2netfilter结构框架图

对IPv4协议来说,netfilter在IP数据包处理流程的5个关键位置定义了5个钩子(hook)函数。

当数据包流经这些关键位置时,相应的钩子函数就被调用。

从图9-2中可以看到,数据包从左边进入IP协议栈,进行IP校验以后,数据包被第一个钩子函数PRE_ROUTING处理,然后就进入路由模块,由其决定该数据包是转发出去还是送给本机。

若该数据包是送给本机的,则要经过钩子函数LOCAL_IN处理后传递给本机的上层协议;若该数据包应该被转发,则它将被钩子函数FORWARD处理,然后还要经钩子函数POST_ROUTING处理后才能传输到网络。

本机进程产生的数据包要先经过钩子函数LOCAL_OUT处理后,再进行路由选择处理,然后经过钩子函数POST_ROUTING处理后再发送到网络。

%说明:

内核模块可以将自己的函数注册到钩子函数中,每当有数据包经过该钩子点时,钩子函数就会按照优先级依次调用这些注册的函数,从而可以使其他内核模块参与对数据包的处理。

这些处理可以是包过滤、NAT以及用户自定义的一些功能。

9.1.2iptables防火墙内核模块

netfilter框架为内核模块参与IP层数据包处理提供了很大的方便,内核的防火墙模块正是通过把自己的函数注册到netfilter的钩子函数这种方式介入了对数据包的处理。

这些函数的功能非常强大,按照功能来分的话主要有4种,包括连接跟踪、数据包过滤、网络地址转换(NAT)和对数据包进行修改。

其中,NAT还分为SNAT和DNAT,分别表示源网络地址转换和目的网络地址转换,内核防火墙模块函数的具体分布情况如图9-3所示。

由图9-3可以看出,防火墙模块在netfilter的LOCAL_IN、FORWARD和LOCAL_OUT3个位置分别注册了数据包过滤函数,数据包经过这些位置时,防火墙模块要对数据包进行过滤。

这三个位置也称为三条链,名称分别为INPUT、FORWARD和OUTPUT,它们共同组成了一张过滤表,每条链可以包含各种规则,每一条规则都包含0个或多个匹配以及一个动作。

当数据包满足所有的匹配时,则过滤函数将执行设定的动作,以便对数据包进行过滤的。

                  图9-3iptables防火墙内核模块结构框架图

%注意:

这些规则的次序是很重要的,过滤函数对数据包执行了某一规则动作后,对数据包的处理即告结束,即使这个数据包还满足后面其他规则的所有匹配,也不会执行那些规则所设定的动作。

从图9-3中可以看出,除了过滤表以外,在PRE_ROUTING、LOCAL_OUT和POST_ROUTING3个位置各有一条有关NAT的链,名称分别为PREROUTING、OUTPUT和POSTROUTING,它们组成了NAT表。

NAT链里面也可以包含各种规则,它指出了如何对数据包的地址进行转换。

此外,5个钩子函数位置的mangle链还组成了一张mangle表,这个表的主要功能是根据规则修改数据包的一些标志位,例如TTL、TOS等,也可以在内核空间为数据包设置一些标志。

防火墙内的其他规则或程序(如tc等)可以利用这种标志对数据包进行过滤或高级路由。

以上介绍的是iptables防火墙的内部结构,Linux系统还提供了iptables防火墙的用户接口,它可以在上述各张表所包含的链中添加规则,或者修改、删除规则,从而可以根据需要构建自己的防火墙。

具体来说,用户是通过输入iptables命令来实现上述功能的。

9.1.3iptables命令格式

在RHEL5中,iptables命令由iptables-1.3.5-1.2.1软件包提供,默认时,系统已经安装了该软件包,因此,用户可以直接输入iptables命令对防火墙中的规则进行管理。

iptables命令相当复杂,具体格式如下所示。

iptables[-t表名]<命令>[链名][规则号][规则][-j目标]

-t选项用于指定所使用的表,iptables防火墙默认有filter、nat和mangle3张表,也可以是用户自定义的表。

表中包含了分布在各个位置的链,iptables命令所管理的规则就是        存在于各种链中的。

该选项不是必需的,如果未指定一个具体的表,则默认使用的是         filter表。

命令选项是必须要有的,它告诉iptables要做什么事情,是添加规则、修改规则还是删除规则。

有些命令选项后面要指定具体的链名称,而有些可以省略,此时,是对所有的链进行操作。

还有一些命令要指定规则号。

具体的命令选项名称及其与后续选项的搭配形式如下所示。

示例1:

-A<链名><规则>

功能:

在指定链的末尾添加一条或多条规则。

示例2:

-D<链名><规则>

-D<链名><规则号>

功能:

从指定的链中删除一条或多条规则。

可以按照规则的序号进行删除,也可以删除满足匹配条件的规则。

示例3:

-R<链名><规则号><规则>

功能:

在指定的链中用新的规则置换掉某一规则号的旧规则。

示例4:

-I<链名>[规则号]<规则>

功能:

在给出的规则序号前插入一条或多条规则,如果没有指定规则号,则默认是1。

示例5:

-L[链名]

功能:

列出指定链中的所有规则,如果没有指定链,则所有链中的规则都将被列出。

示例6:

-F[链名]

功能:

删除指定链中的所有规则,如果没有指定链,则所有链中的规则都将被删除。

示例7:

-N<链名>

功能:

建立一个新的用户自定义链。

示例8:

-X[链名]

功能:

删除指定的用户自定义链,这个链必须没有被引用,而且里面也不包含任何规则。

如果没有给出链名,这条命令将试着删除每个非内建的链。

示例9:

-P<链名><目标>

功能:

为指定的链设置规则的默认目标,当一个数据包与所有的规则都不匹配时,将采用这个默认的目标动作。

示例10:

-E<旧链名><新链名>

功能:

重新命名链名,对链的功能没有影响。

以上是有关iptables命令格式中有关命令选项部分的解释。

iptables命令格式中的规则部分由很多选项构成,主要指定一些IP数据包的特征。

例如,上一层的协议名称、源IP地址、目的IP地址、进出的网络接口名称等,下面列出构成规则的常见选项。

  ●-p<协议类型>:

指定上一层协议,可以是icmp、tcp、udp和all。

  ●-s

指定源IP地址或子网。

  ●-d

指定目的IP地址或子网。

  ●-i<网络接口>:

指定数据包进入的网络接口名称。

  ●-o<网络接口>:

指定数据包出去的网络接口名称。

%注意:

上述选项可以进行组合,每一种选项后面的参数前可以加“!

”,表示取反。

对于-p选项来说,确定了协议名称后,还可以有进一步的子选项,以指定更细的数据包特征。

常见的子选项如下所示。

  ●-ptcp--sport

指定TCP数据包的源端口。

  ●-ptcp--dport

指定TCP数据包的目的端口。

  ●-ptcp--syn:

具有SYN标志的TCP数据包,该数据包要发起一个新的TCP连接。

  ●-pudp--sport

指定UDP数据包的源端口。

  ●-pudp--dport

指定UDP数据包的目的端口。

  ●-picmp--icmp-type

指定icmp数据包的类型,可以是echo-reply、echo-request等。

上述选项中,port可以是单个端口号,也可以是以port1:

port2表示的端口范围。

每一选项后的参数可以加“!

”,表示取反。

上面介绍的这些规则选项都是iptables内置的,iptables软件包还提供了一套扩展的规则选项。

使用时需要通过-m选项指定模块的名称,再使用该模块提供的选项。

下面列出几个模块名称和其中的选项,大部分的选项也可以通过“!

”取反。

-mmultiport--sports

功能:

指定数据包的多个源端口,也可以以port1:

port2的形式指定一个端口范围。

-mmultiport--dports

功能:

指定数据包的多个目的端口,也可以以port1:

port2的形式指定一个端口范围。

-mmultiport--ports

功能:

指定数据包的多个端口,包括源端口和目的端口,也可以以port1:

port2的形式指定一个端口范围。

-mstate--state

功能:

指定满足某一种状态的数据包,state可以是INVALID、ESTABLISHED、NEW和RELATED等,也可以是它们的组合,用“,”分隔。

-mconnlimit--connlimit-above

功能:

用于限制客户端到一台主机的TCP并发连接总数,n是一个数值。

-mmac--mac-source

功能:

指定数据包的源MAC地址,address是xx:

xx:

xx:

xx:

xx:

xx形式的48位数。

-m选项可以提供的模块名和子选项内容非常多,为iptables提供了非常强大、细致的功能,所有的模块名和子选项可以通过“maniptables”命令查看iptables命令的手册页      获得。

最后,iptables命令中的-j选项可以对满足规则的数据包执行指定的操作,其后的“目标”可以是以下内容。

  ●-jACCEPT:

将与规则匹配的数据包放行,并且该数据包将不再与其他规则匹配,而是跳向下一条链继续处理。

  ●-jREJECT:

拒绝所匹配的数据包,并向该数据包的发送者回复一个ICMP错误通知。

该处理动作完成后,数据包将不再与其他规则匹配,而且也不跳向下一条链。

  ●-jDROP:

丢弃所匹配的数据包,不回复错误通知。

该处理动作完成后,数据包将不再与其他规则匹配,而且也不跳向下一条链。

  ●-jREDIRECT:

将匹配的数据包重定向到另一个位置,该动作完成后,会继续与其他规则进行匹配。

  ●-jLOG:

将与规则匹配的数据包的相关信息记录在日志(/var/log/message)中,并继续与其他规则匹配。

  ●-j<规则链名称>:

数据包将会传递到另一规则链,并与该链中的规则进行匹配。

除了上述目标动作外,还有一些与NAT有关的目标,将在9.4节中讲述。

所有的目标也可以通过查看iptables命令的手册页获得。

9.2iptables主机防火墙

主机防火墙主要用于保护防火墙所在的主机免受外界的攻击,当一台服务器为外界提供比较重要的服务,或者一台客户机在不安全的网络环境中使用时,都需要在计算机上安装防火墙。

本节主要介绍iptables主机防火墙规则的配置,包括iptables防火墙的运行与管理、RHEL5默认防火墙规则的解释、用户根据需要添加自己的防火墙规则等内容。

9.2.1iptables防火墙的运行与管理

RHEL5默认安装时,已经在系统中安装了iptables软件包,可以用以下命令查看。

[root@localhost~]#rpm-qa|grepiptables

iptables-1.3.5-1.2.1

iptables-ipv6-1.3.5-1.2.1

#

一般情况下,iptable开机时都已经默认运行,但与其他一些服务不同,iptables的功能是管理内核中的防火墙规则,不需要常驻内存的进程。

如果对防火墙的配置做了修改,并且想保存已经配置的iptables规则,可以使用以下命令。

#/etc/rc.d/init.d/iptablessave

此时,所有正在使用的防火墙规则将保存到/etc/sysconfig/iptables文件中,可以用以下命令查看该文件的内容。

#more/etc/sysconfig/iptables

#Generatedbyiptables-savev1.3.5onFriJan1614:

58:

312009

*filter

:

INPUTACCEPT[0:

0]

:

FORWARDACCEPT[0:

0]

:

OUTPUTACCEPT[2237:

2371316]

:

RH-Firewall-1-INPUT-[0:

0]

-AINPUT-jRH-Firewall-1-INPUT

-AFORWARD-jRH-Firewall-1-INPUT

-ARH-Firewall-1-INPUT-ilo-jACCEPT

-ARH-Firewall-1-INPUT-picmp-micmp--icmp-typeany-jACCEPT

-ARH-Firewall-1-INPUT-pesp-jACCEPT

-ARH-Firewall-1-INPUT-pah-jACCEPT

-ARH-Firewall-1-INPUT-d224.0.0.251-pudp-mudp--dport5353-jACCEPT

-ARH-Firewall-1-INPUT-pudp-mudp--dport631-jACCEPT

-ARH-Firewall-1-INPUT-ptcp-mtcp--dport631-jACCEPT

-ARH-Firewall-1-INPUT-mstate--stateRELATED,ESTABLISHED-jACCEPT

-ARH-Firewall-1-INPUT-ptcp-mstate--stateNEW-mtcp--dport21-jACCEPT

-ARH-Firewall-1-INPUT-ptcp-mstate--stateNEW-mtcp--dport22-jACCEPT

-ARH-Firewall-1-INPUT-ptcp-mstate--stateNEW-mtcp--dport80-jACCEPT

-ARH-Firewall-1-INPUT-ptcp-mstate--stateNEW-mtcp--dport25-jACCEPT

-ARH-Firewall-1-INPUT-ptcp-mstate--stateNEW-mtcp--dport808-jACCEPT

-ARH-Firewall-1-INPUT-ptcp-mstate--stateNEW-mtcp--dport8080-jACCEPT

可以看到,/etc/sysconfig/iptables文件中包含了一些iptables规则,这些规则的形式与iptables命令类似,但也有区别。

%注意:

一般不建议用户手工修改这个文件的内容,这个文件只用于保存启动iptables时,需要自动应用的防火墙规则。

以上看到的实际上是默认安装RHEL5时该文件中的内容,其所确定的规则的解释见9.2.2小节。

还有一种保存iptables规则的方法是使用iptables-save命令,格式如下:

#iptables-save>abc

此时,正在使用的防火墙规则将保存到abc文件中。

如果希望再次运行iptables,可以使用以下命令。

#/etc/rc.d/init.d/iptablesstart

上述命令实际上是清空防火墙所有规则后,再按/etc/sysconfig/iptables文件的内容重新设定防火墙规则。

还有一种复原防火墙规则的命令如下:

#iptables-restore

此时,由iptables-save命令保存在abc文件中的规则将重新载入到防火墙中。

如果使用以下命令,将停止iptables的运行。

#/etc/rc.d/init.d/iptablesstop

上述命令实际上是清空防火墙中的规则,与“iptables-F”命令类似。

此外,/etc/sysconfig目录的iptables-config文件是iptables防火墙的配置文件,去掉注释后的初始内容和解释     如下:

配置1:

IPTABLES_MODULES="ip_conntrack_netbios_nsip_conntrack_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="no"

功能:

当重启iptables时,是否把规则和链保存到/etc/sysconfig/iptables文件,no表        示否。

配置5:

IPTABLES_SAVE_COUNTER="no"

功能:

当保存规则和链时,是否同时保存计数值,no表示否。

配置6:

IPTABLES_STATUS_NUMERIC="yes"

功能:

输出iptables状态时,是否以数字形式输出IP地址和端口号,yes表示是。

配置7:

IPTABLES_STATUS_VERBOSE="no"

功能:

输出iptables状态时,是否包含输入输出设备,no表示否。

配置8:

IPTABLES_STATUS_LINENUMBERS="yes"

功能:

输出iptables状态时,是否同时输出每条规则的匹配数,yes表示是。

9.2.2RHEL5开机时默认的防火墙规则

在Linux系统中,可以通过使用iptables命令构建各种类型的防火墙。

RHEL5操作系统默认安装时,iptables防火墙已经安装,并且开机后会自动添加了一些规则,这些规则实际上是由/etc/sysconfig目录中的iptables文件决定的。

可以通过“iptables-L”命令查看这些默认添加的规则。

#iptables-L

ChainINPUT(policyACCEPT)              #INPUT链中的规则

target               protoptsource               destination        

RH-Firewall-1-INPUTall--anywhere            anywhere     #规则1

ChainFORWARD(policyACCEPT)         #FORWARD链中的规则

target               protoptsource              destination        

RH-Firewall-1-INPUTall--anywhere            anywhere        #规则2

ChainOUTPUT(policyACCEPT)           #OUTPUT链中的规则

target               protoptsource              destination        

ChainRH-Firewall-1-INPUT(2references)   #自定义的RH-Firewall-1-INPUT链

                                 中的规则,被其他链引用两次

target       protoptsource              destination        

ACCEPT    all--anywhere            anywhere                #规则3

ACCEPT    icmp--anywhere            anywhere    icmpany       #规则4

ACCEPT    esp--anywhere            anywhere                    #规则5

ACCEPT    ah  --anywhere            anywhere                      #规则6

ACCEPT    udp--anywhere            224.0.0.251  udpdpt:

mdns   #规则7

ACCEPT    udp--anywhere            anywhere    udpdpt:

ipp     #规则8

ACCEPT    tcp--anywhere            anywhere    tcpdpt:

ipp    #规则9

ACCEPT    all--anywhereanywherestateRELATED,ESTABLISHED#规则10

ACCEPT    tcp--anywhereanywhere   stateNEWt

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

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

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