我怎样才能阻止端口6379外部stream量在Ubuntu的?

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

为此,您需要确保您的IPTables规则configuration正确。 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文件中,以确保在接口启动时添加这些规则,而不是在启动过程中稍后进行添加。 build议添加这样的东西:

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

编辑:最初加载这个configuration,你需要运行上面引用的iptables-restore命令:

 iptables-restore < /etc/iptables.rules 

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

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

就像是

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

应该工作。