iptables详解:iptables扩展之udp扩展与icmp扩展

wanstack      2022-02-07     548

关键词:

前文中总结了iptables的tcp扩展模块,此处,我们来总结一下另外两个跟协议有关的常用的扩展模块,udp扩展与icmp扩展。

 

udp扩展

我们先来说说udp扩展模块,这个扩展模块中能用的匹配条件比较少,只有两个,就是--sport与--dport,即匹配报文的源端口与目标端口。

没错,tcp模块中也有这两个选项,名称都一模一样。

只不过udp扩展模块的--sport与--dport是用于匹配UDP协议报文的源端口与目标端口,比如,放行samba服务的137与138这两个UDP端口,示例如下

技术分享图片技术分享图片

 

前文说明过,当使用扩展匹配条件时,如果未指定扩展模块,iptables会默认调用与"-p"对应的协议名称相同的模块,所以,当使用"-p udp"时,可以省略"-m udp",示例如下。

技术分享图片技术分享图片

 

udp扩展中的--sport与--dport同样支持指定一个连续的端口范围,示例如下

技术分享图片技术分享图片

 

上图中的配置表示137到157之间的所有udp端口全部对外开放,其实与tcp扩展中的使用方法相同。

但是udp中的--sport与--dport也只能指定连续的端口范围,并不能一次性指定多个离散的端口,没错,聪明如你一定想到,使用之前总结过的multiport扩展模块,即可指定多个离散的UDP端口,如果你忘了multiport模块怎样使用,请回顾前文。

总之有了前文的基础,再理解上述示例就容易多了,此处不再对udp模块的--sport与--dport进行赘述。

 

icmp扩展

最常用的tcp扩展、udp扩展已经总结完毕,现在聊聊icmp扩展,没错,看到icmp,你肯定就想到了ping命令,因为ping命令使用的就是icmp协议。

ICMP协议的全称为Internet Control Message Protocol,翻译为互联网控制报文协议,它主要用于探测网络上的主机是否可用,目标是否可达,网络是否通畅,路由是否可用等。

 

我们平常使用ping命令ping某主机时,如果主机可达,对应主机会对我们的ping请求做出回应(此处不考虑禁ping等情况),也就是说,我们发出ping请求,对方回应ping请求,虽然ping请求报文与ping回应报文都属于ICMP类型的报文,但是如果在概念上细分的话,它们所属的类型还是不同的,我们发出的ping请求属于类型8的icmp报文,而对方主机的ping回应报文则属于类型0的icmp报文,根据应用场景的不同,icmp报文被细分为如下各种类型。

技术分享图片技术分享图片

技术分享图片

 

从上图可以看出,所有表示"目标不可达"的icmp报文的type码为3,而"目标不可达"又可以细分为多种情况,是网络不可达呢?还是主机不可达呢?再或者是端口不可达呢?所以,为了更加细化的区分它们,icmp对每种type又细分了对应的code,用不同的code对应具体的场景,  所以,我们可以使用type/code去匹配具体类型的ICMP报文,比如可以使用"3/1"表示主机不可达的icmp报文。

上图中的第一行就表示ping回应报文,它的type为0,code也为0,从上图可以看出,ping回应报文属于查询类(query)的ICMP报文,从大类上分,ICMP报文还能分为查询类与错误类两大类,目标不可达类的icmp报文则属于错误类报文。

而我们发出的ping请求报文对应的type为8,code为0。

 

了解完上述概念,就好办了,我们来看一些应用场景。

假设,我们现在想要禁止所有icmp类型的报文进入本机,那么我们可以进行如下设置。

技术分享图片技术分享图片

 

上例中,我们并没有使用任何扩展匹配条件,我们只是使用"-p icmp"匹配了所有icmp协议类型的报文。

如果进行了上述设置,别的主机向我们发送的ping请求报文无法进入防火墙,我们想别人发送的ping请求对应的回应报文也无法进入防火墙。所以,我们既无法ping通别人,别人也无法ping通我们。

 

假设,此刻需求有变,我们只想要ping通别人,但是不想让别人ping通我们,刚才的配置就不能满足我们了,我们则可以进行如下设置(此处不考虑禁ping的情况)

技术分享图片技术分享图片

 

上图中,使用"-m icmp"表示使用icmp扩展,因为上例中使用了"-p icmp",所以"-m icmp"可以省略,使用"--icmp-type"选项表示根据具体的type与code去匹配对应的icmp报文,而上图中的"--icmp-type 8/0"表示icmp报文的type为8,code为0才会被匹配到,也就是只有ping请求类型的报文才能被匹配到,所以,别人对我们发起的ping请求将会被拒绝通过防火墙,而我们之所以能够ping通别人,是因为别人回应我们的报文的icmp type为0,code也为0,所以无法被上述规则匹配到,所以我们可以看到别人回应我们的信息。

 

因为type为8的类型下只有一个code为0的类型,所以我们可以省略对应的code,示例如下

技术分享图片

 技术分享图片

 

除了能够使用对应type/code匹配到具体类型的icmp报文以外,我们还能用icmp报文的描述名称去匹配对应类型的报文,示例如下

技术分享图片技术分享图片

 

没错,上例中使用的 --icmp-type "echo-request"与 --icmp-type 8/0的效果完全相同,参考本文最上方的表格即可获取对应的icmp类型的描述名称。

技术分享图片技术分享图片

 

注意:名称中的"空格"需要替换为"-"。

 
 

 

小结

udp扩展

常用的扩展匹配条件

--sport:匹配udp报文的源地址

--dport:匹配udp报文的目标地址

 

 
 

icmp扩展

常用的扩展匹配条件

--icmp-type:匹配icmp报文的具体类型



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

当我们通过http的url访问某个网站的网页时,客户端向服务端的80端口发起请求,服务端再通过80端口响应我们的请求,于是,作为客户端,我们似乎应该理所应当的放行80端口,以便服务端回应我们的报文可以进入客户端主机,... 查看详情

iptables详解:iptables匹配条件总结之二(常用扩展模块)

前文已经总结了iptables中的基本匹配条件,以及简单的扩展匹配条件,此处,我们来认识一些新的扩展模块。  iprange扩展模块之前我们已经总结过,在不使用任何扩展模块的情况下,使用-s选项或者-d选项即可匹配报文的... 查看详情

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

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

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

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

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

...章之前,请确保你已经阅读了如下文章,如下文章总结了iptables的相关概念,是阅读这篇文章的基础。图文并茂理解iptables 如果你是一个新手,在阅读如下文章时,请坚持读到最后,读的过程中可能会有障碍,但是在读完以... 查看详情

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

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

28_02_iptables系列之基本应用及显式扩展

netfiler:Framework,TCP/IPiptables[-tTABLE]COMMANDCHAIN[num]匹配条件-j处理动作匹配条件   通用匹配   -s匹配源地址 -d匹配目标地址 -p匹配协议的{tcp|udp|icmp} -i指定数据报文流入接口 -o指定书库报文流出接口 扩展匹配  ... 查看详情

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扩展匹配条件隐... 查看详情

skill——iptables(代码片段)

扩展匹配条件一:udp扩展模块选项说明--sport匹配报文的源端口--dport匹配报文的目标端口和tcp模块中的名称一样,不同的是,udp模块中的--sport与--dport是用来匹配UDP协议报文的源端口与目标端口的udp模块与tcp模块类似,适用于tcp... 查看详情

防火墙之iptables匹配条件讲解

 1 概述iptables命令中,需要根据匹配的条件作出相应的动作,本文将结合例子,讲解匹配条件匹配条件分为基本和扩展的条件基本:通用的,PARAMETERS,无需加载模块,由iptables/netfilter自行提供扩展:需要加载扩展模块(/u... 查看详情

iptables命令详解是啥

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

iptables命令详解是啥?

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

iptables详解

参考技术Anetfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功... 查看详情

iptables之state扩展与开启被动模式ftp(代码片段)

1.state扩展2.如何开放被动模式的ftp服务?3.防火墙规则的检查次序4.保存与加载预存的规则1.state扩展??该扩展至关重要,正是由于state才实现了连接追踪机制。??连接追踪机制:每一台客户端与本地主机进行通讯时(有可能是通过... 查看详情

linux之网络安全

...墙扩展:Web应用防火墙(WAF)硬件防火墙与软件防火墙比较iptablesiptables是什么?netfilter/iptables功能iptables概念iptables工作依据------规则(rules)iptables中链的概念iptables中表的概念iptables中表链之间的关系iptables中表的优先级数据包流经i 查看详情

iptables详解

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

[linux系列|iptables]iptables详解②(代码片段)

一.  iptables扩展模块1.  multiport模块     使用multiport模块可以添加对个不连续的端口,最多可以添加15组。语法:-m  multiport  <--sport|--dport|--ports>端口1[,端口2,端口3....,端口n]示例:192.168.122.1... 查看详情

iptables详解:iptables规则管理

上一篇文章中,我们已经学会了怎样使用iptables命令查看规则,那么这篇文章我们就来总结一下,怎样管理规则。之前,我们把查看iptables规则的操作比作"增删改查"当中的"查",那么在这篇文章中,我们就聊聊怎样对iptables进行"... 查看详情