FFRI,Inc. Monthly Research SELinux 再入門 -仮想化・コンテナ編株式会社FFRI http://www.ffri.jp Ver 1.00.01 1 FFRI,Inc. SELinux 再入門 -仮想化・コンテナ編• 仮想化技術(VM)とセキュリティ – VM特有の脅威モデル – libvirt(svirt) – Type Enforcement*1 を使ったホスト-ゲスト隔離 – Multi Category Security*2を用いたゲスト間隔離 • Dockerとセキュリティ – Dockerとは – Dockerの脅威モデル – libcontainerによる隔離 • まとめ *1, *2: SELinuxの基礎については、2014年06月のMonthly Researchを参照 http://www.ffri.jp/assets/files/monthly_research/MR201406_A%20Re-introduction%20to%20SELinux_JPN.pdf 2 FFRI,Inc. はじめに • VMを使ったOS仮想化環境においては、仮想化環境を提供するホスト OSと仮想化環境であるゲストOSそれぞれの隔離と、ゲストOS間 のセキュリティが重要である – LXC, dockerのようなコンテナ型OS仮想化においても同様 • 現状、多くの仮想化及びコンテナは実行にroot権限が必要なため、 その“ゲストOS(コンテナ)の封じ込め”は非常に重要である • 今回はlibvirtに統合されたSELinuxによるLinuxの仮想化システムの 隔離と、dockerのlibcontainerを用いた隔離について紹介する 3 FFRI,Inc. 仮想化技術(VM)とセキュリティ 4 FFRI,Inc. VM特有の脅威モデル • ゲストOSがホストOSに対して攻撃を行うケース – ゲストOSはだいたいの場合特権ユーザで動作しているため、V Mの脆弱性を用いて攻略されてしまう可能性がある • ゲスト同士がお互いの情報を読み取ったり、改ざんを行うケース Attack from the guest to the other guest Guest OS Guest OS Attack from guest to host Host OS Fig 1. Threat model of virtualization system 5 FFRI,Inc. libvirt(with svirt) • 各種仮想化システムを統合するための管理フレームワーク – ハイパーバイザの違いを意識せずにVMを操作できるvirshもこのフレ ームワークの一部 • 各種仮想化システム(KVM、Xen、QEMU、VirtualBox、VMware 、HyperV、LXC、UMLなど)のプロセスのケーパビリティやSELinuxコンテキス トを管理するsVirtが統合されている – ポリシーやセキュリティコンテキスト自体はreference policyで管理さ れている 6 FFRI,Inc. Type Enforcement を使ったホスト-ゲスト隔離 • libvirtのSecurity Manager(svirt相当)は以下のアクセス制御機構を用 いて、ゲストOSをホストOSから隔離する – selinux, apparmor, Unix DAC(uidベースのアクセス制御) allow ipc etc. Guest OS Process libvirtd (qemu_t) allow read/write (virtd_t) Host OS Guest OS image (qemu_image_t or virt_image_t) allow read/write manage SELinux Hooks Fig 2. Host-Guest Isolation using SELinux 7 FFRI,Inc. Multi Category Securityを用いたゲスト間隔離 • libvirtのSecurity ManagerはゲストOS・コンテナごとに固有のセキ ュリティラベルを割り当てる • SELinuxの type enforcementは動的なtype割り当てが苦手なので、 MCS(Multi Category Security)を使ってカテゴリを分ける Guest OS Process (MLS Context: c1) Allow All Guest OS1 Image (MLS Context: c1) Guest OS Process (MLS Context: c2) Deny All Allow All Guest OS2 Image (MLS Context: c2) SELinux Hooks Fig 3. Guest-Guest Isolation using SELinux 8 FFRI,Inc. DOCKERとセキュリティ 9 FFRI,Inc. Dockerとは • アプリケーションのデプロイにフォーカスした、コンテナ型OS仮 想化と差分ディスク管理によるコンテナ管理基盤 – Docker Engine • OS上で動作するマネージャ – Docker Hub • Web上でDockerイメージを管理、配信するプラットフォーム (Githubのコンテナイメージ版) • 元は米DotCloud(現docker)が開発したPaaS基盤 – Amazon, Google, Microsoftが対応を表明するなど、非常にホッ トな技術 10 FFRI,Inc. Scalable Deployment Cycle with Docker 2. Building application in Docker container 1. Download from Docker Hub Docker Container Docker Image Docker Engine Docker Hub Developer’s Host 4. You can deploy Docker image from Docker Hub directly 3. Deploying production environment from developer’s Docker container Docker Container Docker Container Docker Container Docker Container Docker Engine Docker Engine Production Serer A Production Serer B 11 FFRI,Inc. Dockerの脅威モデル • Docker repositoryからOSイメージをダウンロードし、コンテナと して実行することは、例えるなら信頼できないプログラムをダウ ンロードし、ローカルで実行するようなものと同じともいえる – public imageに悪意がないと言い切ることは難しい Attack Benign Docker Container Untrusted OS execution with pilerivge Malicious Docker Container Docker Engine This container is trusted? Malicious Docker Image Attack Docker Hub Developer’s Host 12 FFRI,Inc. libcontainerによる隔離 • Dockerは従来lxcとその管理コマンドlibvirt-lxcを用いて隔離を実現 していたが、0.9からlibcontainerを用いた隔離に変更した – コンテナ-ホスト間の隔離は、Linux capabilities とcgroup、 MAC(SELinux, AppArmor)を用いて行われる – コンテナ間の隔離は、MAC(SELinux, AppArmor)を用いて実現 している • SELinuxを使う場合、MCSセキュリティコンテキストを動 的に生成し、割り当てる • <~0.9で実現される隔離と0.9以降における隔離はほぼ同一 – libvirtへの依存を減らし、他のディストリビューションやOSへ 適用しやすくしたものと考えられる 13 FFRI,Inc. まとめ • 仮想化やコンテナ技術を使う場合、2つの視点で隔離を行う必要がある – ホスト-ゲスト間の隔離 • ホストOSを守れなければ、他のゲストOSも危ない – ゲスト間の隔離 • ゲストOSから他のゲストOSを侵害させない • libvirtは洗練された仮想化基盤管理アプリケーションであり、SELinuxや AppArmorも統合されている • dockerのようなコンテナ型仮想化においても、脅威モデルはVMのセ キュリティと変わらない 14 FFRI,Inc. 参考文献 • • • • 第3章 sVirt https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/ Virtualization_Administration_Guide/chap-sVirt.html Docker and SELinux http://www.projectatomic.io/docs/docker-and-selinux/ DOCKER 0.9: INTRODUCING EXECUTION DRIVERS AND LIBCONTAINER https://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-andlibcontainer/ Introducing a *Super* Privileged Container Concept http://developerblog.redhat.com/2014/11/06/introducing-a-super-privileged-containerconcept/ 15 FFRI,Inc. Contact Information E-Mail : research—[email protected] Twitter : @FFRI_Research 16
© Copyright 2024