我想阻止访问我的服务器端口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
应该工作。