web-dev-qa-db-ja.com

Dockerコンテナー間のネットワークトラフィックを傍受できますか?

通常のネットワークでは、攻撃者がすべてのトラフィックを傍受したり操作したりできるため、プレーンテキストデータを送信することはセキュリティリスクです。安全な通信には暗号化が必要です。 Dockerコンテナーを使用する場合、仮想ネットワークインターフェイスを使用してこれらを接続できます。これらは同じセキュリティ問題の影響を受けますか、それともDockerネットワーク接続は盗聴に対して安全ですか? Dockerネットワーク上のトラフィックを暗号化する必要はありますか?

編集:すべてが同じホスト上の同じブリッジネットワーク上にある場合、2つのDockerコンテナー間のトラフィックが3番目のDockerコンテナーによってインターセプトできるかどうかに興味があります。

10
Sjoerd

はい、トラフィックを保護する必要があります。

Docs.docker.comを読む:

「ネットワーク経由で安全にDockerにアクセスできるようにする必要がある場合は、tlsverifyフラグを指定し、Dockerのtlscacertフラグが信頼できるCA証明書を指すようにすることで、TLSを有効にできます。デーモンモードでは、そのCAによって署名された証明書。クライアントモードでは、そのCAによって署名された証明書を持つサーバーにのみ接続します。」

Jeff Haleによる記事 Dockerのセキュリティのヒントのトップ2 で、著者はこう書いています

「Dockerはプライベートコンテナーネットワーキングも提供します。これにより、コンテナーが同じホスト上の他のコンテナーのネットワークインターフェイスへの特権アクセスを取得できなくなります。したがって、Docker環境はある程度分離されますが、ユースケースに十分に分離されていない場合があります。」

この記事では、Dockerセキュリティを強化するための次のようなアイデアを紹介しています。

  1. 特権の制限
  2. rootとしての実行を避ける
  3. 信頼できる署名済みの画像を使用する
  4. 最小限の画像とリソースを使用する
  5. キーを安全に管理する
  6. ライブラリの更新
  7. docker Enterpriseを検討

ソース:

7
Refineo

答えは、セキュリティに関するほとんどのことと同様に、状況によって異なります。これが重要かどうかを確認するための関連情報をいくつか示します。

Dockerはデフォルトのブリッジネットワーク(docker0(デフォルトのインストール)。これは単なる標準のLinuxブリッジネットワークです。脅威モデルはおそらく2つのシナリオのうちの1つです

  1. 攻撃者は同じブリッジ上の別のコンテナにアクセスできます
  2. 攻撃者は基盤となるホストにアクセスできます。

どちらの場合も、攻撃者はそのネットワーク上のトラフィックやARPスプーフィングを傍受するために十分な特権を必要とします。これは一般的に、ホストに対するroot特権を持っているか、NET_RAW機能は、トラフィックスニッフィングとARPスプーフィングに関連する機能です。

1つのケースでは、残念ながら(セキュリティの観点から)DockerはすべてのコンテナにNET_RAW機能はデフォルトで設定されているため、強化を行わないデフォルトのインストールでは、1つのコンテナにアクセスできる攻撃者がそのネットワーク上の他のコンテナを攻撃できます。これを軽減するには、NET_RAWコンテナ権限から。

ケース2で、攻撃者がコンテナを実行しているホストへの特権アクセス権を持っている場合、攻撃者はそのネットワークにアクセスできますが、すべてのコンテナにもアクセスできるため、トラフィックだけを心配する必要はないでしょう。スニッフィング:)

これはすべて標準のDockerネットワークを前提としています。Kubernetesを使用している場合、さまざまなネットワークオプションが利用できるため、さらに多くの変数が使用されます。

このトピックに関するいくつかの優れた追加資料。この問題について説明するホワイトペーパー here があります。リズ・ライスは、今年のクベコンでこのトピックについて良い講演をしました(ビデオ ここ )。

もう1つの注意事項は、Dockerのデフォルトネットワークでは、Dockerによって作成された他のネットワークではなく、--icc=falseこれは、コンテナー間のリンクによって明示的にホワイトリストに登録されていないコンテナー間通信を防止します。ただし、これはレガシーオプションであるため、今後はこれに依存しません。

4
Rory McCune

Dockerコンテナーがブリッジデバイスを共有できることを考慮する必要があります。これにより、1つのコンテナーからのすべてのトラフィックは、両方が同じホスト上にある場合、別のコンテナーから傍受できます。

考慮すべきもう1つの変数はバグです。 Dockerホストには、Dockerインスタンスが許可されるべきでないトラフィックを盗聴できるバグがある可能性があります。したがって、そのシナリオを検討している場合は、トラフィックを暗号化するのが最善です。

1
camp0