我想阻止对服务器上端口6379的访问,但是我仍然想在内部连接到它。Redis服务器应用程序在该端口上运行,我只想在本地连接(127.0.0.1)。我怎样才能做到这一点?
我想阻止对服务器上端口6379的访问,但是我仍然想在内部连接到它。Redis服务器应用程序在该端口上运行,我只想在本地连接(127.0.0.1)。我怎样才能做到这一点?
Answers:
为此,您需要确保正确配置了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
好吧,我建议使用“简单的防火墙”(ufw),这也是规范建议的。对于偶尔的端口锁定任务而言,读写iptables太复杂了。
就像是
iptables -A INPUT -s 0.0.0.0 -i eth0 --protocol tcp --dport 6379 -j DROP
应该管用。