iptables 阻止 localhost 访问 redis

iptables 阻止 localhost 访问 redis

我有以下 iptables 规则:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s MY_IP_ADDRESS/32 -p tcp -m tcp --dport 6379 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -i lo -p tcp -m tcp --dport 6379 -j ACCEPT
-A INPUT -j DROP
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT

正如您所看到的,我可以从任何地方 ssh 进入我的服务器,并且我可以从我的本地 IP (MY_IP_ADDRESS) 和 localhost 访问我的 redis 数据库。

从我的电脑本身可以redis-cli -h xx.xx.xx.xx -p 6379正常工作。但在服务器本身上,我无法从redis-cli.

当我删除以下 iptables 规则时,它再次起作用:

-A INPUT -j DROP

如何允许 localhost 连接到我的 redis 服务器?

答案1

您可以为每个端口添加一条规则:

-A INPUT -i lo -p tcp --dport some-port -j ACCEPT
-A INPUT -i lo -p tcp --dport another-port -j ACCEPT

或者为来自本地主机的所有流量添加一个通用的:

-A INPUT -i lo -j ACCEPT

作为旁注,如果您设置为策略,则可以删除-A INPUT DROP最后一条规则:INPUTDROP-P INPUT DROP

更新:作为另一个旁注,实际上,如果您有-P OUTPUT ACCEPT,则无需添加任何ACCEPT规则OUTPUT(例如,您可以为 添加规则DROP,但不需要,ACCEPT因为这就是任何流量最终会发生的情况)通过OUTPUT这不匹配任何规则)。

相关内容