我怎样才能在 ubuntu 上阻止端口 6379 进行外部流量?

我怎样才能在 ubuntu 上阻止端口 6379 进行外部流量?

我想阻止对我服务器上的端口 6379 的访问,但我仍然想在内部连接到它。 redis-server 应用程序在该端口上运行,我只想在本地连接到它(127.0.0.1)。我该怎么做?

答案1

为此,您需要确保您的 IPTables 规则配置正确。Ubuntu 通常默认将其服务器完全开放,这就是为什么我仍然不建议将其用作服务器,除非您已经非常清楚如何正确执行此操作。

我想象你的iptables -L -nv样子是这样的,是吗?

# iptables -L -nv
Chain INPUT (policy ACCEPT 4M packets, 9M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 8M packets, 4M bytes)
 pkts bytes target     prot opt in     out     source               destination

它是空的,而且是敞开的。Ubuntu IPTables HowTo 可能会对此提供很大帮助。(https://help.ubuntu.com/community/IptablesHowTo

我推荐类似这样的方法,允许在任何接口上使用 SSH,并允许在任何接口上使用 tcp 6379,但不允许使用您不想要的接口:

*filter
:INPUT DROP [92:16679]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [203:36556]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -p tcp -m tcp --dport 6379 -j ACCEPT
-A INPUT -i lo -p udp -m udp --dport 6379 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
COMMIT

然后将此文件保存在 /etc/iptables.rules 中。

显然,应该添加您特别想要打开的任何其他端口。

注意:为了清晰起见,我添加了特定的 6379 行。COMMIT 之前的底部 ACCEPT 实际上允许这样做,因为 Linux 系统上必须允许所有环回连接才能正常运行。

您还需要将规则放入 /etc/network/interfaces 文件中,以确保在接口启动时添加它们,而不是在引导过程的稍后阶段添加。建议添加如下内容:

auto eth0
iface eth0 inet dhcp
  pre-up iptables-restore < /etc/iptables.rules

编辑:要最初加载此配置,您需要运行上面引用的 iptables-restore 命令:

iptables-restore < /etc/iptables.rules

答案2

好吧,我建议使用“简单防火墙”(ufw),这也是 canonical 推荐的。对于偶尔的端口锁定任务来说,读写 iptables 太复杂了。

看这里: https://wiki.ubuntu.com/UncomplicatedFirewall

答案3

就像是

iptables -A INPUT -s 0.0.0.0  -i eth0 --protocol tcp --dport 6379 -j DROP

应该管用。

答案4

对于较新版本的 redis,你可以直接使用bind 127.0.0.1inredis.conf来执行此操作,而无需额外的 iptables 配置

文章

相关内容