Я пытаюсь развернуть систему с помощью 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.