我正在嘗試使用 docker compose 部署一個包含 mysql 伺服器的系統。伺服器在同一網路中的 docker 容器之間共用。
我需要從網路中的特定外部伺服器存取 mysql 資料庫,因此我在 docker compose 檔案中發布了 mysql 連接埠(3306)。
但出於安全考慮,我想阻止任何其他嘗試存取此連接埠的 IP。
我嘗試了許多 iptables 規則,所有這些規則要么阻止 docker-compose 中的容器,要么允許其他伺服器存取該連接埠。
ps我都會更改mysql伺服器內的使用者權限,但是阻塞連接埠是我們要做的第一件事。
答案1
您可以在 DOCKER-USER 表中設定 iptables 條目。這是在 docker 之外完成的。例如,如果您擔心 eth0 介面上來自 10.0.0.0/24 以外的任何網路向連接埠 3306 發出的請求:
iptables -I DOCKER-USER -i eth0 ! -s 10.0.0.0/24 -p tcp \
-m conntrack --ctorigdstport 3306 -j DROP
請注意,conntrack
需要 conn track 原始目標連接埠而不是普通的 tcp 連接埠規則來處理 NAT 規則和連接埠對映。