我想阻止访问我的服务器上的端口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