当前位置: 首页>>技术教程>>正文


如何阻止端口6379阻止Ubuntu上的外部通信?

, ,

问题描述

我想阻止对服务器上端口6379的访问,但是我仍然想在内部连接到它。 redis-server应用程序在该端口上运行,我只想在本地连接(127.0.0.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

次佳回答

好吧,我建议使用”uncomplicated firewall”(ufw),这也是规范建议的。对于偶尔的端口锁定任务而言,读写iptables太复杂了。

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10150.html,未经允许,请勿转载。