linux防火墙的设置.docx
- 文档编号:15942893
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:20
- 大小:87.33KB
linux防火墙的设置.docx
《linux防火墙的设置.docx》由会员分享,可在线阅读,更多相关《linux防火墙的设置.docx(20页珍藏版)》请在冰点文库上搜索。
linux防火墙的设置
linux防火墙的设置
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 stateNEWtcpdpt: ftp #规则11 ACCEPT tcp --anywhereanywhere stateNEWtcpdpt: ssh #规则12 ACCEPT tcp --anywhere anywhere stateNEWtcpdpt: http#规则13 ACCEPT tcp --anywhere anywhere stateNEWtcpdpt: smtp#规则14 REJECT all --anywhere anywherereject-withicmp-host- prohibited #规则15 # 由于上面的iptables命令没有用-t选项指明哪一张表,也没有指明是哪一条链,因此默认列出的是filter表中的规则链。 由以上结果可以看出,filter表中总共有4条链。 其中,INPUT、FORWARD和OUTPUT链是内置的,而RH-Firewall-1-INPUT链是用户自己添 加的。 1.规则列 在前面列出的防水墙规则中,每一条规则列出了5项内容。 target列表示规则的动作目标。 prot列表示该规则指定的上层协议名称,all表示所有的协议。 opt列出了规则的一些选项。 source列表示数据包的源IP地址或子网,而destination列表示数据包的目的IP地址或子网,anywhere表示所有的地址。 除了上述5列以外,如果存在,每一条规则的最后还要列出一些子选项,如RH-Firewall-1-INPUT链中的规则4等。 如果执行iptables命令时加了-v选项,则还可以列出每一条规则当前匹配的数据包数、字节数,以及要求数据包进来和出去的网络接口。 如果加上-n选项,则不对显示结果中的IP地址和端口做名称解析,直接以数字的形式显示。 还有,如果加上“--line-number”选项,可以在第一列显示每条规则的规则号。 2.规则解释 INPUT链中的规则1其target列的内容是RH-Firewall-1-INPUT,opt列是all,source和destination列均为anywhere,表示所有的数据包都交给自定义的RH-Firewall-1-INPUT链去处理。 FORWARD链的规则2与规则1完全一样。 OUTPUT链中没有规则。 在自定义的RH-Firewall-1-INPUT链中,列出了很多的规则,规则3表示接收所有的数据包。 需要注意的是,如果在iptables中加-v选项列出这条规则时,将会看到in列是lo,即要求数据包是从环回接口中进来的,而不是任意网络接口进来的数据包都接收。 规则4表示所有icmp数据包都接收,即其他计算机ping本机时,予以接收,而且在OUTPUT链中没有规则,因此本机的ICMP回复数据包也能顺利地进入网络,被对方收到。 规则5和规则6表示接收所有的esp和ah协议的数据包,这两种协议属于IPv6协议。 规则7表示目的地址是224.0.0.251,目的端口是mdns的UDP数据包允许通过。 224.0.0.251是一种组播地址,mdns是端口号的一种名称。 如果执行iptables命令时加了-n选项,则会显示数字5353,它是组播地址的DNS端口。 规则8和规则9表示允许所有目的端口是ipp的UDP和TCP数据包通过,ipp是端口631的名称
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 防火墙 设置
![提示](https://static.bingdoc.com/images/bang_tan.gif)