使用 iptables 阻止来自本地网络的连接

使用 iptables 阻止来自本地网络的连接

我的网络DHCP 地址范围192.168.0.100 至 192.168.0.199而且它子网掩码255.255.255.0

我想使用 iptables 删除这个 IP 范围内的任何输入(如果可能的话,也删除输出,因为我不想与我的网络中的其他设备建立任何类型的连接),然后阻止所有来自(和传出到)我的本地网络的传入连接。

我想我知道该怎么做,但我还有一些未完成的东西需要学习......

比如,我见过有人说要设置规则iptables -A INPUT -s 192.168.0.100/24 -j DROP,但我不知道它是否适合我的网络,因为我不知道这个规则中的“/24”代表什么,而且我见过人们在其他情况下使用“” /16ou“ /32”,所以我对这一切感到有点困惑。

在一些答案和主题中,我也看到有人谈论这条规则: iptables -A INPUT -m iprange --src-range 192.168.0.100-192.168.0.199 -j DROP,但这些主题已经很旧了,我不知道这是否是阻止我询问的最佳选择。

因此,由于我感到困惑,我在这里请求一些网络/iptables/Linux 更高级的人士来更好地向我解释这一点,并告诉我应该使用什么规则来做到这一点。

编辑#1:

我目前iptables -P DROP已经输入输出向前链,并有以下两个规则:

iptables -I INPUT -m state --state ESTABLISHED -j ACCEPT

iptables -I OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT

关于最后一个,我是否应该改变“-m 状态 --状态“ 到 ”-m 连接跟踪——ctstate“或者两者是同一件事?

答案1

因为我不知道这个规则中的“/24”代表什么,而且我见过有人在其他情况下使用“/16”或“/32”,所以我对这一切感到有点困惑。

它是以“网络掩码”表示法中的斜线表示法表示的网络大小/24 = 255.255.255.0。(它指定子网可以有多大 - 子网中的计算机将具有相同的 IP 地址前缀)

您想要实现的目标(如果我理解正确的话)是阻止从 DHCP 服务器获取 IP 地址的其他设备的传入流量。

 iptables -A INPUT -m iprange --src-range 192.168.0.100-192.168.0.199 -j DROP

-A表示附加,因此请确保您不允许在此规则之前应丢弃的连接(或指定-I INPUT <number_of_desired_position>为“插入”)

-m代表“匹配”——您希望使用哪个模块(因为您希望使用 IP 范围,所以会加载一个特殊模块并为您“匹配”地址——您可以以同样的方式创建一个有状态的防火墙)

现在您允许任何其他连接(如果您有宽松的政策,您可以跳过)

iptables -A INPUT -j ACCEPT

现在传出的流量,因为你正在丢弃传入的连接,所以你将无法与范围内的任何其他机器建立连接,但你的数据包仍然可以尝试连接(你的机器可以尝试启动连接但由于没有来自远程机器的应答而永远无法建立连接 - 至少对于 TCP 来说是正确的)

因此你应该可以接受它。

但是如果您希望能够连接到子网中的其他机器(例如,连接到指定范围内的 http 服务器),您可以通过添加以下内容来实现:

iptables -I INPUT -m state --state ESTABLISHED -j ACCEPT

用于--state ESTABLISHED启用有状态的连接(您尝试启动的连接)

相关内容