LINUX.ORG.RU

iptables docker закрыть порт

 , , ,


1

1

есть открытые порты

netstat -nlpt
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      25324/redis-server
tcp6       0      0 :::6479                 :::*                    LISTEN      11829/docker-proxy
tcp6       0      0 :::9400                 :::*                    LISTEN      25423/docker-proxy
tcp6       0      0 :::9500                 :::*                    LISTEN      25409/docker-proxy

через iptables разрешил доступ к портам 6379, 6479, 9400 и 9500 только определенным серверам и заблокировал доступы всем другим

-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 1.1.1.1/32 -m comment --comment "serv1" -j ACCEPT
-A INPUT -s 2.2.2.2./32 -m comment --comment "serv2" -j ACCEPT
-A INPUT -s 3.3.3.3/32 -m comment --comment "serv3" -j ACCEPT
-A INPUT -s 1.2.3.4/26 -m comment --comment "serv4" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 6379 -j DROP
-A INPUT -p tcp -m tcp --dport 6479 -j DROP
-A INPUT -p tcp -m tcp --dport 9400 -j DROP
-A INPUT -p tcp -m tcp --dport 9500 -j DROP
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o br-0f75263b9b1b -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-0f75263b9b1b -j DOCKER
-A FORWARD -i br-0f75263b9b1b ! -o br-0f75263b9b1b -j ACCEPT
-A FORWARD -i br-0f75263b9b1b -o br-0f75263b9b1b -j ACCEPT
-A FORWARD -o br-b66de0109fd4 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-b66de0109fd4 -j DOCKER
-A FORWARD -i br-b66de0109fd4 ! -o br-b66de0109fd4 -j ACCEPT
-A FORWARD -i br-b66de0109fd4 -o br-b66de0109fd4 -j ACCEPT
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-b66de0109fd4 -o br-b66de0109fd4 -p tcp -m tcp --dport 9300 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-b66de0109fd4 -o br-b66de0109fd4 -p tcp -m tcp --dport 9200 -j ACCEPT
-A DOCKER -d 172.23.0.2/32 ! -i br-0f75263b9b1b -o br-0f75263b9b1b -p tcp -m tcp --dport 6379 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i br-0f75263b9b1b ! -o br-0f75263b9b1b -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-b66de0109fd4 ! -o br-b66de0109fd4 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o br-0f75263b9b1b -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-b66de0109fd4 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN

таблица nat

-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.23.0.0/16 ! -o br-0f75263b9b1b -j MASQUERADE
-A POSTROUTING -s 172.19.0.0/16 ! -o br-b66de0109fd4 -j MASQUERADE
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 9300 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 9200 -j MASQUERADE
-A POSTROUTING -s 172.23.0.2/32 -d 172.23.0.2/32 -p tcp -m tcp --dport 6379 -j MASQUERADE
-A DOCKER -i br-0f75263b9b1b -j RETURN
-A DOCKER -i br-b66de0109fd4 -j RETURN
-A DOCKER -i docker0 -j RETURN
-A DOCKER ! -i br-b66de0109fd4 -p tcp -m tcp --dport 9500 -j DNAT --to-destination 172.19.0.2:9300
-A DOCKER ! -i br-b66de0109fd4 -p tcp -m tcp --dport 9400 -j DNAT --to-destination 172.19.0.2:9200
-A DOCKER ! -i br-0f75263b9b1b -p tcp -m tcp --dport 6479 -j DNAT --to-destination 172.23.0.2:6379

но что-то не срабатывают правила для 6479, 9400 и 9500, срабатывает только для 6379
не доходит до цепочки filter?



Последнее исправление: Garcia (всего исправлений: 1)
Ответ на: комментарий от funky

конечно нет :)

# Generated by iptables-save v1.6.0 on Tue Jun  4 14:54:11 2019
*nat
:PREROUTING ACCEPT [849:50752]
:INPUT ACCEPT [849:50752]
:OUTPUT ACCEPT [41:2492]
:POSTROUTING ACCEPT [1279:76772]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.23.0.0/16 ! -o br-0f75263b9b1b -j MASQUERADE
-A POSTROUTING -s 172.19.0.0/16 ! -o br-b66de0109fd4 -j MASQUERADE
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 9300 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 9200 -j MASQUERADE
-A POSTROUTING -s 172.23.0.2/32 -d 172.23.0.2/32 -p tcp -m tcp --dport 6379 -j MASQUERADE
-A DOCKER -i br-0f75263b9b1b -j RETURN
-A DOCKER -i br-b66de0109fd4 -j RETURN
-A DOCKER -i docker0 -j RETURN
-A DOCKER ! -i br-b66de0109fd4 -p tcp -m tcp --dport 9500 -j DNAT --to-destination 172.19.0.2:9300
-A DOCKER ! -i br-b66de0109fd4 -p tcp -m tcp --dport 9400 -j DNAT --to-destination 172.19.0.2:9200
-A DOCKER ! -i br-0f75263b9b1b -p tcp -m tcp --dport 6479 -j DNAT --to-destination 172.23.0.2:6379
COMMIT
# Completed on Tue Jun  4 14:54:11 2019
# Generated by iptables-save v1.6.0 on Tue Jun  4 14:54:11 2019
*filter
:INPUT ACCEPT [515:30176]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1059259:1547871071]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 1.1.1.1/32 -m comment --comment "serv1" -j ACCEPT
-A INPUT -s 2.2.2.2./32 -m comment --comment "serv2" -j ACCEPT
-A INPUT -s 3.3.3.3/32 -m comment --comment "serv3" -j ACCEPT
-A INPUT -s 1.2.3.4/26 -m comment --comment "serv4" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 6379 -j DROP
-A INPUT -p tcp -m tcp --dport 6479 -j DROP
-A INPUT -p tcp -m tcp --dport 9400 -j DROP
-A INPUT -p tcp -m tcp --dport 9500 -j DROP
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o br-0f75263b9b1b -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-0f75263b9b1b -j DOCKER
-A FORWARD -i br-0f75263b9b1b ! -o br-0f75263b9b1b -j ACCEPT
-A FORWARD -i br-0f75263b9b1b -o br-0f75263b9b1b -j ACCEPT
-A FORWARD -o br-b66de0109fd4 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-b66de0109fd4 -j DOCKER
-A FORWARD -i br-b66de0109fd4 ! -o br-b66de0109fd4 -j ACCEPT
-A FORWARD -i br-b66de0109fd4 -o br-b66de0109fd4 -j ACCEPT
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-b66de0109fd4 -o br-b66de0109fd4 -p tcp -m tcp --dport 9300 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-b66de0109fd4 -o br-b66de0109fd4 -p tcp -m tcp --dport 9200 -j ACCEPT
-A DOCKER -d 172.23.0.2/32 ! -i br-0f75263b9b1b -o br-0f75263b9b1b -p tcp -m tcp --dport 6379 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i br-0f75263b9b1b ! -o br-0f75263b9b1b -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-b66de0109fd4 ! -o br-b66de0109fd4 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o br-0f75263b9b1b -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-b66de0109fd4 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
COMMIT
# Completed on Tue Jun  4 14:54:11 2019

Garcia
() автор топика
Ответ на: комментарий от Garcia

У Вас правила созданы какой-то автоконфигурилкой. В ней черт голову сломит, особенно без понимания, какие интерфейсы куда смотрят. Вот есть правила:

-A POSTROUTING -s 172.23.0.2/32 -d 172.23.0.2/32 -p tcp -m tcp --dport 6379 -j MASQUERADE
-A DOCKER ! -i br-0f75263b9b1b -p tcp -m tcp --dport 6479 -j DNAT --to-destination 172.23.0.2:6379
Добавьте такие же для остальных портов. Хотя вот это правило выглядит странно:
-A DOCKER ! -i br-0f75263b9b1b -p tcp -m tcp --dport 6479 -j DNAT --to-destination 172.23.0.2:6379

funky
()
Ответ на: комментарий от funky

это докер сам правила такие создал, пробрасываю порт 6479 в докер на 6379

Garcia
() автор топика
Ответ на: комментарий от funky

я могу добавить такие правила

-A DOCKER -s serv1 -p tcp -m tcp --dport 6479 -j DNAT --to-destination 172.23.0.2:6379
-A DOCKER -s serv2 -p tcp -m tcp --dport 6479 -j DNAT --to-destination 172.23.0.2:6379
...
и т.д. для 9400 и 9500
а
-A DOCKER ! -i br-0f75263b9b1b -p tcp -m tcp --dport 6479 -j DNAT --to-destination 172.23.0.2:6379
убрать

но если я контейнер перезагружу, то айпи у него поменяется и правила уже будут не актуальные, каждый раз руками прописывать правила как-то не очень хочется

Garcia
() автор топика
Ответ на: комментарий от deadNightTiger

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

*nat
:PREROUTING ACCEPT [56839:3436233]
:INPUT ACCEPT [54731:3316960]
:OUTPUT ACCEPT [4233:254940]
:POSTROUTING ACCEPT [73492:4410480]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.23.0.0/16 ! -o br-0f75263b9b1b -j MASQUERADE
-A POSTROUTING -s 172.19.0.0/16 ! -o br-b66de0109fd4 -j MASQUERADE
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 9300 -j MASQUERADE
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 9200 -j MASQUERADE
-A POSTROUTING -s 172.23.0.2/32 -d 172.23.0.2/32 -p tcp -m tcp --dport 6379 -j MASQUERADE
-A DOCKER -i br-0f75263b9b1b -j RETURN
-A DOCKER -i br-b66de0109fd4 -j RETURN
-A DOCKER -i docker0 -j RETURN
-A DOCKER -s serv1/32 ! -i br-b66de0109fd4 -p tcp -m tcp --dport 9500 -j DNAT --to-destination 172.19.0.2:9300
-A DOCKER -s serv1/32 ! -i br-b66de0109fd4 -p tcp -m tcp --dport 9400 -j DNAT --to-destination 172.19.0.2:9200
-A DOCKER -s serv1/32 ! -i br-b66de0109fd4 -p tcp -m tcp --dport 6479 -j DNAT --to-destination 172.23.0.2:6379
COMMIT
# Completed on Wed Jun  5 00:36:32 2019
# Generated by iptables-save v1.6.0 on Wed Jun  5 00:36:32 2019
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [41567727:80319821841]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
:WHITELIST - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -j WHITELIST
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -j DROP
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o br-0f75263b9b1b -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-0f75263b9b1b -j DOCKER
-A FORWARD -i br-0f75263b9b1b ! -o br-0f75263b9b1b -j ACCEPT
-A FORWARD -i br-0f75263b9b1b -o br-0f75263b9b1b -j ACCEPT
-A FORWARD -o br-b66de0109fd4 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-b66de0109fd4 -j DOCKER
-A FORWARD -i br-b66de0109fd4 ! -o br-b66de0109fd4 -j ACCEPT
-A FORWARD -i br-b66de0109fd4 -o br-b66de0109fd4 -j ACCEPT
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-b66de0109fd4 -o br-b66de0109fd4 -p tcp -m tcp --dport 9300 -j ACCEPT
-A DOCKER -d 172.19.0.2/32 ! -i br-b66de0109fd4 -o br-b66de0109fd4 -p tcp -m tcp --dport 9200 -j ACCEPT
-A DOCKER -d 172.23.0.2/32 ! -i br-0f75263b9b1b -o br-0f75263b9b1b -p tcp -m tcp --dport 6379 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i br-0f75263b9b1b ! -o br-0f75263b9b1b -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-b66de0109fd4 ! -o br-b66de0109fd4 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o br-0f75263b9b1b -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-b66de0109fd4 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j WHITELIST
-A DOCKER-USER -j RETURN
-A WHITELIST -s 172.0.0.0/8 -m comment --comment "docker network" -j ACCEPT
-A WHITELIST -s 192.168.0.0/16 -m comment --comment "docker network" -j ACCEPT
-A WHITELIST -s serv1/32 -m comment --comment serv1 -j ACCEPT
COMMIT
как все таки это можно поправить?

Garcia
() автор топика
Ответ на: комментарий от Garcia

но если я контейнер перезагружу, то айпи у него поменяется и правила уже будут не актуальные, каждый раз руками прописывать правила как-то не очень хочется

В таком случае, Ваша задача получить эти новые IP после перезагрузки контейнера и перезапустить правила iptables с новыми адресами. Либо продумать, как можно добиться Вашей цели без использования IP адресов, а только используя интерфейсы, порты и возможно метки (mark).

funky
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.