开发工具:
文件大小: 867kb
下载次数: 0
上传时间: 2019-03-16
详细说明:Linux自带iptables详解,这是我个人在工作中总结下来的,可以有不足,以后会再完善的。Linux自带 iptables详解》
www.cnschh.com
、 netfilter/ iptables简介
netfilter/iptables(简称 iptables)组成 Linux平台下的包过滤防火墙,与大多数的 Linux软件一样,这个包过
滤防火墙也是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网终地址转换
(NAT)等功能
netfilter,/ iptables过滤防火墙系统是一种功能强大的工具,可用于添加、编辑和去除规则,这些规则是在做信
息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在Lnux
内核中。在信息包过滤表中,规则被分组存放在我们所诮的链( chain)中。
、 iptables和 netfilter的关系
虽然 netfilter/ iptables包过滤系统被称为单个实体,但它实际上由两个组件 netfilter和 iptables组成,这是
第一个要说的地方。
iptables和 netfilter的关系是一个很容易让人搞不清的冋题,很多知道 iptables却不知道 netfilter o其实
iptables只是 Linux防火墙的管理工具而己,位于/sbin/ iptables。真正实现防火墙功能的是 netfilter,它是 Linux
内核中实现包过滤的内部结构。
netfilter组件也称为内核空间( kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核
用来控制信息包过滤处理的规则集。
tables组件是一种工具,也称为用户空冋( userspace),它使插入、修改和去除信息包过滤表中的规则变得
容易。
三、 netfilter/ iptables优点
netfilter/ iptables的最大优点是它可以配置有状态的防火墙。有状态的防火墙能够指定并记住为发送或接收信
恳包所建立的连接的状态。防火墙可以从信息包的连接跟踪状态获得该信息。在决定新的信息包过滤吋,防火墙所
使用的这些状态信息可以增加其效率和速度。这里有四种有效状态,名称分别为 ESTABLISHED、INⅥALD、NEW和
RELATED。
ESTABLISHED状态指出该信息包属于已建立的连接,该连接一直用于发送和接收信息包并且完全有效。
● INVALID状态指出该信息包与任何已知的流或连接都不相关联,它可能包含错误的数据或头
NEW状态意味着该信息包已经或将启动新的迕接,或者它与尚未用于发送和接收信息包的连接相关联。
最后, RELATED状态表示该信息包正在启动新连接,以及它与已建立的连接相关联。
netfilter/iptables的另一个重要优点是,它使用户可以完全控制防火墙配置和信息包过滤。您可以定制自己的规
则来满足您的特定需求,从而只允许您想要的网络流量进入系统。
另外, netfilter/ iptables是兔費的,这对于那些想要节省费用的人来说十分理想,它可以代替昂贵的防火墙解决
方案
1/10
e Linux自带 iptables详解》
www.cnschh.com
四、 iptables原理
当一个数据包进入网卡时,它首先进入 PREROUTING链,内核根据数据包日的|P判断是否转送出去:如果
数据包就是进入本机的,它就会沿着图1所示向下传递,到达NPUT链;数据包到了 INPUT链后,任何进程都
会收到它。本机上运行的程序可以发送数据包,这些数据包会经过 OUTPUT链,然后到达 POSTROUTING链输
如果薮据包是要转发出去的,且内核允许转发,数据包就会如图1所示向右传递,经过 FORWARD链,然后
到达 POSTROUTING链输出。
N
OUT
PREROUTING
POSTROUTING
nat
nat
mangle
raw
raw
mangle
FORWARD
Destination
filter
localhost?
mangle
INPUT
OUTPUT
filter
filter
nat
mangle
mangle
LOCALHOST
raw
图1 iptables传输数据包的过栏
五、 iptables规则
规则(Rues)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这
样处理这个数据包”。规则存储在內核空间的信息包过滤中,这些规则分别指定了源地址、目的地址、传输协议
(如TCP、UDP、ICMP)和服务类型(如HTP、FTP和SMTP)等。当数据包与规则匹配时, iptables就根据规则
所定义的方法来处理这些数据包,如放行(ACEP)、拒绝( REJECT)和丢弃(DRCP)等。配置防火墙的主要工作
就是添加、删除和修改这些规则。
2/10
Linux自带 iptables详解》
www.cnschh.com
六、 iptables的规则表和规则链
表( tables)提供特定的功能, iptables内置了4个表,即fter表、nat表、 mangle表和raw表,分
别用于实现包过滤、网络地址转换、包童构(修改)和数据跟踪处理。
链( chains)是数据包传播的路径,每一条链其实就是众多规则的一个检查清单,每一条链山可以有
条或数条规则。当一个数据包到达一个链时, iptables就会从链中第一条规则开始检査,看该数据包是否淸足规
则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包,否则 iptables将继续检査下
糸規则,如果该数据包不符合链中仼一糸规则,ipυ tableεs就会根据该链预告定义的默认策略来处理数据包。
iptables采用“表”和“链”的分层结构。在REHL4中是「3张表5个链』,现在REHL5成了『4张表5个
链』,不过多出来的那个表用的也不是太多,所以基本还是和以前的一样。下面罗列一下这『4张表5个链』,注意
定要明白这些表和链的关系及作用。
raW表
mangle表
nat表
fier表
第1条规则
PRERQUT|NG链
PREROUT|NG链
PREROUTING链
第2条规则
第3条规则
tt虚
OUTPUT链
POSTROUT|NG链
NPUT链
POSTROUTING链
NPUT链
OUTPUT链
FORWARD链
OUTPUT链
OUTPUT链
FORWARD链
图2 iptables的规则表和规则链
1.规则表
1.1 filter表
三个链:NPUT、 FORWARD、 OUTPUT;
作用:过滤数据包
内核模块: itab|es_ filter
3/10
e Linux自带 iptables详解》
www.cnschh.com
1.2nat表
三个链: PREROUTING、 POSTROUTING、 OUTPUT
作用:用于网络地址转换(P、Port);
内核模块: iptables_nat
1.3mang|e表
五个链: PREROUTING、 POSTROUTING、 INPUT、 OUTPUT、 FORWARD
作用:修改数据包的服务类型、TIL、并且可以配置路由实现QoS:
内核模块: iptables mangle。
(注:别看这个表这么麻烦,咱们设置策略时几乎都不公用到它。)
1.4raW表
两个链: OUTPUT、 PREROUTING;
作用:决定数据包是否被状态跟踪机饲处理,即为了不再让 iptables做数据包的链接跟踪处理,跳过其它
表,提高性能
内核模块: iptables_raw
注:这个在REHL4中没有,不过不用怕,用的不多。)
2.规则链
INPUT:进来的数据包应用此规则链中的策略
OUTPUT:外出的数据包应用此规则链中的策略
FORWARD:转发数据包时应用此规则链中的策略;
FREROUTING:对数据包作路由选择前应用此规则链中的策略:
注:所有的数据包进来的时候都先由这个链处理。
POSTROUTING:对数据包作路由选择后应用此规则链中的策略
(注:所有的数据包出去的时候都先由这个链处理。
3.规则表之间的优先顺序
raw> mangle>nat> filter
4.规则链之间的优先顺序(分三种情况)
4.1第一种情况:入站数据流向
从外面到达防火墙的数据包,先被 PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选
择〔判断薮据包应该发往何处),如果数据包的目的地址是防火墙木机(比如说 nternet用户访问防火墙主机中的
web服务器的数据包),那么内核将其传递给\NPUτ进行处理(决定是否允许通过等),通过以后再交给系统上
4/10
e Linux自带 iptables详解》
www.cnschh.com
层的应用程序(比如 Apache服务器)进行响应。
4.2第二种情况:转发数据流向
来自外面的数据包到达防火墙后,首先被 PREROUTING规则链处理,之后会进行路由选择,如果数据包的目
的地址是其他外部地址(比如局域网用户通过网关访问QQ站点的数据包),则内核将其传递给 FORWARD链进
行处理(是否转发或拦截),然后再交给 POSTROUTING链(是否修改数据包的地址等)进行处理。
4.3第三种情况:出站数据流向
防火墙本机向外部地址发送的数据包(比如防火墙主机中测试公网DNS服务器时),首先会被 OUTPUT链处
理,之后进行路由选择,然后传递给 POSTROUTING规则链(是否修改数据包的地址等)进行处理。
4.4总结来说
iptables是采用规则堆栈的方式来进行过滤,当一个封包进入网卡,会先检查 PREROUTING,然后检查目的
P判断是否需要转送出去,接着就会跳到NPUT或 FORWARD进行过滤,如果封包需转送处则检查
POSTROUTING,如果是来自本机封包,则检查 OUTPUT以及 POSTROUTING。
过程中如果符合某条规则将会进行处理,处理动作除了 ACCEPT、 REJECT、DROP、RED|RECT和 MASQUERADE
以外,还多出LOG、ULOG、DNAT、SNAT、 MIRROR、 QUEUE、 RETURN、TOS、TTL、MARK等,其中某些处理动作
不会中断过滤程疗,某堘处理动作则会中断同一规则链的过滤,并依照前述流程继续进行下一个规则链的过滤
(注意:这·点与 ipchains不同),直到堆栈中的规则检查完毕为止。
透过这种机所带来的好处是,我们可以进行复杂、多重的封包过滤,简单的说: iptables可以进行纵横交错
式的过滤( tables)而非链状过滤( chains)。
ACCEPT将封包放行,进行完此处理动作后,将不比对其它规则,直接跳往下一个规则链
(nat: POSTROUTING)。
5/10
Linux自带 iptables详解》
www.cnschh.com
七、管理和设置 itab|es规则
iptables
table
command
chain
parameter
target
-A
INPUT
R
FORWARD
于 ACCEPT
iptables -t filter
OUTPUT
REJECT
PREROUTING
于DRoP
-sport
POSTROUTING
dport
iptables命令格式
图3 iptables命令格式
parameters
specified
TCP
UDP
-p
ICMP
A protocol name from /etc/protocols
Network name
Hostname
Subnet(1921680.0/24;1921680.0/2552552550)
IP address
Interface name (etho
Interface name ends in a"+"eth+)
sp。rt
Service name
Port number
dport
Port range (1024: 65535)
iptables条件袼式
图4 iptables条件格式
6/10
Linux自带 iptables详解》
www.cnschh.com
1. itab|es的基本语法格式
iptables [-t表名命令选项[链名]规则匹配]j目标动作
●表名、链名用于指定 iptables命令所操作的表和链;
命令选项指定管理 iptables规则的方式(比如:插入、增加、删除、查看等)
规则匹配用于指定对符合什么样条件的数据包进行处理(比如:源地址,目的地址,传输协以和端
号);
●目标动作用于指定数据包的处理方式(比如:允许通过、拒绝、丢弃、跳转)给其他链处理。
1.1规则匹配
iptables执行规则时,是从规则表中从上至下的顺序执行的,如果没遇到匹配的规则,就一条一条往下执行,
如果遇到匹配的规则后,那么就执行本规则,执行后根据本规则的动作( ACCEPT, REJECT,LOG,DROP等),决定
下一步执行的情况,后续执行一般有三种情况。
种是继续执行当前规则表内的下一条规则。比如执行过fter表内的LOG后,还会执行fter表内的
下一条规则。
●一种是中止当前规则表的执行,转到下一条规则表。比如从执行过 ACCEPT后就中断 filter表内其它规
则,跳到nat队列规则去执行
一种是中止所有规则表的执行。
1.2目标动作
我们前面说过, iptables处理动作除了 ACCEPT、 REJECT、DROP、RED|RECT、 MASQUERADE以外,还多出
LOG、ULOG、DNAT、 RETURN、TOS、SNAT、MROR、 QUEUE、TL、MARK等。我们只说明其中最常用的动作:。
● REJECT:拦阻该数据包,并返回数据包通知对方,可以返回的数据包有几个选择: CMP port-
unreachable、 ICMP echo-reply或是 tcp-reset(这个数据包会要求对方关闭联机),进行完此处理动作
后,将不再比对其它规则,直接中断过滤程序。范例如下:
加abes- A/NPUT-p 7O-co22REEC7-C-w计 CMP echo-e0/y
●DROP:丢弃数据包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序
RED|RECT:将封包重新导向到一个端口(PNAT),进行完此处理动作后,将会继续比对其它规则。这个
功能可以用来实现透明代理或用来保护Web服务器。范例如下
iptables -t nat-A PREROUTING -p tcp --dport 80-/RED/RECT--to-ports 808
MASQUERADE:改写封包来源|P为防火墙的P,可以指定port对应的范围,进行完此处理动作后,
直接跳往下一个规则链( mangle: POSTROUTING)。这个功能与SNAT略有不同,当进行P伪装时,不需
指定要伪装成哪个,会从网卡直接读取,当使用拨号连接时,1P通常是由SP公司的DHCP服务
器指派,这个时候 MASQUERADE特别有用。范例如下:
iptables -t nat -A POSTROUTING -pTCP MASQUERADE --to-ports 27000-31000
●LoG:将数据包相关信息纪录在№ar/og中,详细位置请查阅/etc/ syslog. conf配置文件,进行完此处理
动作后,将会继续比对其它规则。例如
iptables -A INPUT-p tcp -iLOG --10g-prefix "input packet
sNAT:改写封包来源伊P为某特定P或P范围,可以指定port对应的范围,进行完此处理动作后,
将直接跳往下一个规则炼( mangle: POSTROUTING)。范例如卜:
iptables -t nat -A POSTROUTING -p tcp-o etho-iSNAT--to-source 192.168.10.75
7/10
Linux自带 iptables详解》
www.cnschh.com
192.168.10.160.2100-3200
●DNAT:改写数据包目的地P为某特定P或岬P范围,可以指定port对应的范围,进行完此处理动作
后,将会直接跳往下一个规则链( filter: INPUT或fter: FORWARD)。范例如下:
tables -t nat -A PREROUT/NG - p tcp -d. 45.23. 67--dport 80-/DNA/--to-destination
192.168.10.1-192.168.10.10.80-100
●MRoR:镜像数据包,也就是将来源IP与目的地P对调后,将数据包返回,进行完此处理动作后,
将会中断过滤程序
QUEUE:中断过滤程序,将封包放入队列,交给其它程序处理。通过自行开发的处理程序,可以进行其
它应用,例如:计算联机费用….。
RETURN:结束在目前规则链中的过滤程序,返回主规则链继续过滤,如果把自定规则链看成是一个子程
序,那么这个动作,就相当于提早结束子程序并返回到主程序中。
●^MARK:将封包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此处理动作后,将会继续
比对其它规则。范例如下:
iptables -t mang/e -A PREROUTING -p tp --dporf 22 --set-mark 22
2. iptables命令的管理控制选项
A在指定链的末尾添加( append)一条新的规则
D删除( delete)指定链中的某一条规则,可以按规则序号和内容删除
在指定链中插入( insert)一条新的规则,默认在第一行添加
-R修改、替换( replace)指定链中的某一条规则,可以按规则序号和内容替换
L列出(list)指定链中所有的规则进行查看
重命名用户定义的链,不改变链本身
-清空(fush)
N新建( new-chain)一条用户自己定义的规则链
-X删除指定表中用户自定义的规则链( delete- chain)
-P设置指定链的默认策略( policy)
-Z将所有表的所有链的字节和数据包计数器清零
n使用数字形式( numeric)显示输出结果
√查看规则表详细信息( verbose)的信息
V查看版本 version)
-h获取帮助(help)
3.防火墙处理数据包的4种方式
ACCEPT:允许数据包通过
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息;
DROP:直接丟弃数据包,不给仟何回应信息;
LoG:在/var/og/ messages文件中记录口志信息,然后将数据包传递给下·条规则
8/10
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.