题 如何阻止端口6379在ubuntu上进行外部流量?


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


7
2018-04-21 15:42






答案:


为此,您需要确保正确配置了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

10
2018-04-21 16:05



我假设这会打开整个网络的端口6379吗?我应该怎样做才能使这个仅对127.0.0.1开放? - Steve Rodrigue
不,因为默认规则是DRO​​P。如果它没有明确的ACCEPT规则,则它被旁边的默认DROP阻塞:顶部的INPUT。 - Magellan
就个人而言,我认为默认的ACCEPT规则在“服务器”部署中只是犯罪。但这并不奇怪,因为Ubuntu首先是桌面发行版。 - Magellan
好吧,我刚刚完成了你所要求的,但似乎我仍然可以从外面连接到端口6379。我应该重启服务器还是什么? - Steve Rodrigue
是的,但我并不太关心计数器,这对我有用。随意编辑答案以适应更严格的过程。 - Magellan


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

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


3
2017-10-16 04:39



较旧版本的UFW无法将规则应用于选定的端口,无论是全部还是全部。专业的系统管理员应养成了解他们的iptables设置以及链如何工作的习惯。 - Magellan


就像是

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

应该管用。


2
2018-04-21 15:56



这给了我这个错误:iptables v1.4.4:未知选项`--dport' - Steve Rodrigue
你可以用新命令重试吗?我添加了--protocol和-i部分(适应你的界面),它现在应该可以工作了。 - Kedare
我对这个建议的问题是它不会在重新启动时保存,除非运行其他必需的命令并且它假定只有1个非环回接口。 - Magellan
我建议使用否定运算符:-i!罗 - Magellan
阿德里安:你的意思是,如果我重启服务器,那个修改将不再有效? - Steve Rodrigue