Как заблокировать сопоставленные докером порты с помощью брандмауэра снаружи хоста, не путая маршрутизацию докера внутри хоста?

2645
adapt-dev

У меня есть докер-контейнер, работающий на хосте с некоторым портом, сопоставленным с портом на хосте.

docker run -d -p 9009:9009 someserver

Я хочу, чтобы эта машина была отключена из Интернета, за исключением 80, 443 и 22.

Но я все еще хочу, чтобы процессы внутри хоста могли подключаться к 9009.

Я был немного шокирован, обнаружив, что докер, кажется, полностью обходит любые правила брандмауэра для отбрасывания пакетов.

Я попытался использовать Centos 7 с firewalld и iptables, чтобы заблокировать все, кроме 80, 443 и 22. Каким-то образом я все же смог получить доступ к контейнеру сопоставленного порта докера (порт 9009) снаружи хоста! Некоторые решения, которые я нашел, похоже, портят маршрутизацию полностью для docker - либо делают контейнеры Docker недоступными для доступа в Интернет, либо что-то еще.

Возможен ли мой сценарий?

Похоже, что это задает тот же вопрос: https://security.stackexchange.com/questions/66136/docker-port-forwarding-exposure

6
Не могли бы вы предоставить `netstat -an` и` iptables -L` с хоста во время работы докера? Paul 8 лет назад 0

1 ответ на вопрос

6
adapt-dev

It looks like I can bind my exposed container ports to localhost only.

docker run -d -p 127.0.0.1:9009:9009 someserver