【Iptables】07 IPtables扩展匹配条件之UDP扩展与ICMP扩展

特别说明:此系列博文根据 朱双印博客-iptables系列博文,个人实践后总结,此为个人笔记精简版,更通俗易懂请参考 朱双印博客-iptables系列博文 原文内容,诸君必能有所收获

07 IPtables扩展匹配条件之UDP扩展与ICMP扩展

udp扩展模块

先来看看UDP扩展模块,该模块和tcp扩展模块相似,但只要两个扩展选项,即 --sport 和 --dport,用于匹配源地址端口号和目标地址端口号,使用方式也和tcp扩展模块一样,只不过在使用时用 -p 指定udp端口和 -m 选项指定了 udp 扩展模块;

下面是一些示例,如匹配目标地址的UDP端口10050,可以定义以下规则

iptables -I INPUT -p udp -m udp --dport 10050 -j REJECT

在使用了-p 选项指定了udp端口后,可以不使用 -m选项指定dup扩展模块

iptables -I INPUT -p udp --dport 10050 -j REJECT

也同样可以指定连续端口,同样可以使用multiport扩展模块指定不连续端口

iptables -t filter -I INPUT -p udp --dports 22:80 -j REJECT

iptables -I INPUT -p udp -m multiport --dports 22,80,3306 -j REJECT

icmp扩展模块

ICMP协议即互联网控制报文协议,它主要是用于探测网络上的主机是否可用,目标是否到达,网络是否通畅等,我们常用的ping命令就是使用的这个协议

当我们使用ping命令时,如果可用联通,主机一般会对Ping命令做出回应,虽然都是icmp协议的报文,但是它们的所属类型是不一样的,如发出去的ping请求类型为8的icmp报文,对方主机返回的ping报文则属于类型0的ICMP报文,由于类型较多,这里只介绍常用的几个类型
在这里插入图片描述
如,所以表示"目标不可达"的icmp报文的type码都是3,而目标不可达有可能是网络不可达,主机不可达,端口不可达等,我们就需要细化区分,icmp对每种type细分了对应的code,用不同的code对应具体的场景,使用时,一般用type/code去匹配具体类型的icmp报文,如使用"3/1"去表示主机不可达的icmp报文

我们常用的ping命令的回应icmp报文类型为0,其code也为0,并且它是属于Query,即查询类型的报文,而类型3这种,属于的是错误类报文

我们发出的ping命令,其报文类型为8,code为0;而对方回复(回应),则类型是0,code为0;

现在,我们假设不让所有的icmp类型的报文进入本机,可以直接 -p选项指定协议类型,进行协议匹配,不区分type和code这些

iptables -I INPUT -p icmp -j REJECT

如果想要我们能ping通别人,别人不能ping通我们,我们就需要更改规则了

iptables -I INPUT -p icmp -m icmp --icmp-type 8/0 -j REJECT
在这里插入图片描述
在这里插入图片描述
可以看到,别的主机ping本机时会返回错误信息,ping发送的报文信息type为8,code为0,返回的报文信息type为0,code为0;所以我们能ping通别人,因为没有INPUT链上的规则禁止了类型为0,code为0的报文,而别人ping我们主机时,则因为是类型为8的报文,被规则匹配后拒绝

由于类型8下面code不像类型3那样有很多code,所以我们可以省略code,直接使用类型8即可

iptables -I INPUT -p icmp -m icmp --icmp-type 8 -j REJECT

我们还能通过 --icmp-type选项匹配类型名称,如 echo request (type为8,code为0)

iptables -I INPUT -p icmp -m icmp --icmp-type "echo-request" -j REJECT

这样也能达到匹配type为8的报文,只是需要注意,需要将名称中分隔符空格替换成 “-” 短横线
【Iptables】iptables目录
【Iptables】08 Iptables扩展匹配条件之state扩展模块

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来给你总结一下iptables的常见匹配条件: 1. 匹配协议:使用 `-p` 参数指定协议,常见协议包括 TCP、UDPICMP等,例如: ``` # 匹配 TCP 协议 iptables -A INPUT -p tcp --dport 22 -j ACCEPT ``` 2. 源/目标地址:使用 `-s` 和 `-d` 参数指定源地址和目标地址,例如: ``` # 允许来自 IP 地址为 192.168.1.100 的主机访问 SSH 服务 iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT # 允许向 IP 地址为 192.168.1.100 的主机发送 HTTP 请求 iptables -A OUTPUT -d 192.168.1.100 -p tcp --dport 80 -j ACCEPT ``` 3. 匹配端口:使用 `--dport` 和 `--sport` 参数指定目标端口和源端口,例如: ``` # 允许访问 SSH 服务 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许从本地主机向远程主机发送 HTTP 请求 iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT ``` 4. 匹配数据包的状态:使用 `--state` 参数指定数据包的状态,例如: ``` # 允许已经建立的 TCP 连接通过 iptables -A INPUT -p tcp --dport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许 ICMP 数据包通过 iptables -A INPUT -p icmp -m state --state NEW -j ACCEPT ``` 5. 匹配 MAC 地址:使用 `-m mac --mac-source` 参数指定源 MAC 地址,例如: ``` # 允许来自 MAC 地址为 00:11:22:33:44:55 的主机访问 SSH 服务 iptables -A INPUT -p tcp --dport 22 -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT ``` 这些是iptables的常见匹配条件,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值