UFW가 도커를 사용하여 노출 된 포트를 차단하지 않는 이유는 무엇입니까?

내 ufw에 몇 가지 규칙을 설정했지만 아무것도 차단하지 않는 것 같습니다. 현재 상태입니다.

~# ufw status verbose

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
80                         ALLOW IN    Anywhere
27015:27115/udp            ALLOW IN    Anywhere
27015:27115/tcp            ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)
80 (v6)                    ALLOW IN    Anywhere (v6)
27015:27115/udp (v6)       ALLOW IN    Anywhere (v6)
27015:27115/tcp (v6)       ALLOW IN    Anywhere (v6)

보시다시피 기본적으로 들어오는 연결을 거부하고 특정 포트만 허용합니다. 그러나 여전히 포트 8083에 새 서비스를 설정했으며 외부에서 액세스 할 수 있습니다. 왜 그래야만하지?

도커 컨테이너를 사용 하여이 새로운 서비스를 실행했습니다.



답변

마치

Docker는 IPTables로 직접 변조합니다.

. Docker 데몬에 –iptables = false를 추가하여이 동작을 무시할 수 있습니다.

/ etc / default / docker를 편집 하고 DOCKER_OPTS 줄의 주석을 해제 하십시오 :

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false"

저자는 다음과 같은 결론을 내렸다.

  • UFW는 iptables에 실제 상태를 알려주지 않습니다 (충격이 아니라 여전히).
  • 공개하고 싶지 않은 Docker에서 -p 옵션 (또는 -P)을 사용하지 마십시오.
  • 루프백 인터페이스 또는 내부 IP 중 하나에서만 바인딩하십시오.