私は、MySQL サーバーを含む docker compose を使用してシステムをデプロイしようとしています。サーバーは同じネットワーク内の docker コンテナー間で共有されます。
ネットワーク内の特定の外部サーバーから MySQL データベースにアクセスする必要があるため、Docker Compose ファイル内で MySQL ポート (3306) を公開しました。
しかし、セキュリティ上の懸念から、このポートにアクセスしようとする他の IP をブロックしたいと思います。
多くの iptables ルールを試しましたが、それらはすべて docker-compose 内のコンテナをブロックするか、他のサーバーがポートにアクセスすることを許可していました。
ps: MySQL サーバー内のユーザー権限をすべて変更しますが、最初に行うことはポートをブロックすることです。
答え1
DOCKER-USER テーブルで iptables エントリを設定できます。これは docker の外部で行われます。たとえば、10.0.0.0/24 以外のネットワークからポート 3306 への eth0 インターフェイスへのリクエストが心配な場合は、次のようにします。
iptables -I DOCKER-USER -i eth0 ! -s 10.0.0.0/24 -p tcp \
-m conntrack --ctorigdstport 3306 -j DROP
conntrack
NAT ルールとポート マッピングを処理するには、通常の TCP ポート ルールではなく、conn トラックの元の宛先ポートが必要であることに注意してください。