一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Iptables防火墙tcp-flags模块扩展匹配规则完整指南

时间:2026-09-01 19:18:01 编辑:袖梨 来源:一聚教程网

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Iptables防火墙tcp-flags模块扩展匹配规则”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

Iptables防火墙tcp-flags模块扩展匹配规则

在这个场景下,tcp-flags模块的作用是判断TCP协议数据报文标志位的得到值的,在TCP的三次握手中,第一次握手客户端向服务器发送syn=1的数据报文,第二次握手服务端向客户端发送sync和ack=1的报文,第三次握手客户端向服务端发送ack=1的报文。

实际处理时,tcp-flags模块就是来判断发送报下文指定的标志位是否等于1,同时且该条报下文只包含指定的标志位,否则就拒绝通行,比如我们指定的标志位是SYN,那么该条报下文就只能包含SYNC,如果再包含ACK,那么就不放行,并且标志位的值要为1。

**案例:**

在这个场景下,只允许其他客户端发送TCP请求报文到本机,本机响应能够,但是本机不可向其他主机发送TCP请求报文。

  • 落到代码里,首先来分析,"只允许其他客户端发送TCP请求到本机",根据这句话能够明确是在INPUT链添加相应的规则,客户端发起请求一共需发送2次TCP握手,分别是第一次握手和第三次握手,借助tcp-flags模块确保客户端发送的报下文标志位都是正确的,需在INPUT链添加3条规则,第一条规则是匹配客户端发送的报下文是否只包含syn标志位,同时且值是否等于1,第二条规则是匹配客户端发送的报下文是否只包含ack,并且值是否等于1,如果这两条规则都满足,那么就说明是客户端向服务端发送的请求,最后的动作是允许,第三条规则是拒绝其他标志位的TCP连接请求。
  • 在这个场景下,随后来分析"本机只能够响应客户端发起的TCP请求,但是本机不能够向其他客户端发送请求",根据这句话能够明确出规则是要添加在OUTPUT链的,我们只需在OUTPUT链添加上第二次握手所包含的TCP标志位的规则,完成响应客户端的TCP连接请求,最后在添加一条规则,禁止其他的TCP标志位从OUTPUT链发出,也就能够拒绝本机向其他的客户端发起TCP请求。

tcp-flags模块采用的命令格式:--tcp-flags {标志位集合} {要判断哪个标志位等于1}

1)编写具体的防火墙规则

1.添加允许客户端向本机发起TCP请求的规则
#syn=1的标志位规则
[root@jxl-1 ~]# iptables -t filter -I INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST SYN -j ACCEPT
#ack=1的标志位规则
[root@jxl-1 ~]# iptables -t filter -I INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST ACK -j ACCEPT
#其余的报文都拒绝
[root@jxl-1 ~]# iptables -t filter -A INPUT -j DROP
2.添加本机响应客户端TCP连接请求以及拒绝发起TCP请求的规则
#syn和ack都等于1
[root@jxl-1 ~]# iptables -t filter -I OUTPUT -p tcp --sport 22 -m tcp --tcp-flags SYN,ACK,FIN,RST SYN,ACK -j ACCEPT
#ack-1
[root@jxl-1 ~]# iptables -t filter -I OUTPUT -p tcp --sport 22 -m tcp --tcp-flags SYN,ACK,FIN,RST ACK -j ACCEPT
#其余的报文全部拒绝
[root@jxl-1 ~]# iptables -t filter -A OUTPUT -j DROP

2)查看设置的防火墙规则

[root@jxl-1 ~]# iptables -L -n -v --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 82 6416 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 flags:0x17/0x10
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 flags:0x17/0x02
3 5169 1958K DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 41 4348 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:22 tcp flags:0x17/0x10
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:22 tcp flags:0x17/0x12
3 293 65316 DROP all -- * * 0.0.0.0/0 0.0.0.0/0

3)查看效果

本机无法发起TCP连接请求。

其他主机能够向本机发起TCP连接。

理解这一步时,以上就是Iptables防火墙tcp-flags模块扩展匹配规则详解的详细内容,更多关于Iptables防火墙tcp-flags的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
  • Iptables防火墙自定义链表实现方法
  • Iptables防火墙基本匹配条件应用详解
  • Iptables防火墙四表五链概念及采用技巧详解
  • Iptables防火墙iprange模块扩展匹配规则详解
  • Iptables防火墙string模块扩展匹配规则
  • Iptables防火墙limit模块扩展匹配规则详解
  • Iptables防火墙connlimit与time模块扩展匹配规则

热门栏目