我正在端口 8080 上运行 wikijs,并使用 apache 运行反向代理。使用 cloudflare argo 隧道,只有特定的人可以登录 wikijs。
因此,如果用户尝试浏览 http://publicip:80 (apache 使用的端口),它将重定向到端口 8080,并且会弹出 cloudflare 主页。
然而,当用户尝试直接访问 http://publicip:8080 (wikijs 使用的端口)时,它仍然会通过。尝试了 ufw,但端口 80 不被允许,它可以工作。但不适用于8080端口
答案1
我在这里找到了修复方法https://github.com/chaifeng/ufw-docker;当前的 ufw 不会公开阻止 docker 端口。 /etc/ufw/after.rules 中需要进行更改。
修改UFW配置文件/etc/ufw/after.rules,在文件末尾添加以下规则:
# BEGIN UFW AND DOCKER
*filter
:ufw-user-forward - [0:0]
:ufw-docker-logging-deny - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j ufw-user-forward
-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16
-A DOCKER-USER -p udp -m udp --sport 53 --dport 1024:65535 -j RETURN
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 172.16.0.0/12
-A DOCKER-USER -j RETURN
-A ufw-docker-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW DOCKER BLOCK] "
-A ufw-docker-logging-deny -j DROP
COMMIT
# END UFW AND DOCKER