Ubuntu 防火墙:如何丢弃来自某个 IP 地址的所有 TCP 回复数据包

Ubuntu 防火墙:如何丢弃来自某个 IP 地址的所有 TCP 回复数据包

我有两个 Ubuntu 盒子,A 和 B。

A 正在启动与 B 的 TCP 连接。

我希望 A 的 TCP SYN 数据包能够到达 B,但是当 B 的 SYN/ACK 回复数据包返回到 A 时,我希望 A 的防火墙丢弃它。

实现这一目标最简单的方法是什么?

答案1

以下 iptables 规则将删除来自主机 A 的 ACK:

iptables -A INPUT -s ip.of.host.a/32 --protocol tcp --tcp-flags ACK ACK -j DROP

--tcp-flags在手册页中有记录iptables-扩展

[!] --tcp-flags mask comp 当 TCP 标志符合指定条件时匹配。第一个参数 mask 是我们应该检查的标志,以逗号分隔的列表形式写出,第二个参数 comp 是必须设置的标志的逗号分隔列表。标志包括:SYN ACK FIN RST URG PSH ALL NONE。因此,命令

 iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN

will only match packets with the SYN flag set, and the ACK, FIN and RST flags unset.

相关内容