Upgrade to Pro — share decks privately, control downloads, hide ads and more …

異種OS機能連携のためのセキュアコンテナ・ネットワーキング機構の実現/Project Study 1

Soma
July 29, 2023

異種OS機能連携のためのセキュアコンテナ・ネットワーキング機構の実現/Project Study 1

課題研究1

Soma

July 29, 2023
Tweet

More Decks by Soma

Other Decks in Technology

Transcript

  1. 2 背景:コンテナ型仮想化 軽量なアプリケーション実行環境として コンテナ型仮想化 が注目されている コンテナ:OSカーネルが提供するリソース分離・制御機能を用いて      実現されるアプリケーション実行環境 ハードウェア ホスト OS

    コンテナ ランタイム コンテナ アプリ ケーション コンテナ アプリ ケーション • ホストOSカーネル共有による 軽量かつ高速な起動が特徴 • クラウドコンピューティング基盤上で広 く活用
  2. 3 背景:コンテナ型仮想化の課題 • OSカーネルの共有を悪用した、 コンテナへの攻撃 • 頻繁なコンテナ間通信を悪用した、 コンテナネットワークに対する攻撃 ホストOSカーネルの脆 弱性を悪用した

    攻撃が可能 悪意のあるコンテナによる通 信に対する攻撃が可能 クラウドコンピューティング基盤でのコンテナ利用には 攻撃への対処 が必要
  3. 手法: • 異種OSとしてFreeBSDを採用 • jailと、Linuxエミュレータによる Linuxコンテナ互換実行 jail: コンテナ相当の機能を持つ FreeBSDの仮想化技術 •

    Linux互換コンテナに対する FreeBSD固有のセキュリティ機構の適用 課題:セキュアなコンテナネットワーキングに    関しては未検討 4 先行研究: 異種OS機能連携によるセキュアコンテナ 中田らの研究 [1] 目的: コンテナの軽量さを最大限維持 しつつ、OSカーネル共有に起因する    脆弱性を悪用した攻撃を回避できるセキュアコンテナ の実現 [1] Nakata, Y., Suzuki, S. and Matsubara, K.: Reducing Attack Surface with Container Transplantation for Lightweight Sandboxing, Proceedings of the 14th ACM SIGOPS Asia-Pacific Workshop on Systems. pp. 58-64 (2023). カーネル実装の 違いによる 脆弱性の回避 FreeBSD固有の セキュリティ機構 に よる攻撃の回避
  4. 5 コンテナネットワーキングの重要性 クラウドコンピューティング基盤上では コンテナネットワーキングが重要 な機能 コンテナ コンテナ コンテナ コンテナ コンテナ

    コンテナ マイクロサービス アーキテクチャ • マイクロサービスアーキテクチャ - マイクロサービス毎にコンテナを割当 - ユーザアクセスに起因した コンテナ間通信を介する処理 • 頻繁なコンテナ間通信 が発生 FreeBSD環境における コンテナネットワーキング機構の実現が 必要不可欠
  5. 6 卒業研究で実現した FreeBSDコンテナネットワーキング 単一ノード上 での Linux互換コンテナネットワーキングを実現 コンテナ 設定 コンテナ ランタイム

    実行 CNI プラグイン • コンテナ間でのネットワークリソース共有 • CNIコアプラグインによる Linuxコンテナネットワーキング互換機能 - CNIプラグイン:コンテナへのインタフェース接続や アドレス割当によるネットワーク接続を行うプラグイン 残課題:複数ノード上 での     コンテナネットワーキングはできない
  6. 9 提案1アプローチ: Linux標準CNIプラグインの移植 Calico pluginのFreeBSD移植によって、 複数ノード上コンテナ間通信を実現 • Calico: BGPと呼ばれる 経路制御プロトコルを用いた

    複数ノード上コンテナ間通信を実現するCNI プラグイン - 同一ノード上コンテナ間通信 - パケットフィルタリング・アドレス変換 - BGPによる別ノード上コンテナへの 経路制御
  7. 10 コンテナネットワーキングを実現する機能モジュール群 etcd: コンテナのネット ワーク設定を持つ データベース calicoctl: Dockerを用いて、 calico-nodeを実行 confd:

    calico用のBGP設定 をBIRD用の設定に 置換 Calico-BIRD: BGPの設定適用や 経路制御を行うデー モン Felix: calico用のネット ワーク設定を iptables用に置換 iptables: ホスト内のファイア ウォールやアドレス 変換の設定 コンテナ ランタイム: コンテナ実行や 削除などの管理 nerdctl: コンテナ ランタイムや CNIプラグインに命 令を出す Calico Plugin: コンテナの IPアドレスや インタフェースの設 定を行う CNIプラグイン Docker: nerdctlと同等の 機能のコンテナ管理
  8. 14 コンテナネットワーキングを実現する機能モジュール群 calicoctl: Dockerを用いて、 calico-nodeを実行 コンテナ ランタイム: コンテナ実行や 削除などの管理 nerdctl:

    コンテナ ランタイムや CNIプラグインに命 令を出す Calico Plugin: コンテナの IPアドレスや インタフェースの設 定を行う CNIプラグイン
  9. 15 コンテナネットワーキングを実現する機能モジュール群 calicoctl: Dockerを用いて、 calico-nodeを実行 コンテナ ランタイム: コンテナ実行や 削除などの管理 nerdctl:

    コンテナ ランタイムや CNIプラグインに命 令を出す Calico Plugin: コンテナの IPアドレスや インタフェースの設 定を行う CNIプラグイン Docker: nerdctlと同等の 機能のコンテナ管理
  10. 16 コンテナネットワーキングを実現する機能モジュール群 etcd: コンテナのネット ワーク設定を持つ データベース calicoctl: Dockerを用いて、 calico-nodeを実行 コンテナ

    ランタイム: コンテナ実行や 削除などの管理 nerdctl: コンテナ ランタイムや CNIプラグインに命 令を出す Calico Plugin: コンテナの IPアドレスや インタフェースの設 定を行う CNIプラグイン Docker: nerdctlと同等の 機能のコンテナ管理
  11. 17 コンテナネットワーキングを実現する機能モジュール群 etcd: コンテナのネット ワーク設定を持つ データベース calicoctl: Dockerを用いて、 calico-nodeを実行 confd:

    calico用のBGP設 定をBIRD用の設定 に置換 コンテナ ランタイム: コンテナ実行や 削除などの管理 nerdctl: コンテナ ランタイムや CNIプラグインに命 令を出す Calico Plugin: コンテナの IPアドレスや インタフェースの設 定を行う CNIプラグイン Docker: nerdctlと同等の 機能のコンテナ管理
  12. 18 コンテナネットワーキングを実現する機能モジュール群 etcd: コンテナのネット ワーク設定を持つ データベース calicoctl: Dockerを用いて、 calico-nodeを実行 confd:

    calico用のBGP設定 をBIRD用の設定に 置換 Calico-BIRD: BGPの設定適用や 経路制御を行う デーモン コンテナ ランタイム: コンテナ実行や 削除などの管理 nerdctl: コンテナ ランタイムや CNIプラグインに命 令を出す Calico Plugin: コンテナの IPアドレスや インタフェースの設 定を行う CNIプラグイン Docker: nerdctlと同等の 機能のコンテナ管理
  13. 19 コンテナネットワーキングを実現する機能モジュール群 etcd: コンテナのネット ワーク設定を持つ データベース calicoctl: Dockerを用いて、 calico-nodeを実行 confd:

    calico用のBGP設定 をBIRD用の設定に 置換 Calico-BIRD: BGPの設定適用や 経路制御を行うデー モン Felix: calico用のネット ワーク設定を iptables用に置換 コンテナ ランタイム: コンテナ実行や 削除などの管理 nerdctl: コンテナ ランタイムや CNIプラグインに命 令を出す Calico Plugin: コンテナの IPアドレスや インタフェースの設 定を行う CNIプラグイン Docker: nerdctlと同等の 機能のコンテナ管理
  14. 20 コンテナネットワーキングを実現する機能モジュール群 etcd: コンテナのネット ワーク設定を持つ データベース calicoctl: Dockerを用いて、 calico-nodeを実行 confd:

    calico用のBGP設定 をBIRD用の設定に 置換 Calico-BIRD: BGPの設定適用や 経路制御を行うデー モン Felix: calico用のネット ワーク設定を iptables用に置換 iptables: ホスト内のファイア ウォールやアドレス 変換の設定 コンテナ ランタイム: コンテナ実行や 削除などの管理 nerdctl: コンテナ ランタイムや CNIプラグインに命 令を出す Calico Plugin: コンテナの IPアドレスや インタフェースの設 定を行う CNIプラグイン Docker: nerdctlと同等の 機能のコンテナ管理
  15. 24 課題1の解決策: Dockerの排除 Dockerをnerdctlに変更する ことでLinuxとFreeBSD両方で利用可能 に • calicoctlはDockerを用いてCalico-nodeを作成 ◦ DockerはFreeBSDに未対応

    • nerdctl+コンテナランタイムに変更 ◦ FreeBSDでもCalico-nodeが作成できることを確認 nerdctl+コンテナランタイムは 現在のコンテナ環境のスタンダード
  16. 25 課題2:iptablesの置き換えが必要 Linux iptablesのかわりに FreeBSD PFを利用 • PF: iptablesのかわりにFreeBSDで利用可能な パケットフィルタリングおよびネットワークアドレス変換機能

    • iptablesとPFでは設定ファイルの構文に違いがある set skip on lo0
 set block-policy drop 
 block in log all
 pass out all
 *filter
 :INPUT DROP [0:0]
 :OUTPUT ACCEPT [0:0] 
 -A INPUT -i lo -j ACCEPT 
 -A INPUT -j LOG --log-prefix "iptables-INPUT-drop:" --log-level 5 
 • ループバックの通信は許可 • 入るパケットは破棄 (ログは取る) • 出るパケットはすべて許可 FreeBSD PF Linux iptables
  17. 27 課題3:Calico-BIRDのLinux依存 Calico-BIRDのLinux依存を解消する必要がある • BIRD: BGPの設定適用や経路制御を行うデーモン ◦ BIRDはFreeBSDでも利用可能 ◦ CalicoがBIRDに

    Linux用の独自の実装 を加えている(Calico-BIRD) → Calico-BIRDにおけるLinux依存を調査 し、Linux依存を解消する
  18. 30 FreeBSD固有のセキュリティを適用した Linux互換コンテナの課題 Capsicumサンドボックス内では 正常なコンテナ間通信ですら不可能 • 先行研究ではコンテナ内 アプリケーションへCapsicumを適用 - FreeBSDカーネルへの攻撃を防ぐ

    • Capsicumサンドボックス内の アプリケーションは ネットワークリソースへアクセス不可 危険な通信だけでなく、 正常なコンテナ間通信 すらできない Capsicum: アプリケーションにリソースアクセス制限 を行うFreeBSD固有のセキュリティ機構
  19. 33 まとめ 背景: - 異種OS機能連携によるセキュアコンテナをクラウド利用するための課題 - コンテナネットワーキングの重要性 目的: - 異種OS機能連携によるセキュアコンテナ実現のための

    複数ノード上のセキュアコンテナ・ネットワーキング機構の実現 提案: - 提案1: コンテナネットワーキングの複数ノード対応 - 提案2: コンテナネットワーキングのセキュア化 今後の課題 - Calicoの機能モジュール群の実装 - Casperの適用手法の検討