Docker가 사용하는 포트를 차단하는 방법은 무엇입니까?

Docker가 사용하는 포트를 차단하는 방법은 무엇입니까?

저는 포트 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는 도커 포트를 공개적으로 차단하지 않습니다. /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

관련 정보