открыть iptables в сети docker-compose и на одном внешнем сервере

открыть iptables в сети docker-compose и на одном внешнем сервере

Я пытаюсь развернуть систему с помощью docker compose, которая содержит сервер mysql. Сервер используется совместно контейнерами docker в одной сети.

Мне нужно получить доступ к базе данных MySQL с определенного внешнего сервера в нашей сети, поэтому я опубликовал порт MySQL (3306) в файле Docker Compose.

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

Я перепробовал много правил iptables, и все они либо блокировали контейнеры в docker-compose, либо разрешали другим серверам доступ к порту.

ps Я изменю права доступа пользователей на сервере MySQL, но первое, что нам нужно сделать, — это заблокировать порт.

решение1

Вы можете настроить записи iptables в таблице DOCKER-USER. Это делается вне docker. Например, если вас беспокоят запросы на интерфейсе eth0 к порту 3306 из любой сети, кроме 10.0.0.0/24:

iptables -I DOCKER-USER -i eth0 ! -s 10.0.0.0/24 -p tcp \
  -m conntrack --ctorigdstport 3306 -j DROP

Обратите внимание, что conntrackдля обработки правил NAT и сопоставления портов требуются исходный порт назначения conn track, а не обычное правило порта TCP.

Связанный контент