仅允许单个 IP 并阻止所有 IP IPTABLES

仅允许单个 IP 并阻止所有 IP IPTABLES

如何在 iptables 中仅允许某些 IP 地址并阻止所有其他 IP 地址连接?

为了允许我输入以下命令

iptables -A INPUT -s 192.168.1.1 -j ACCEPT

我应该怎么做才能阻止?

答案1

需要记住的是,防火墙规则是按照列出的顺序进行检查的。当触发允许或禁止数据包或连接的规则时,内核将停止处理链。

假设您当前的防火墙仅具有该单个规则(例如使用iptables-save或检查iptables -L -v -n --line-numbers):

您需要附加第二条规则,指示防火墙如何处理与第一条规则不匹配的流量。

没有更具体的匹配规则的规则将匹配任何内容以及非常短的内容:

iptables -A -j REJECT 

就足够了。

检查一下iptables-save,你应该会看到一个类似于这样的最小防火墙:

[root@host ~]# iptables-save
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 192.168.1.1 -j ACCEPT
-A INPUT -j REJECT 
COMMIT

当触发允许或禁止数据包或连接的规则时,内核将停止处理链。

附录:当没有触发任何规则时政策在链上设置的策略会被应用。因此,除了在当前配置的末尾添加阻止所有内容的规则外,您还可以设置/更改输入链上的策略来实现相同的目的:

iptables -P INPUT DROP

[root@host ~]# iptables-save
*filter
:INPUT DROP[0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 192.168.1.1 -j ACCEPT
COMMIT

相关内容