可以从互联网访问自托管的 Portainer 网站,尝试锁定服务器,但没有成功

可以从互联网访问自托管的 Portainer 网站,尝试锁定服务器,但没有成功

我是 Docker 和 Portainer 的新手,我正尝试将其锁定,以防止在不需要时进行公共访问。

我的设置:

Windows 2022 Server running Hyper-V (host)
Ubuntu 22.04 Workstation (virtual machine)
Docker (latest)
Portainer (port 9000)
MySQL (latest)

我正在使用运行公共 IP 的 Ubuntu Workstation 22.04。我通过 ssh 登录并安装了 Docker、Portainer 和 MySQL。我正在测试 portainer,看看我是否可以从我的计算机外部访问它,显然我可以在任何位置访问它。

Ubuntu Ip: *.*.*.219
My Ip:  *.*.*.84
Portainer Url:  http://*.*.*.219:9000

我检查了 ufw,没有发现任何问题。我甚至直接封锁了 9000 端口,但仍然可以访问 Portainer 网站。

# ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] Anywhere                   ALLOW IN    *.*.*.84            
[ 2] 80                         ALLOW IN    Anywhere                  
[ 3] 443                        ALLOW IN    Anywhere                  
[ 4] 9000                       ALLOW IN    *.*.*.84            
[ 5] 9000                       DENY IN     Anywhere                  
[ 6] 9000 (v6)                  DENY IN     Anywhere (v6) 

我按照他们网站上的说明安装了 Portainer,没有遇到任何问题。我可以从互联网上的任何计算机访问 Portainer。我需要将其隔离到我的 IP。

我需要做什么才能知道为什么我的防火墙无法正常工作?

附加信息

iptables-保存

iptables -L -nv --行号

iptables -L -t nat -nv --行号

答案1

ufw 默认不显示 iptables 规则。我建议您始终直接使用 iptables,而不是通过 ufw。您可以执行以下操作:

iptables -S

iptables -t nat -S 

并发布减去任何识别地址的输出。

以下是基于标准安装以及锁定面向外部的服务器所需的规则。一旦我掌握了您的设置信息,我就可以调整所需的内容。

我假设 docker 已为您的容器指定了 ip 172.17.42.1,请根据您的设置调整地址。

将以下内容保存到文件中:例如 iprules.v4

iptables -I INPUT -s *.*.*.84 -j ACCEPT
iptables -t nat -I PREROUTING -s *.*.*.84 -p tcp -m tcp --dport 9000 -j DNAT --to-destination 172.17.42.1:9000
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT  *** this is just incase you need ssh from somewhere, and also as a backup until you confirmed the rules are right as you are accessing it remotely. 
iptables -P INPUT drop

然后运行:

 iptables-restore < iprules.v4

然后我将禁用 ufw,否则如果重新加载规则,ufw 可能会覆盖 iptables。

相关内容