monthly research selinux 再入門 仮想化・コンテナ …...docker container production serer...

16
Monthly Research SELinux 再入門 -仮想化・コンテナ編- 株式会社FFRI http://www.ffri.jp Ver 1.00.01

Upload: others

Post on 22-May-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

1

Monthly Research

SELinux 再入門 -仮想化・コンテナ編-

株式会社FFRI http://www.ffri.jp

Ver 1.00.01

Page 2: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

SELinux 再入門 -仮想化・コンテナ編-

•  仮想化技術(VM)とセキュリティ –  VM特有の脅威モデル –  libvirt(svirt) –  Type Enforcement*1 を使ったホスト-ゲスト隔離 –  Multi Category Security*2を用いたゲスト間隔離

•  Dockerとセキュリティ –  Dockerとは –  Dockerの脅威モデル –  libcontainerによる隔離

•  まとめ

2

*1, *2: SELinuxの基礎については、2014年06月のMonthly Researchを参照 http://www.ffri.jp/assets/files/monthly_research/MR201406_A%20Re-introduction%20to%20SELinux_JPN.pdf

Page 3: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

はじめに

•  VMを使ったOS仮想化環境においては、仮想化環境を提供するホストOSと仮想化環境であるゲストOSそれぞれの隔離と、ゲストOS間のセキュリティが重要である –  LXC, dockerのようなコンテナ型OS仮想化においても同様

•  現状、多くの仮想化及びコンテナは実行にroot権限が必要なため、その“ゲストOS(コンテナ)の封じ込め”は非常に重要である

•  今回はlibvirtに統合されたSELinuxによるLinuxの仮想化システムの隔離と、dockerのlibcontainerを用いた隔離について紹介する

3

Page 4: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

仮想化技術(VM)とセキュリティ

4

Page 5: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

VM特有の脅威モデル

•  ゲストOSがホストOSに対して攻撃を行うケース –  ゲストOSはだいたいの場合特権ユーザで動作しているため、V

Mの脆弱性を用いて攻略されてしまう可能性がある

•  ゲスト同士がお互いの情報を読み取ったり、改ざんを行うケース

5

Guest OS

Host OS

Guest OS

Attack from guest to host

Attack from the guest to the other guest

Fig 1. Threat model of virtualization system

Page 6: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

libvirt(with svirt)

•  各種仮想化システムを統合するための管理フレームワーク –  ハイパーバイザの違いを意識せずにVMを操作できるvirshもこのフレームワークの一部

•  各種仮想化システム(KVM、Xen、QEMU、VirtualBox、VMware 、Hyper-V、LXC、UMLなど)のプロセスのケーパビリティやSELinuxコンテキストを管理するsVirtが統合されている –  ポリシーやセキュリティコンテキスト自体はreference policyで管理されている

6

Page 7: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

Type Enforcement を使ったホスト-ゲスト隔離

•  libvirtのSecurity Manager(svirt相当)は以下のアクセス制御機構を用いて、ゲストOSをホストOSから隔離する –  selinux, apparmor, Unix DAC(uidベースのアクセス制御)

7

Guest OS Process (qemu_t)

Host OS

Guest OS image (qemu_image_t or virt_image_t)

libvirtd (virtd_t)

manage

SELinux Hooks

Fig 2. Host-Guest Isolation using SELinux

allow read/write allow read/write

allow ipc etc.

Page 8: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

Multi Category Securityを用いたゲスト間隔離

•  libvirtのSecurity ManagerはゲストOS・コンテナごとに固有のセキュリティラベルを割り当てる

•  SELinuxの type enforcementは動的なtype割り当てが苦手なので、MCS(Multi Category Security)を使ってカテゴリを分ける

8

Guest OS Process (MLS Context: c1)

Guest OS1 Image (MLS Context: c1)

Allow All

Fig 3. Guest-Guest Isolation using SELinux

Guest OS Process (MLS Context: c2)

Guest OS2 Image (MLS Context: c2)

Deny All Allow All

SELinux Hooks

Page 9: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

DOCKERとセキュリティ

9

Page 10: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

Dockerとは

•  アプリケーションのデプロイにフォーカスした、コンテナ型OS仮想化と差分ディスク管理によるコンテナ管理基盤 –  Docker Engine

•  OS上で動作するマネージャ –  Docker Hub

•  Web上でDockerイメージを管理、配信するプラットフォーム(Githubのコンテナイメージ版)

•  元は米DotCloud(現docker)が開発したPaaS基盤 –  Amazon, Google, Microsoftが対応を表明するなど、非常にホットな技術

10

Page 11: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

Scalable Deployment Cycle with Docker

11

Docker Engine

Docker Container

Developer’s Host

Docker Engine

Docker Container

Docker Container

Production Serer A

Docker Engine

Docker Container

Docker Container

Production Serer B

1. Download from Docker Hub 2. Building application in Docker container

3. Deploying production environment from developer’s Docker container

Docker Hub

Docker Image

4. You can deploy Docker image from Docker Hub directly

Page 12: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

Dockerの脅威モデル

•  Docker repositoryからOSイメージをダウンロードし、コンテナとして実行することは、例えるなら信頼できないプログラムをダウンロードし、ローカルで実行するようなものと同じともいえる –  public imageに悪意がないと言い切ることは難しい

12

Docker Engine

Malicious Docker

Container

Developer’s Host

This container is trusted?

Untrusted OS execution with pilerivge

Docker Hub

MaliciousDocker Image

Benign Docker

Container

Attack

Attack

Page 13: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

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

Page 14: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

まとめ

•  仮想化やコンテナ技術を使う場合、2つの視点で隔離を行う必要がある –  ホスト-ゲスト間の隔離

•  ホストOSを守れなければ、他のゲストOSも危ない

–  ゲスト間の隔離 •  ゲストOSから他のゲストOSを侵害させない

•  libvirtは洗練された仮想化基盤管理アプリケーションであり、SELinuxやAppArmorも統合されている

•  dockerのようなコンテナ型仮想化においても、脅威モデルはVMのセキュリティと変わらない

14

Page 15: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

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-and-libcontainer/

•  Introducing a *Super* Privileged Container Concept http://developerblog.redhat.com/2014/11/06/introducing-a-super-privileged-container-concept/

15

Page 16: Monthly Research SELinux 再入門 仮想化・コンテナ …...Docker Container Production Serer B 1. Download from Docker Hub 2. Building application in Docker container 3. Deploying

FFRI,Inc.

Contact Information

E-Mail : research—[email protected] Twitter : @FFRI_Research

16