iptables详解:iptables实际操作之规则查询

wjlovezzd wjlovezzd     2022-12-01     621

关键词:

在阅读这篇文章之前,请确保你已经阅读了如下文章,如下文章总结了iptables的相关概念,是阅读这篇文章的基础。

图文并茂理解iptables

 

如果你是一个新手,在阅读如下文章时,请坚持读到最后,读的过程中可能会有障碍,但是在读完以后,你会发现你已经明白了。

技术图片

在进行iptables实验时,请务必在测试机上进行。

 

之前在iptables的概念中已经提到过,在实际操作iptables的过程中,是以"表"作为操作入口的,如果你经常操作关系型数据库,那么当你听到"表"这个词的时候,你可能会联想到另一个词----"增删改查",当我们定义iptables规则时,所做的操作其实类似于"增删改查",那么,我们就先从最简单的"查"操作入手,开始实际操作iptables。

 

在之前的文章中,我们已经总结过,iptables为我们预定义了4张表,它们分别是raw表、mangle表、nat表、filter表,不同的表拥有不同的功能。

filter负责过滤功能,比如允许哪些IP地址访问,拒绝哪些IP地址访问,允许访问哪些端口,禁止访问哪些端口,filter表会根据我们定义的规则进行过滤,filter表应该是我们最常用到的表了,所以此处,我们以filter表为例,开始学习怎样实际操作iptables。

 

怎样查看filter表中的规则呢?使用如下命令即可查看。

技术图片

上例中,我们使用-t选项,指定要操作的表,使用-L选项,查看-t选项对应的表的规则,-L选项的意思是,列出规则,所以,上述命令的含义为列出filter表的所有规则,注意,上图中显示的规则(绿色标注的部分为规则)是Centos6启动iptables以后默认设置的规则,我们暂且不用在意它们,上图中,显示出了3条链(蓝色标注部分为链),INPUT链、FORWARD链、OUTPUT链,每条链中都有自己的规则,前文中,我们打过一个比方,把"链"比作"关卡",不同的"关卡"拥有不同的能力,所以,从上图中可以看出,INPUT链、FORWARD链、OUTPUT链都拥有"过滤"的能力,所以,当我们要定义某条"过滤"的规则时,我们会在filter表中定义,但是具体在哪条"链"上定义规则呢?这取决于我们的工作场景。比如,我们需要禁止某个IP地址访问我们的主机,我们则需要在INPUT链上定义规则。因为,我们在理论总结中已经提到过,报文发往本机时,会经过PREROUTING链与INPUT链(如果你没有明白,请回顾前文),所以,如果我们想要禁止某些报文发往本机,我们只能在PREROUTING链和INPUT链中定义规则,但是PREROUTING链并不存在于filter表中,换句话说就是,PREROUTING关卡天生就没有过滤的能力,所以,我们只能在INPUT链中定义,当然,如果是其他工作场景,可能需要在FORWARD链或者OUTPUT链中定义过滤规则。

 

话说回来,我们继续聊怎样查看某张表中的规则。

刚才提到,我们可以使用iptables -t filter -L命令列出filter表中的所有规则,那么举一反三,我们也可以查看其它表中的规则,示例如下。

iptables -t raw -L

iptables -t mangle -L

iptables -t nat -L

其实,我们可以省略-t filter,当没有使用-t选项指定表时,默认为操作filter表,即iptables -L表示列出filter表中的所有规则。

 

我们还可以只查看指定表中的指定链的规则,比如,我们只查看filter表中INPUT链的规则,示例如下(注意大小写)。

技术图片

上图中只显示了filter表中INPUT链中的规则(省略-t选项默认为filter表),当然,你也可以指定只查看其他链,其实,我们查看到的信息还不是最详细的信息,我们可以使用-v选项,查看出更多的、更详细的信息,示例如下。

技术图片

可以看到,使用-v选项后,iptables为我们展示的信息更多了,那么,这些字段都是什么意思呢?我们来总结一下,看不懂没关系,等到实际使用的时候,自然会明白,此处大概了解一下即可。

其实,这些字段就是规则对应的属性,说白了就是规则的各种信息,那么我们来总结一下这些字段的含义。

pkts:对应规则匹配到的报文的个数。

bytes:对应匹配到的报文包的大小总和。

target:规则对应的target,往往表示规则对应的"动作",即规则匹配成功后需要采取的措施。

prot:表示规则对应的协议,是否只针对某些协议应用此规则。

opt:表示规则对应的选项。

in:表示数据包由哪个接口(网卡)流入,我们可以设置通过哪块网卡流入的报文需要匹配当前规则。

out:表示数据包由哪个接口(网卡)流出,我们可以设置通过哪块网卡流出的报文需要匹配当前规则。

source:表示规则对应的源头地址,可以是一个IP,也可以是一个网段。

destination:表示规则对应的目标地址。可以是一个IP,也可以是一个网段。

 

细心如你一定发现了,上图中的源地址与目标地址都为anywhere,看来,iptables默认为我们进行了名称解析,但是在规则非常多的情况下如果进行名称解析,效率会比较低,所以,在没有此需求的情况下,我们可以使用-n选项,表示不对IP地址进行名称反解,直接显示IP地址,示例如下。

技术图片

如上图所示,规则中的源地址与目标地址已经显示为IP,而非转换后的名称。

当然,我们也可以只查看某个链的规则,并且不让IP进行反解,这样更清晰一些,比如 iptables -nvL INPUT

 

如果你习惯了查看有序号的列表,你在查看iptables表中的规则时肯定会很不爽,没有关系,满足你,使用--line-numbers即可显示规则的编号,示例如下。

技术图片

--line-numbers选项并没有对应的短选项,不过我们缩写成--line时,centos中的iptables也可以识别。

 
 

我知道你目光如炬,你可能早就发现了,表中的每个链的后面都有一个括号,括号里面有一些信息,如下图红色标注位置,那么这些信息都代表了什么呢?我们来看看。

技术图片

上图中INPUT链后面的括号中包含policy ACCEPT ,0 packets,0bytes 三部分。

policy表示当前链的默认策略,policy ACCEPT表示上图中INPUT的链的默认动作为ACCEPT,换句话说就是,默认接受通过INPUT关卡的所有请求,所以我们在配置INPUT链的具体规则时,应该将需要拒绝的请求配置到规则中,说白了就是"黑名单"机制,默认所有人都能通过,只有指定的人不能通过,当我们把INPUT链默认动作设置为接受(ACCEPT),就表示所有人都能通过这个关卡,此时就应该在具体的规则中指定需要拒绝的请求,就表示只有指定的人不能通过这个关卡,这就是黑名单机制,但是,你一定发现了,上图中所显示出的规则,大部分都是接受请求(ACCEPT),并不是想象中的拒绝请求(DROP或者REJECT),这与我们所描述的黑名单机制不符啊,按照道理来说,默认动作为接受,就应该在具体的规则中配置需要拒绝的人,但是上图中并不是这样的,之所以出现上图中的情况,是因为IPTABLES的工作机制导致到,上例其实是利用了这些"机制",完成了所谓的"白名单"机制,并不是我们所描述的"黑名单"机制,我们此处暂时不用关注这一点,之后会进行详细的举例并解释,此处我们只要明白policy对应的动作为链的默认动作即可,或者换句话说,我们只要理解,policy为链的默认策略即可。

packets表示当前链(上例为INPUT链)默认策略匹配到的包的数量,0 packets表示默认策略匹配到0个包。

bytes表示当前链默认策略匹配到的所有包的大小总和。

其实,我们可以把packets与bytes称作"计数器",上图中的计数器记录了默认策略匹配到的报文数量与总大小,"计数器"只会在使用-v选项时,才会显示出来。

当被匹配到的包达到一定数量时,计数器会自动将匹配到的包的大小转换为可读性较高的单位,如下图所示。

技术图片

如果你想要查看精确的计数值,而不是经过可读性优化过的计数值,那么你可以使用-x选项,表示显示精确的计数值,示例如下。

技术图片

每张表中的每条链都有自己的计数器,链中的每个规则也都有自己的计数器,没错,就是每条规则对应的pkts字段与bytes字段的信息。

 

命令小节

好了,我们已经会使用命令简单的查看iptables表的规则了,为了方便以后回顾,我们将上文中的相关命令总结一下。

 

 

 

查看对应表的所有规则,-t选项指定要操作的表,省略"-t 表名"时,默认表示操作filter表,-L表示列出规则,即查看规则。

 

 

 

查看指定表的指定链中的规则。

 

 

 

查看指定表的所有规则,并且显示更详细的信息(更多字段),-v表示verbose,表示详细的,冗长的,当使用-v选项时,会显示出"计数器"的信息,由于上例中使用的选项都是短选项,所以一般简写为iptables -t 表名 -vL

 

 

 

表示查看表的所有规则,并且在显示规则时,不对规则中的IP或者端口进行名称反解,-n选项表示不解析IP地址。

 

 

 

表示查看表的所有规则,并且显示规则的序号,--line-numbers选项表示显示规则的序号,注意,此选项为长选项,不能与其他短选项合并,不过此选项可以简写为--line,注意,简写后仍然是两条横杠,仍然是长选项。

 

 

 

表示查看表中的所有规则,并且显示更详细的信息(-v选项),不过,计数器中的信息显示为精确的计数值,而不是显示为经过可读优化的计数值,-x选项表示显示计数器的精确值。

   

实际使用中,为了方便,往往会将短选项进行合并,所以,如果将上述选项都糅合在一起,可以写成如下命令,此处以filter表为例。

 

 

当然,也可以只查看某张表中的某条链,此处以filter表的INPUT链为例

 

 

 

好了,怎样使用iptables命令进行基本的查看操作,就先总结到这里吧,下一篇文章会总结iptables规则的"增、删、改"操作,直达链接如下:

 

linux下iptables详解

1.selinux关闭2.iptables内网关闭,外网打开,大并发情况下,不能开iptables,影响性能,硬件防火墙。 iptables工作流程小结1.防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。2.如果匹配上规则... 查看详情

firewall详解与操作(代码片段)

firewall是什么:  先声明一点,不知道iptables的,可以先去了解下。  firewalld的底层是通过iptables来实现的,,firewalld和iptables都不是防火墙,它们只是防火墙的管理程序,真正的防火墙是内核的netfilter。CentOs6中使用iptables来... 查看详情

iptables命令详解是啥

参考技术Aiptables的主要功能是实现对网络数据包进出设备及转发的控制。当数据包需要进入设备、从设备中流出或者经该设备转发、路由时,都可以使用iptables进行控制。环境:操作系统:CentOS7,3。ip地址:172,16,55,7。扩展... 查看详情

iptables基本操作

  iptables实际上是Linux内置模块netfilter的管理程序,netfilter才是真正意义上起到防火墙作用的内核模块,并且工作在内核空间,而管理程序iptables则工作在用户空间。作为用户无法直接操作内核模块,因此需要通过iptables去... 查看详情

iptablesiptables实际操作之规则查询

...障碍,但是在读完以后,你会发现你已经明白了。在进行iptables实验时,请务必在测试机上进行。之前在iptables的概念中已经提到过,在实际操作iptables的过程中,是以”表”作为操作入口的,如果你经常操作关系型数据库,那么... 查看详情

iptables详解

5链INPUT,OUTPUT,PREROUTING,FORWARD,POSTROUTING                            INPUT         OUTPUT               ^           ^               |           |               |           |-->... 查看详情

iptables详解(12):iptables动作总结之一

前文一直在介绍iptables的匹配条件,并没有对动作进行过总结,那么此处,我们就来总结一下iptables中的动作。之前的举例中已经用到了一些常用动作,比如ACCEPT、DROP、REJECT等。其实,"动作"与"匹配条件"一样,也有"基础"与"扩展... 查看详情

iptables详解:iptables的黑白名单机制

注意:在参照本文进行iptables实验时,请务必在个人的测试机上进行,因为如果iptables规则设置不当,有可能使你无法连接到远程主机中。 前文中一直在强调一个概念:报文在经过iptables的链时,会匹配链中的规则,遇到匹配... 查看详情

关于iptables--基础知识

什么是iptables?常见于linux系统下的应用层防火墙工具常见人员:系统管理人员、网络工程师、安全人员iptables的作用:一、如何用iptables搭建一套如何企业实际使用的防火墙规则二、如何用iptables进行防攻击三、如何利用iptables进... 查看详情

iptables详解(代码片段)

 一. iptables概念详解参考:  iptables概念   https://www.cnblogs.com/metoy/p/4320813.html   https://blog.csdn.net/fuzhongfaya/article/details/820221811.组成  linux的防火墙由netfilter和iptables组成 查看详情

iptables详解

iptables简介      netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向... 查看详情

iptables详解:iptables扩展模块之state扩展

为了防止恶意攻击主动连接到你的主机我们需要通过iptables的扩展模块判断报文是为了回应我们之前发出的报文还是主动向我们发送的报文state模块可以让iptables实现连接追踪机制  NEW ESTABLISHEDRELATEDINVALIDUNTRACKED  查看详情

iptables详解

5链INPUT,OUTPUT,PREROUTING,FORWARD,POSTROUTING                            INPUT         OUTPUT               ^           ^               |           |               |           |-->... 查看详情

iptables详解

5链INPUT,OUTPUT,PREROUTING,FORWARD,POSTROUTING                            INPUT         OUTPUT               ^           ^               |           |               |           |-->... 查看详情

iptables详解(11):iptables之网络防火墙

 我们一起来回顾一下之前的知识,在第一篇介绍iptables的文章中,我们就描述过防火墙的概念,我们说过,防火墙从逻辑上讲,可以分为主机防火墙与网络防火墙。主机防火墙:针对于单个主机进行防护。网络防火墙:往往... 查看详情

linux防火墙iptables详解

iptables详解(思维导图)1.概述1.1iptable简介1.2防火墙的种类1.3netfilter2.iptables的工作流程2.1iptables工作图示2.2链、功能表2.3报文流向2.4路由功能发生的时刻3.防火墙类型3.1主机防火墙3.1.1iptables基本规则定义3.1.2iptables扩展匹配条件隐... 查看详情

iptables命令详解是啥?

...有,目的地址为所有,目的端口为TCP端口13,的数据包。iptables--静态防火墙。iptables是复杂的,它集成到linux内核中。用户通过iptables,可以对进出你的计算机的数据包进行过滤。通过iptables命令设置规则,来把守计算机网络—... 查看详情

iptables详解(13):iptables动作总结之二

概述阅读这篇文章需要站在前文的基础上,如果你在阅读时遇到障碍,请参考之前的文章。 前文中,我们已经了解了如下动作ACCEPT、DROP、REJECT、LOG今天,我们来认识几个新动作,它们是:SNAT、DNAT、MASQUERADE、REDIRECT 在认... 查看详情