Linux iptables - 使用 RST 拒绝 TCP SYN

Linux iptables - 使用 RST 拒绝 TCP SYN

我正在 Linux 机器上实施一个实现,以拒绝来自 WAN 端 telnet 端口 8023 的传入 telnet 请求。该功能是通过使用以下 iptables 规则实现的。NAT 预路由链中的第一条规则用于将来自端口 8023 的传入 tcp 帧 DNAT 到 23,第二条规则使用 tcp-reset 拒绝端口 23 上的这些 tcp 帧

iptables -t nat -A PREROUTING -i wan+ -p tcp --dport 8023 -j DNAT --to-destination :23
iptables -A INPUT -i wan+ -p tcp --dport 23 -j REJECT --reject-with tcp-reset

添加这些规则后,WAN 机器上的新会话将终止。

[root@ROOT ~]# telnet 192.168.3.252 8023
Trying 192.168.3.252...
Connected to 192.168.3.252.
Escape character is '^]'.
Connection closed by foreign host.

然而,当看到 wireshark 从 wan 机器捕获整个交易时,观察到了以下序列。

TCP sequence:
SYN -->
    <-- SYN/ACK
ACK -->
    <-- RST

wireshark 捕获信息也已附加。 Wireshark 捕获 telnet 帧

我们可以通过下面的 iptables 规则为第一个 SYN 请求发送 RST 吗?

TCP sequence:
SYN -->
    <-- RST

有人可以在这方面提供帮助吗?提前谢谢了。

答案1

有趣的。

我刚刚测试过,在我的系统上它按预期工作。我在本地服务器上使用端口 25 测试了它,该服务器的使用率不高:

iptables-保存
# 由 iptables-save v1.4.12 于 2014 年 8 月 22 日星期五 14:34:49 生成
*自然
:预路由接受 [12:1729]
:输入接受 [12:1729]
:输出接受 [110:7484]
:后路由接受 [110:7484]
-A PREROUTING -p tcp -m tcp --dport 225 -j DNAT --to-destination :25
犯罪
# 于 2014 年 8 月 22 日星期五 14:34:49 完成
# 由 iptables-save v1.4.12 于 2014 年 8 月 22 日星期五 14:34:49 生成
*筛选
:输入接受 [888:1187686]
:转发接受 [0:0]
:输出接受 [883:134630]
-A 输入-p tcp -m tcp --dport 25 -j REJECT --reject-with tcp-reset
犯罪
# 于 2014 年 8 月 22 日星期五 14:34:49 完成

远程登录 XXX.XXX.XXX.XXX 225
正在尝试 XXX.XXX.XXX.XXX...
telnet:无法连接到远程主机:连接被拒绝

我没有建立连接,然后像您一样重置。

我正在使用 Linux 3.2.0-67 和 iptables v1.4.12

tcpdump -vvvv tcp 端口 225
tcpdump:在 eth0 上监听,链接类型 EN10MB(以太网),捕获大小 65535 字节
14:48:29.178049 IP(tos 0x10、ttl 64、id 50487、偏移量 0、标志 [DF]、proto TCP(6)、长度 60)
    xx.39444 > xxxxx.225:标志 [S]、cksum 0x2c0d(正确)、seq 47731887、win 14600、选项 [mss 1460、sackOK、TS val 665686424 ecr 0、nop、wscale 5]、长度 0
14:48:29.178089 IP(tos 0x0、ttl 64、id 0、偏移量 0、标志 [DF]、proto TCP(6)、长度 40)
    xxxxx.225 > xx.39444:标志 [R.],cksum 0x3745(不正确 -> 0x8628),seq 0,ack 47731888,win 0,长度 0

相关内容