Docker и выборочное открытие порта

12
S
На сайте с 23.05.2004
Offline
316
735

centos 7, docker, iptables.

Есть контейнер, который должен смотреть наружу. Запустив его с -p XXX:XXX контейнер доступен всем. А необходимо сделать так, что бы его могли видеть только определенные IP.

Второй вечер голову ломаю. Все решения что находил, нифига не работают или обрезаны на полуслове.

Сейчас правило выглядит так, для примера указан IP 8.8.8.8 как разрешенный


-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -s 8.8.8.8/32 -p tcp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j DOCKER-ISOLATION
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o br-3de5ee928d6e -j DOCKER
-A FORWARD -o br-3de5ee928d6e -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i br-3de5ee928d6e ! -o br-3de5ee928d6e -j ACCEPT
-A FORWARD -i br-3de5ee928d6e -o br-3de5ee928d6e -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A DOCKER -d 172.19.0.4/32 ! -i br-3de5ee928d6e -o br-3de5ee928d6e -p tcp -m tcp --dport 6880 -j ACCEPT
-A DOCKER-ISOLATION -i br-3de5ee928d6e -o docker0 -j DROP
-A DOCKER-ISOLATION -i docker0 -o br-3de5ee928d6e -j DROP
-A DOCKER-ISOLATION -j RETURN
Это просто подпись.
lonelywoolf
На сайте с 23.12.2013
Offline
151
#1

Сначала разрешить нужные IP, остальное дропать. Тут нет никаких проблем.

Платный и бесплатный хостинг с защитой от DDoS (http://aquinas.su)
S
На сайте с 23.05.2004
Offline
316
#2
lonelywoolf:
Сначала разрешить нужные IP, остальное дропать. Тут нет никаких проблем.

Капитан очевидность ? При пробрасывание порта докер добавляет свое правило. Как все это выглядит - приведено выше.

lonelywoolf
На сайте с 23.12.2013
Offline
151
#3

Stek, Ну так смените policy на DROP и откройте нужные порты для нужных IP.

S
На сайте с 23.05.2004
Offline
316
#4
lonelywoolf:
Ну так смените policy на DROP

Каким образом ?

lonelywoolf
На сайте с 23.12.2013
Offline
151
#5
S
На сайте с 23.05.2004
Offline
316
#6

Еще раз - докер дописывает свои правила. Как только запускается контейнер - докет в iptables допишет свои правила и они будут уже в приоритете над тем, что было.

lonelywoolf
На сайте с 23.12.2013
Offline
151
#7

Stek, Докер ДОБАВЛЯЕТ свои правила, а не заменяет их. Хотя чего это я. Прочитал доку за вас.

https://docs.docker.com/network/iptables/

S
На сайте с 23.05.2004
Offline
316
#8

Там ограничения на подключения внутри сервера. Мне же надо совершенно другое, мне уже открытый докером порт надо залимитировать на подключения снаружи.

В общем если вы такое не делали, то не надо меня лишний раз путать. Тыкать в мануалы и умно высказываться "закрой всем, а потом открой" - я тоже умею.

lonelywoolf:
Докер ДОБАВЛЯЕТ свои правила, а не заменяет их.

Советую еще раз внимательно перечитать мой текст, там про замену нет ни слова.

M
На сайте с 17.09.2016
Offline
123
#9

Stek, Возможно не так понял)

Но как вариант - ограничить доступ в iptables ДО filter

Например в таблице mangle

Тогда трафик будет обрубываться ещё до того, как дойдёт до FORWARD filter

S
На сайте с 23.05.2004
Offline
316
#10
Mobiaaa:
Но как вариант - ограничить доступ в iptables ДО filter
Например в таблице mangle
Тогда трафик будет обрубываться ещё до того, как дойдёт до FORWARD filter

Хм, надо почитать, что это такое. Если сработает - отлично.

Пока находил только решения, что народ полностью запрещает докеру использовать iptables и все необходимые для него правила прописывает вручную. Или после полного старта контейнера запускают поверх еще правила из скрипта. Но это как то уж очень не правильно выглядит.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий