如何在 ubuntu 上阻止端口 6379 的外部流量?

Ste*_*gue 9 ubuntu port redis

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

Mag*_*lan 11

为此,您需要确保您的 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
Run Code Online (Sandbox Code Playgroud)

它是空的,而且是敞开的。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
Run Code Online (Sandbox Code Playgroud)

然后将该文件保存在 /etc/iptables.rules 中。

显然,应该添加您特别想要打开的任何其他端口。

注意:为了清楚起见,我添加了特定的 6379 行。COMMIT 之前的底部 ACCEPT 实际上允许这样做,因为在 Linux 系统上必须允许所有环回连接才能正确操作。

您还需要将规则放在 /etc/network/interfaces 文件中,以确保在界面出现时添加它们,而不是在引导过程的后期添加。建议添加这样的东西:

auto eth0
iface eth0 inet dhcp
  pre-up iptables-restore < /etc/iptables.rules
Run Code Online (Sandbox Code Playgroud)

编辑:要最初加载此配置,您需要运行上面引用的 iptables-restore 命令:

iptables-restore < /etc/iptables.rules
Run Code Online (Sandbox Code Playgroud)