如何查看被iptables 修改数据包丢弃的数据包

中国领先的IT技术网站
51CTO旗下网站
iptables的基础知识-iptables包的转发过程
iptables包的转发过程:iptabels被认为是Linux中实现包过滤功能的第四代应用程序。iptables包含在Linux2.4以后的内核中,详细地来讲iptables包在转发时是怎样被送出呢?本文介绍的是iptables的基础知识-iptables包的转发过程。
作者:郭工来源:netren| 08:52
iptables包的转发过程:包在IPTABLES中如何走?
当一个包进入或者送出或者被转发的时候,是依据什么呢?都会经过哪些表和哪些链呢?
iptabeles中内建有三个表,分别为MANGLE,NAT,FILTER,当为未指定规则表时,则默认为filter表,若要将rule加到其他表中,则要用-t来指明。
其中有个表叫mangle,这个词难以表达,我只能把我理解的写出来。意思就是,会对数据包的一些传输特性进行修改,在mangle表中允许的操作是TOS、TTL、MARK。也就是说,今后只要我们见到这个词能理解它的作用就行了。
强烈建议你不要在这个表里做任何过滤,不管是DANT,SNAT或者Masquerade。
Nat表就是地址转换了,可以做DNAT,SNAT,可做一对一,一对多,多对对转换,该表有Prerouting 和 postrouting两条规则链。DNAT操作主要用在这样一种情况,你有一个合法的IP地址,要把对防火墙的访问重定向到其他的机子上(比如DMZ)。也就是说,我们改变的是目的地址,以使包能重路由到某台主机。SNAT改变包的源地址,这在极大程度上可以隐藏你的本地网络或者DMZ等。一个很好的例子是我们知道防火墙的外部地址,但必须用这个地址替换本地网络地址。有了这个操作,防火墙就能自动地对包做SNAT和De-SNAT(就是反向的SNAT),以使LAN能连接到Internet。如果使用类似192.168.0.0/24这样的地址,是不会从Internet得到任何回应的。因为IANA定义这些网络(还有其他的)为私有的,只能用于LAN内部。MASQUERADE的作用和SNAT完全一样,只是计算机的负荷稍微多一点。因为对每个匹配的包,MASQUERADE都要查找可用的IP地址,而不象SNAT用的IP地址是配置好的。当然,这也有好处,就是我们可以使用通过PPP、PPPOE、SLIP等拨号得到的地址,这些地址可是由ISP的DHCP随机分配的
Filter表就是我们最常用的了,iptables包过滤就靠这个了,系统默认建有三个链,INPUT,OUTPUT还有FORWARD,这个表用来进行封包过滤的处理(如:DROP,ACCEPT,LOG,REJECT,ULOG等),基本规则都建在这个表中。
注:所谓的链就是规则的集合,也可以自定义链
当数据包到达防火墙时,如果MAC地址符合,就会由内核里相应的驱动程序接收,然后会经过一系列操作,从而决定是发送给本地的程序,还是转发给其他机子,还是其他的什么。
以本地为目标的iptables包(就是我们自己的机子了)
Step(步骤) Table(表) Chain(链) Comment(注释)
1 在线路上传输(比如,Internet)
2 进入接口 (比如,eth0)
3 Mangle PREROUTING 这个链用来mangle数据包,比如改变TOS等
4 Nat PREROUTING 这个链主要用来做DNAT。不要在这个链做过虑操作,因为某些情况下包会溜过去。
5 路由判断,比如,iptables包是发往本地的,还是要转发的。
6 Mangle INPUT 在路由之后,被送往本地程序之前,mangle数据包。
7 Filter INPUT 所有以本地为目的的iptables包都要经过这个链,不管它们从哪儿来,对这些iptables包的过滤条件就设在这里。
8 到达本地程序了(比如,服务程序或客户程序)
现在我们来看看源地址是本地器的包要经过哪些步骤:
以本地为源的iptables包
Step Table Chain Comment
1 本地程序(比如,服务程序或客户程序)
2 路由判断,要使用源地址,外出接口,还有其他一些信息。
3 mangle OUTPUT 在这儿可以mangle包。建议不要在这儿做过滤,可能有副作用哦。
4 nat OUTPUT 这个链对从防火墙本身发出的包进行DNAT操作。
5 filter OUTPUT 对本地发出的iptables包过滤。
6 mangle POSTROUTING 这条链主要在包DNAT之后(译者注:作者把这一次DNAT称作实际的路由,虽然在前面有一次路由。对于本地的包,一旦它被生成,就必须经过路由代码的处理,但这个包具体到哪儿去,要由NAT代码处理之后才能确定。所以把这称作实际的路由。),离开本地之前,对iptables包 mangle。有两种包会经过这里,防火墙所在机子本身产生的包,还有被转发的包。
7 nat POSTROUTING 在这里做SNAT。但不要在这里做过滤,因为有副作用,而且有些iptables包是会溜过去的,即使你用了DROP策略。
8 离开接口(比如: eth0)
9 在线路上传输(比如,Internet)
在这个表中有个要注意的地方,从本机发出的包,要经过NAT 中的OUTPUT。
在这个例子中,我们假设一个iptables包的目的是另一个网络中的一台机子。让我们来看看这个iptables包的旅程:
转发iptables包
Step Table Chain Comment
1 在线路上传输(比如,Internet)
2 进入接口(比如, eth0)
3 mangle PREROUTING mangle数据包,,比如改变TOS等。
4 nat PREROUTING 这个链主要用来做DNAT。不要在这个链做过虑操作,因为某些情况下包会溜过去。稍后会做SNAT。
5 路由判断,比如,包是发往本地的,还是要转发的。
6 mangle FORWARD 包继续被发送至mangle表的FORWARD链,这是非常特殊的情况才会用到的。在这里,包被mangle(还记得mangle的意思吗)。这次mangle发生在最初的路由判断之后,在最后一次更改包的目的之前(译者注:就是下面的FORWARD链所做的,因其过滤功能,可能会改变一些包的目的地,如丢弃包)。
7 filter FORWARD 包继续被发送至这条FORWARD链。只有需要转发的包才会走到这里,并且针对这些包的所有过滤也在这里进行。注意,所有要转发的包都要经过这里,不管是外网到内网的还是内网到外网的。在你自己书写规则时,要考虑到这一点。
8 mangle POSTROUTING 这个链也是针对一些特殊类型的包(译者注:参考第6步,我们可以发现,在转发包时,mangle表的两个链都用在特殊的应用上)。这一步mangle是在所有更改包的目的地址的操作完成之后做的,但这时包还在本地上。
9 nat POSTROUTING 这个链就是用来做SNAT的,当然也包括Masquerade(伪装)。但不要在这儿做过滤,因为某些包即使不满足条件也会通过。
10 离开接口(比如: eth0)
11 又在线路上传输了(比如,LAN)
就如你所见的,包要经历很多步骤,而且它们可以被阻拦在任何一条链上,或者是任何有问题的地方。所有要经防火墙转发的包都要经过FORWARD链。
由上边的表格和图可以看出,iptables 处理包的流动,分述如下:
INPUT:只有要到本机的封包才会由 INPUT 处理,所以会让碜炔客绲姆獍尢跫判校醋酝獠康姆獍t过滤,是否为回应包,若是t放行。
PREROUTING:需要转送处理的封包由此处理,用来做目的地 IP 的翻译(DNAT)。
FORWARD:源IP和目的IP都不是本机的,就要被转发,所有要转发的封包都在这里处理,这部分的过滤规则最为复杂。
POSTROUTING:转发封包送出之前,先同过这个来进行源IP的翻译(SNAT)。
OUTPUT:从本机发送出去的包都有此处理,通常放行所有封包。
从上边看得出,对于iptables来说,是依据IP地址进行决策,也就是说包中的IP地址决定一个包的流向。
进入FORWRAD的一定不会进入到INPUT和OUTPUT。
在处理过程中如果符合某条规则将会进行处理,处理动作除有ACCEPT、REJECT、DROP、REDIRECT 和 MASQUERADE 外还有LOG、ULOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、TOS、TTL、MARK 等。
我们可以使用& iptables save file & 将结果保存到指定文件中,然后用& iptables restore file & 将指定文件的内容加载,或者写成脚本,然后执行脚本就可以了。我推荐使用脚本,因为可以使用shell编程,从而写出强大,灵活的脚本来。iptables包的转发过程就讲到这里啦。
上一节:&& 下一节:
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条热点头条热点
24H热文一周话题本月最赞
讲师:160349人学习过
讲师:125538人学习过
讲师:218608人学习过
精选博文论坛热帖下载排行
本书深刻揭示了Spring的技术内幕,对IoC、AOP、事务管理等根基性的技术进行了深度的挖掘。读者阅读本书后,不但可以熟练使用Spring的各项功...
订阅51CTO邮刊iptables规则的查看、添加、删除和修改 - CSDN博客
iptables规则的查看、添加、删除和修改
iptables -nvL --line-number
-L 查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可以加上-t NAT参数
-n 不对ip地址进行反查,加上这个参数显示速度会快很多
-v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口
–-line-number 显示规则的序列号,这个参数在删除或修改规则时会用到
添加规则有两个参数:-A和-I。其中-A是添加到规则的末尾;-I可以插入到指定位置,没有指定位置的话默认插入到规则的首部。
当前规则:
[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
prot opt source
destination
192.168.1.1
192.168.1.2
192.168.1.4
添加一条规则到尾部:
[root@test ~]# iptables -A INPUT -s 192.168.1.5 -j DROP
再插入一条规则到第三行,将行数直接写到规则链的后面:
[root@test ~]# iptables -I INPUT 3 -s 192.168.1.3 -j DROP
[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
prot opt source
destination
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
可以看到192.168.1.3插入到第三行,而原来的第三行192.168.1.4变成了第四行。
删除用-D参数
删除之前添加的规则(iptables -A INPUT -s 192.168.1.5 -j DROP):
[root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP
有时候要删除的规则太长,删除时要写一大串,既浪费时间又容易写错,这时我们可以先使用–line-number找出该条规则的行号,再通过行号删除规则。
[root@test ~]# iptables -nv --line-number
iptables v1.4.7: no command specified
Try `iptables -h' or 'iptables --help' for more information.
[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
prot opt source
destination
192.168.1.1
192.168.1.2
192.168.1.3
删除第二行规则
[root@test ~]# iptables -D INPUT 2
修改使用-R参数
先看下当前规则:
[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
prot opt source
destination
192.168.1.1
192.168.1.2
192.168.1.5
将第三条规则改为ACCEPT:
[root@test ~]# iptables -R INPUT 3 -j ACCEPT
再查看下:
[root@test ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
prot opt source
destination
192.168.1.1
192.168.1.2
第三条规则的target已改为ACCEPT。
5、永久生效
service iptables save
service iptables restart
本文已收录于以下专栏:
相关文章推荐
iptables防火墙可以用于创建过滤(filter)与NAT规则。所有Linux发行版都能使用iptables,因此理解如何配置iptables将会帮助你更有效地管理Linux防火墙。如果你是第一次...
一:计划进行的方式,
1.系统安装的是centos 7 min。
2.squid是直接yum install squid.service安装的。
3.因为对firewall-cmd不了解,所以先按照从...
硬件HP DL145:Opteron×2,AMD芯片组,1GB内存,Redhat EL Advanced Server 4 for i386。 首先根据从网上找到的资料配置: squ...
NAT一般用于配置重定向的,比如将XX端口全部重定向到YY端口。
查看BSA nat防火墙配置的命令:
iptables -t nat -vnL PREROUTING --line-number
这里只列出比较常用的参数,详细的请查看man iptables
iptables -nvL –line-number
-L 查看当前表的所有规则,默认查看的是filter表,如...
VPN服务器的配置与应用
实验场景 通过将Linux配置VPN服务器允许远程计算机能够访问内网。
我的目的:
现在需要开发第三方接口,而第三方接口有服务器IP地址鉴权配置,这样在本地开发...
A. By default iptables firewall stores its configuration at /etc/sysconfig/iptables file. You need t...
iptables是linux系统自带的防火墙,功能强大,学习起来需要一段时间,下面是一些习iptables的时候的记录。如果iptables不熟悉的话可以用apf,是一款基于iptables的防火墙,...
iptables是linux系统自带的防火墙,功能强大,学习起来需要一段时间,下面是一些习iptables的时候的记录。如果iptables不熟悉的话可以用apf,是一款基于iptables的防火墙,...
装载系统的时候只开启了22端口。结果再装完Nginx+php+mysql 后不能访问网站。
-L -n 
查看防火墙设置发现没开启80端口
由于Linux防火墙...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)用户名:waring_id
文章数:157
评论数:1175
访问量:2115206
注册日期:
阅读量:1297
阅读量:3317
阅读量:584922
阅读量:470454
51CTO推荐博文
  在前面的文中讲过了iptables防火墙连接状态中的ESTABLISHED状态()。除了这个状态之外,iptables还有以下状态,且听我慢慢道来。实验的网络结构以下图为准。
  以下图为例为说明什么是NEW的状态,首先需要知道的是NEW与协议无关,其所指的是每一条连接中的第一个数据包,如下图所示,客户端主机使用TCP 50000连接服务端的TCP 22,这个连接中的第一个数据包的状态就是NEW;其它的例如客户端使用TCP 50001连接至服务端的TCP 22;客户端的UDP 50000连接至服务端的UDP 53;还有客户端对服务器端发出的ICMP数据包,以上这些例子中的第一个数据包的状态都是NEW。
  在Windows系统上有一个tracert的命令,它可以帮助我们检测两台主机之间总共经过了多少路由。它的工作原理其实很简单,主要利用了TTL值的存活时间。这个TTL值是指数据包在网络上能存活的时间,早期以秒为单位,现在改为&所能跨越的路由器的跳数&。
  以下图为例说明tracert工具是如何查询最左边Host1和最右边主机Host2隔了多少路由器。首先tracert工具会送出第一个数据包,这个数据包的目的地址是最右边的主机的IP,并且刻意将这个数据包的TTL值设定为1,接着,这个数据包被送到第一台的路由器H1,而第一台路由器H1在收到这个数据包后,会将数据包内的TTL值减1,因此,这个数据包的TTL值变为0,而这个值代表这个数据包的生命周期已尽,所以第一台路由器H1会丢弃这个数据包,并且返回一个ICMP(type 11 Time to live exceeded)数据包给Host1主机,以告诉Host1&你送出的数据包因生命周期已尽,故已遭丢弃&。这样,tracert就可以从这个数据包得知第一台路由器H1的IP地址。
  接着tracert会送出第二个数据包,不过,这个数据包的TTL值会刻意指定为2,接着,第二个数据包送到第一台路由器H1,第一台路由器收到这个数据包后,会将其TTL减1,这时数据包内的TTL值变为1,因为TTL值不为0,所以生命周期未尽,因此,第一台路由器H1会将这个数据包传给第二台路由器H2。不过,当第二台路由器H2把数据包内的TTL值减1后,这个数据包内的TTL值变为0,代表这个数据包的生命周期已尽,因此,第二台路由器H2会丢掉这个数据包,并且回送一个ICMP type 11(Time to live exceeded)传给发送主机Host1,以告诉Host1&你送出的数据包因生命周期已尽,故已遭丢弃&。这样,tracert就可以从这个数据包得知第二台路由器H2的IP地址。
  紧接着,tracert会再送出第三个数据包,不过,这个数据包的TTL值会刻意指定为3,接着,第三个数据包送到第一台路由器H1,第一台路由器h1收到这个数据包后,会将其TTL减1,这时数据包内的TTL值变为2,因为TTL值不为0,所以生命周期未尽,因此,第一台路由器H1会将这个数据包传给第二台路由器H2。不过,当第二台路由器h2把数据包内的TTL值减1后,这个数据包内的TTL值变为1,因为TTL值不为0,所以生命周期未尽,因此,第二台路由器h2会将这个数据包传给第三台路由器H3。当第三台路由器H3把数据包内的TTL值减1后,这个数据包内的TTL值变为0,代表这个数据包的生命周期已尽,因此,第三台路由器H3会丢掉这个数据包,并且回送一个ICMP type 11(Time to live exceeded)传给发送主机Host1,以告诉Host1&你送出的数据包因生命周期已尽,故已遭丢弃&。这样,tracert就可以从这个数据包得知第三台路由器H3的IP地址。最后tracert工具就可以收集到整条路径上的路由器的数量以及IP各为多少。
  看完tracert的工作原理后,我们可以看看什么数据包的状态会是RELATED。以上图为例,最后状态返回的&Destination reached!&这个数据包的状态就是RELATED状态,RELATED状态的数据包的意思是指&被动产生的响应数据包,而且这个数据包不属于现在任何连接的数据包&。例如,上图中Host1主机发出的是TCP协议的包(状态一),只因生命周期已尽被路由器H1丢弃,TCP协议的数据包是面向连接的,而路由器H1返回给Host1主机的是ICMP数据包,很明显这是另外一个数据连接,而这个数据包之所以会产生,完全是因为第一条连接的关系,而且这个数据包不属于现有任何一条连接的数据包。
  需要说明的是,上例以ICMP包为例说明,实际上RELATED状态的数据包与&协议&无关,&只要回应回来的是因为本机先送出的一个数据包导致另一个连接的产生,而这一条新连接上的所有数据包都是属于RELATED状态的数据包&。
  INVALID状态包指不属于ESTABLISHED、NEW、RELATED这三种,通常将其视为恶意的数据包而丢弃。
  关于INVALID状态的测试可以借助于NMAP这个强大的扫描器来实现。对于NMAP的一切可能访问它的主页了解,该工具属于开源软件,支持Windows平台()。
  可以通过设置以下命令来实现。
  有关TCP/IP协议的连接状态可参考RFC 793(),需注意的是该协议的连接状态和iptables的四种连接状态切不可混为一谈,那不是同一概念。
  TCP SYN扫描相对来说不张扬,不易被注意到,因为它从来不完成TCP 连接。它也不像Fin/Null/Xmas,Maimon 和Idle 扫描依赖于特定平台,而可以应对任何兼容的TCP 协议栈。它还可以明确可靠地区分 open(开放的), closed(关闭的),和filtered(被过滤的) 状态它常常被称为半开放扫描,因为它不打开一个完全的TCP 连接。它发送一个SYN 报文,就像您真的要打开一个连接,然后等待响应。SYN/ACK 表示端口在监听(开放),而RST (复位)表示没有监听者。如果数次重发后仍没响应,该端口就被标记为被过滤。如果收到ICMP 不可到达错误(类型3,代码1,2,3,9,10,或者13),该端口也被标记为被过滤。
NEW状态测试
  测试环境如前面交代,更详细的说明可参考&iptables中state模块的连接状态&()。
  其中test1主机的IP地址为11.0.0.200,开放ssh服务,防火墙设定如下所示开放所有服务:
  test2主机ip地址为173.16.0.200,iptables设定将output链设为阻止,同时在这种情况下ping网关和使用ssh连接test1主机。如下所示:
  可以看到上述的指令执行后无法ping通test1主机,而当开放NEW状态后再看看结果,如下所示:
  可以看到上述指令执行后可以正常获取系统相关的服务请求。证明iptables执行了正确的拦截操作。
RELATED测试
  结构如上述测试一样,其中test1主机开放所有服务,而test2主机(173.16.0.200)上做以下设定,当执行traceroute指令时无法返回正确的数据包:
  现在开放RELATED状态后看结果,如下图所示:
  可以看到设定后traceroute可以正确返回,但是ping和ssh操作是不成功的,这也就是RELATED的特色。
  关于iptables的四种状态其实有着各种各样的应用,这里只是简单地说明各状态所适用的环境,具体的应用有机会再放上来。本文出自 “” 博客,转载请与作者联系!
了这篇文章
类别:┆阅读(0)┆评论(0)
本文收录至博客专题:《》
12:43:57 17:22:52 23:35:01iptables简介
&&&&&& netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。
iptables基础
&&&&&& 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为&如果数据包头符合这样的条件,就这样处理这个数据包&。规则存储在内核空间的信息 包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规 则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的 主要工作就是添加、修改和删除这些规则。
iptables和netfilter的关系:
&&& && 这是第一个要说的地方,Iptables和netfilter的关系是一个很容易让人搞不清的问题。很多的知道iptables却不知道 netfilter。其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。
iptables传输数据包的过程
① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。&② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。&③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。
iptables的规则表和链:
&&&&& 表(tables)提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。
&&&&&链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一 条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据 该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定 义的默认策略来处理数据包。&&&&&& Iptables采用&表&和&链&的分层结构。在REHL4中是三张表五个链。现在REHL5成了四张表五个链了,不过多出来的那个表用的也不太多,所以基本还是和以前一样。下面罗列一下这四张表和五个链。注意一定要明白这些表和链的关系及作用。
1.filter表&&三个链:INPUT、FORWARD、OUTPUT作用:过滤数据包& 内核模块:iptables_filter.2.Nat表&&三个链:PREROUTING、POSTROUTING、OUTPUT作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat3.Mangle表&&五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它)4.Raw表&&两个链:OUTPUT、PREROUTING作用:决定数据包是否被状态跟踪机制处理& 内核模块:iptable_raw(这个是REHL4没有的,不过不用怕,用的不多)
1.INPUT&&进来的数据包应用此规则链中的策略2.OUTPUT&&外出的数据包应用此规则链中的策略3.FORWARD&&转发数据包时应用此规则链中的策略4.PREROUTING&&对数据包作路由选择前应用此链中的规则(记住!所有的数据包进来的时侯都先由这个链处理)5.POSTROUTING&&对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)
规则表之间的优先顺序:
Raw&&mangle&&nat&&filter规则链之间的优先顺序(分三种情况):
第一种情况:入站数据流向
&&&&&& 从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包 的目标主机是防火墙本机(比如说Internet用户访问防火墙主机中的web服务器的数据包),那么内核将其传给INPUT链进行处理(决定是否允许通 过等),通过以后再交给系统上层的应用程序(比如Apache服务器)进行响应。
第二冲情况:转发数据流向&&&&&& 来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其它外部地址(比如局域网用户通过网 关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地 址等)进行处理。
第三种情况:出站数据流向&&&&&& 防火墙本机向外部地址发送的数据包(比如在防火墙主机中测试公网DNS服务器时),首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理。
管理和设置iptables规则
iptables的基本语法格式
iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]说明:表名、链名用于指定 iptables命令所操作的表和链,命令选项用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等;条件匹配用于指定对符合什么样 条件的数据包进行处理;目标动作或跳转用于指定数据包的处理方式(比如允许通过、拒绝、丢弃、跳转(Jump)给其它链处理。
iptables命令的管理控制选项
-A 在指定链的末尾添加(append)一条新的规则-D
删除(delete)指定链中的某一条规则,可以按规则序号和内容删除-I
在指定链中插入(insert)一条新的规则,默认在第一行添加-R
修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换-L
列出(list)指定链中所有的规则进行查看-E
重命名用户定义的链,不改变链本身-F
清空(flush)-N
新建(new-chain)一条用户自己定义的规则链-X
删除指定表中用户自定义的规则链(delete-chain)-P
设置指定链的默认策略(policy)-Z 将所有表的所有链的字节和数据包计数器清零-n
使用数字形式(numeric)显示输出结果-v
查看规则表详细信息(verbose)的信息-V
查看版本(version)-h
获取帮助(help)
防火墙处理数据包的四种方式
ACCEPT 允许数据包通过DROP 直接丢弃数据包,不给任何回应信息REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息。LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则
iptables防火墙规则的保存与恢复
iptables-save把规则保存到文件中,再由目录rc.d下的脚本(/etc/rc.d/init.d/iptables)自动装载
使用命令iptables-save来保存规则。一般用
iptables-save & /etc/sysconfig/iptables
生成保存规则的文件 /etc/sysconfig/iptables,
service iptables save
它能把规则自动保存在/etc/sysconfig/iptables中。
当计算机启动时,rc.d下的脚本将用命令iptables-restore调用这个文件,从而就自动恢复了规则。
删除INPUT链的第一条规则
iptables -D INPUT 1
iptables防火墙常用的策略
1.拒绝进入防火墙的所有ICMP协议数据包
iptables -I INPUT -p icmp -j REJECT
2.允许防火墙转发除ICMP协议以外的所有数据包
iptables -A FORWARD -p ! icmp -j ACCEPT
说明:使用&!&可以将条件取反。
3.拒绝转发来自192.168.1.10主机的数据,允许转发来自192.168.0.0/24网段的数据
iptables -A FORWARD -s 192.168.1.11 -j REJECT&iptables&-A FORWARD -s 192.168.0.0/24 -j ACCEPT
说明:注意要把拒绝的放在前面不然就不起作用了啊。
4.丢弃从外网接口(eth1)进入防火墙本机的源地址为私网地址的数据包
iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP&iptables&-A INPUT -i eth1 -s 172.16.0.0/12 -j DROP&iptables&-A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
5.封堵网段(192.168.1.0/24),两小时后解封。
#&iptables -I INPUT -s 10.20.30.0/24 -j DROP&#&iptables -I FORWARD -s 10.20.30.0/24 -j DROP&#&at now 2 hours&at& iptables -D INPUT 1&at& iptables -D FORWARD 1
说明:这个策略咱们借助crond计划任务来完成,就再好不过了。[1] & Stopped&&&& at now 2 hours
6.只允许管理员从202.13.0.0/16网段使用SSH远程登录防火墙主机。
iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT&iptables&-A INPUT -p tcp --dport 22 -j DROP
说明:这个用法比较适合对设备进行远程管理时使用,比如位于分公司中的SQL服务器需要被总公司的管理员管理时。
7.允许本机开放从TCP端口20-1024提供的应用服务。
iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT&iptables&-A OUTPUT -p tcp --sport 20:1024 -j ACCEPT
8.允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。
iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT&iptables&-A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT
9.禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机
iptables -I INPUT -p icmp --icmp-type Echo-Request -j DROP&iptables&-I INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT&iptables&-I INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT
10.禁止转发来自MAC地址为00:0C:29:27:55:3F的和主机的数据包
iptables -A FORWARD -m mac --mac-source 00:0c:29:27:55:3F -j DROP
说明:iptables中使用&-m 模块关键字&的形式调用显示匹配。咱们这里用&-m mac &mac-source&来表示数据包的源MAC地址。
11.允许防火墙本机对外开放TCP端口20、21、25、110以及被动模式FTP端口
iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110, -j ACCEPT
说明:这里用&-m multiport &dport&来指定目的端口及范围
12.禁止转发源IP地址为192.168.1.20-192.168.1.99的TCP数据包。
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
说明:此处用&-m &iprange &src-range&指定IP范围。
13.禁止转发与正常TCP连接无关的非&syn请求数据包。
iptables -A FORWARD -m state --state NEW -p tcp ! --syn -j DROP
说明:&-m state&表示数据包的连接状态,&NEW&表示与任何连接无关的,新的嘛!
14.拒绝访问防火墙的新数据包,但允许响应连接或与已有连接相关的数据包
iptables -A INPUT -p tcp -m state --state NEW -j DROP&iptables&-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
说明:&ESTABLISHED&表示已经响应请求或者已经建立连接的数据包,&RELATED&表示与已建立的连接有相关性的,比如FTP数据连接等。
15.只开放本机的web服务(80)、FTP(20、21、),放行外部主机发住服务器其它端口的应答数据包,将其他入站数据包均予以丢弃处理。
iptables -I INPUT -p tcp -m multiport --dport 20,21,80 -j ACCEPT&iptables&-I INPUT -p tcp --dport
-j ACCEPT&iptables&-I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT&iptables&-P INPUT DROP文章参考
  http://netfilter.org/ iptables官方网站  http://www./netweb/iptables.htm iptables配置手册  http://man.chinaunix.net/  http://man.chinaunix.net/network/iptables-tutorial-cn-1.1.19.html iptables配置手册  http://blog.csdn.net/thmono/archive//5462043.aspx  /art/57.htm  .cn/s/blog_40ba724c0100jz12.html  http://qiliuping./blog/static//
阅读(...) 评论()

我要回帖

更多关于 查看iptables 规则 的文章

 

随机推荐