DockerコンテナからプライベートIPへの発信接続をブロックする

ジョンL.ジェグタニス

Dockerを使用してサーバー上で実行するサービスの一部は、プライベートIPアドレス(10.0.0.0/8、192.0.0.0/16、172.16.0.0/12、100.64.0.0/10)に接続しようとします。

この動作は正常ですが、サーバープロバイダーがこのトラフィックを検出し、アラートを送信します。

iptablesを使用した着信ではなく、発信トラフィックのみを停止したいと思います。

これが現在の設定です。

-A OUTPUT -d 192.168.0.0/16 -m owner --uid-owner `id -u dockeruser` -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -d 100.64.0.0/10 -m owner --uid-owner `id -u dockeruser` -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -d 172.16.0.0/12 -m owner --uid-owner `id -u dockeruser` -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -d 10.0.0.0/8 -m owner --uid-owner `id -u dockeruser` -j REJECT --reject-with icmp-port-unreachable

ただし、Dockerは次のルールを作成するため、これは機能しないようです。

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DOCKER-ISOLATION  all  --  anywhere             anywhere
DOCKER     all  --  anywhere             anywhere

サービスの場合:

Chain DOCKER (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:1234
ACCEPT     tcp  --  anywhere             172.17.0.4           tcp dpt:1234

最後に:

Chain DOCKER-ISOLATION (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

フィードバックをいただければ幸いです。

タンメイ

間違ったチェーンにルールを追加しています。Dockerコンテナから発信されたトラフィックは、FORWARDチェーンではfilterなく、テーブルチェーンを通過しますOUTPUTこれは、ホストコンピューターの観点からは、トラフィックはdocker0インターフェイスから着信し、ホストコンピューターは単にフォワーダーとして機能しているためです。

インバウンドトラフィックとアウトバウンドトラフィックを区別するには、-iおよび-oオプションを使用してインターフェイスを指定します。また、uidを使用して、トラフィックがDockerコンテナーからのものであるかどうかを判別することはできません(データはローカルで発信されていないため)。着信インターフェイスをチェックするだけで十分です。

したがって、次のルールをDOCKER-ISOLATIONチェーン(FORWARDチェーンから呼び出されているに追加します

-A DOCKER-ISOLATION -d 192.168.0.0/16 -i docker0 ! -o docker0 -j REJECT --reject-with icmp-port-unreachable
-A DOCKER-ISOLATION -d 100.64.0.0/10 -i docker0 ! -o docker0 -j REJECT --reject-with icmp-port-unreachable
-A DOCKER-ISOLATION -d 172.16.0.0/12 -i docker0 ! -o docker0 -j REJECT --reject-with icmp-port-unreachable
-A DOCKER-ISOLATION -d 10.0.0.0/8 -i docker0 ! -o docker0 -j REJECT --reject-with icmp-port-unreachable

dockerdocker0によって作成された仮想インターフェイスの名前に置き換えます。

(注:チェーンDOCKER-ISOLATIONが存在しない場合は、チェーンに直接追加してくださいFORWARD)。

またの出力を見てiptables -vLiptables -t nat -vLより良いアドレスが変換されているかを理解すること。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

パブリックIPアドレスからプライベートIPアドレスへの着信接続

分類Dev

Dockerコンテナ内のNodeJSからWindowsネットワーク共有ドライブに接続する

分類Dev

Dockerコンテナから外部サーバーへの接続をブロックしている可能性があるもの

分類Dev

macOSのプログラムへの着信および発信接続をブロックする

分類Dev

mqttブローカーDockerコンテナーに接続するテストDockerコンテナー内のPythonmqttクライアント

分類Dev

サーバーからの発信SSH接続をブロックする

分類Dev

コンテナ内からDockerネットワークのプライベートIPを取得して、xdebugremote_hostを構成します

分類Dev

Dockerコンテナ内のPythonスクリプトからローカルホスト上のmysqlデータベースに接続する方法

分類Dev

DockerコンテナーをAzureパイプラインの現在のコンテナーと同じネットワークに接続します

分類Dev

chefの「クライアントの問題へのナイフブートストラップssh接続」を修正する方法は?

分類Dev

Firewalld:特定のポートで発信接続をブロックする

分類Dev

Dockerコンテナー内のキークローク+ホスト上のMySQLが[org.keycloak.services](ServerServiceスレッドプール-62)を与えるデータベースへの接続に失敗しました

分類Dev

Azure SDKを使用してJavaのコンテナーインスタンスにプライベートvnetまたはサブネットを接続するにはどうすればよいですか?

分類Dev

DockerコンテナからプライベートGithubリポジトリのクローンを作成します

分類Dev

DockerコンテナでSparkドライバープログラムを実行しています-エグゼキューターからドライバーへの接続がありませんか?

分類Dev

LXD パブリック IP のコンテナーに接続する

分類Dev

ポートをブロックしながら、特定のURLを介してのみMERNプロジェクトのDockerコンテナへのアクセスを許可するにはどうすればよいですか?

分類Dev

ローカルのプライベート Docker レジストリから Singularity コンテナーを作成する

分類Dev

Flask + NginxリバースプロキシがDockerコンテナへの接続を拒否する

分類Dev

gcloud Composer:ネットワーク「network-name」には、クラスターのコンテナー用に/ xブロックを予約するためのx.0.0.0 / xに使用可能なプライベートIPスペースがありません

分類Dev

KubernetesポッドからプライベートIPに接続する方法

分類Dev

Dockerコンテナから外部ホストへの接続

分類Dev

Dockerコンテナー内で実行されるJVMアプリケーションからグレイログにログを送信するためのベストプラクティスは何ですか?

分類Dev

Dockerコンテナ内からホストネットワーク上のIPアドレスに接続します

分類Dev

CloudSQLインスタンスをパブリックIPからプライベートIPに変換する

分類Dev

セレン/スタンドアロンクロームへのDockerコンテナ接続のPythonJupyterノートブック

分類Dev

Dockerコンテナをホームネットワークに接続する

分類Dev

Dockerサービスタスク(コンテナー)の1つへのトラフィックをブロックする

分類Dev

ClojureプロジェクトのライトテーブルからReplに接続する

Related 関連記事

  1. 1

    パブリックIPアドレスからプライベートIPアドレスへの着信接続

  2. 2

    Dockerコンテナ内のNodeJSからWindowsネットワーク共有ドライブに接続する

  3. 3

    Dockerコンテナから外部サーバーへの接続をブロックしている可能性があるもの

  4. 4

    macOSのプログラムへの着信および発信接続をブロックする

  5. 5

    mqttブローカーDockerコンテナーに接続するテストDockerコンテナー内のPythonmqttクライアント

  6. 6

    サーバーからの発信SSH接続をブロックする

  7. 7

    コンテナ内からDockerネットワークのプライベートIPを取得して、xdebugremote_hostを構成します

  8. 8

    Dockerコンテナ内のPythonスクリプトからローカルホスト上のmysqlデータベースに接続する方法

  9. 9

    DockerコンテナーをAzureパイプラインの現在のコンテナーと同じネットワークに接続します

  10. 10

    chefの「クライアントの問題へのナイフブートストラップssh接続」を修正する方法は?

  11. 11

    Firewalld:特定のポートで発信接続をブロックする

  12. 12

    Dockerコンテナー内のキークローク+ホスト上のMySQLが[org.keycloak.services](ServerServiceスレッドプール-62)を与えるデータベースへの接続に失敗しました

  13. 13

    Azure SDKを使用してJavaのコンテナーインスタンスにプライベートvnetまたはサブネットを接続するにはどうすればよいですか?

  14. 14

    DockerコンテナからプライベートGithubリポジトリのクローンを作成します

  15. 15

    DockerコンテナでSparkドライバープログラムを実行しています-エグゼキューターからドライバーへの接続がありませんか?

  16. 16

    LXD パブリック IP のコンテナーに接続する

  17. 17

    ポートをブロックしながら、特定のURLを介してのみMERNプロジェクトのDockerコンテナへのアクセスを許可するにはどうすればよいですか?

  18. 18

    ローカルのプライベート Docker レジストリから Singularity コンテナーを作成する

  19. 19

    Flask + NginxリバースプロキシがDockerコンテナへの接続を拒否する

  20. 20

    gcloud Composer:ネットワーク「network-name」には、クラスターのコンテナー用に/ xブロックを予約するためのx.0.0.0 / xに使用可能なプライベートIPスペースがありません

  21. 21

    KubernetesポッドからプライベートIPに接続する方法

  22. 22

    Dockerコンテナから外部ホストへの接続

  23. 23

    Dockerコンテナー内で実行されるJVMアプリケーションからグレイログにログを送信するためのベストプラクティスは何ですか?

  24. 24

    Dockerコンテナ内からホストネットワーク上のIPアドレスに接続します

  25. 25

    CloudSQLインスタンスをパブリックIPからプライベートIPに変換する

  26. 26

    セレン/スタンドアロンクロームへのDockerコンテナ接続のPythonJupyterノートブック

  27. 27

    Dockerコンテナをホームネットワークに接続する

  28. 28

    Dockerサービスタスク(コンテナー)の1つへのトラフィックをブロックする

  29. 29

    ClojureプロジェクトのライトテーブルからReplに接続する

ホットタグ

アーカイブ