free bsd jail入門

27
FreeBSD jail入門

Upload: tsubasa-nomura

Post on 22-May-2015

4.487 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Free bsd jail入門

FreeBSD jail入門

Page 2: Free bsd jail入門

自己紹介

名前

乃村 翼

facebook

Tsubasa Nomura で検索してください

お仕事

Windows Serverのサポート

英語とMCPの勉強中。。。

サポート終了!

2

Page 3: Free bsd jail入門

目次

1. FreeBSD jailとは

2. FreeBSD jailとは(もう少し詳しく)

3. FreeBSD jailの構築(基本編)

4. FreeBSD jailの構築(ezjail編)

5. FreeBSD jail Tips

6. 【番外編】Hyper-Vでの仮想環境構築Tips

3

Page 4: Free bsd jail入門

FreeBSD jailとは

コンテナ型仮想化のひとつ

Linux界隈で盛り上がっているLXCと類似。

各jailはホストマシン上で動く仮想機械であり、独自のファイルシステムやプロセス空間、ユーザーアカウントを持つ。(by Wikipedia:http://ja.wikipedia.org/wiki/FreeBSD_jail)

引用元:

http://ascii.jp/elem/000/000/419/419268/#eid419270

4

Page 5: Free bsd jail入門

FreeBSD jailとは

FreeBSD 4.0で登場

2000年。LXCよりもだいぶ前!

安定

5

Page 6: Free bsd jail入門

FreeBSD jailとは(もう少し詳しく)

ディレクトリツリー、プロセス、ネットワークスタックの分離

jail 環境ではプロセスは指定されたルートディレクトリから外に出ることは出来ません。

似た機構に chroot がありますが、こちらはアクセス出来るファイルシステムを限定するのみであり、ユーザやネットワークはホスト環境と共有します。

プログラムのロシックによっては、プロセスは chroot されたディレクトリの外にアクセスすることが出来てしまいます。

ネットワークスタックも仮想化。

FreeBSD 8.0からjail が Vimage 対応に。

ホスト名

jail では環境毎にホスト名を持つことが出来ます。

6

Page 7: Free bsd jail入門

FreeBSD jailとは(もう少し詳しく)

IP アトレス

jail では構築時に IP アトレスか割り当てられます。複数のIPアトレスを割り当てることも可能です。

コマント

ファイルシステムが分離される為、もちろんコマントハスは jail 毎に全く異なります。ports システムを使用した環境ではユーザ用コマントは/usr/local/bin に配置されますが、コマントハスを変えることが出来ます。

root ユーザ

Unix では root ユーザは特権ユーザとして全ての権限を持っています。jail のケスト環境でもroot ユーザは存在しますが、ホスト環境を破壊することが無いように、root ユーザであっても、一部の機能に制限事項があります。

7

Page 8: Free bsd jail入門

動かしてみる

8

Page 9: Free bsd jail入門

構成

vyatta

192.168.20.x/24

FreeBSD

Hyper-V

JailJail

Jail

9

Page 10: Free bsd jail入門

FreeBSD jailの構築(基本編)〜jail 作成〜

1. jailのディレクトリを作成し、

2. ユーザラントをビルトして、

3. 指定したディレクトリへインストール。

4. ユーザラントのアプリが使うことがある為、デバイスのマウントもしておく。

セキュリティリスクが上がる為注意する。

5. インターフェースにエイリアスIPアトレスを設定して、起動

# export JAIL_D=/opt/jails/container01# mkdir -p $JAIL_D# cd /usr/src/# make -j 5 buildworld# make installworld DESTDIR=$JAIL_D# make distribution DESTDIR=$JAIL_D# mount -t devfs devfs $JAIL_D/dev# ifconfig hn0 alias 192.168.20.10# jail /opt/jails/containers container01 192.168.20.10 /bin/sh /etc/rc

10

Page 11: Free bsd jail入門

FreeBSD jailの構築(基本編)〜jail 起動と停止〜

1. jailの一覧を出力

2. jail IDを指定してシェルを実行

3. killallの jオプションでjail IDを指定

# jls# jexec 22 tcsh# killall -j 22

11

Page 12: Free bsd jail入門

jail簡単ですね!でも。。。

jailコマントで作成すると・・・

ディスクを無駄に使う。

同じ設定・構成のjailを何個も作るのが面倒。

バックアップやリカバリを簡単にしたい。

そこで。。。

ezjail

12

Page 13: Free bsd jail入門

FreeBSD jailの構築(ezjail編)〜jail 作成〜

1. jailのインストール先を設定ファイルに記述

2. ベースシステムをインストール

3. jailを作成する

# vi /usr/local/etc/ezjail.confezjail_jaildir=/opt/ezjails

# ezjail-admin install # ezjail-admin create -f example container02 192.168.20.10

予めportsもしくはpkgでezjailをインストールする。

13

Page 14: Free bsd jail入門

FreeBSD jailの構築(ezjail編)〜jail 起動と停止〜

1. ezjail-admin startで起動

2. ezjail-admin consoleでjailの中へ

# ezjail-admin start container02# ezjail-admin console container02

1. ezjail-admin stopで停止

2. ezjai-admin delete で削除※-wオプションでファイルの削除までします

# ezjail-admin stop container02# ezjail-admin delete –w container02

14

Page 15: Free bsd jail入門

FreeBSD jailの構築(ezjail編)〜さらに詳しく〜

ezjail-admin install

-mmanpageのインストール

-sFreeBSDソースのインストール

-pportsのインストール

-rリリースバーションを指定してjail をインストールします。8.4-

RELEASE、9.2-RELEASE などが指定できます。尚、jail 環境下でuname -r をした場合でも、ホスト環境のバーションが出力されます。ライブラリ、コマントが指定されたバーションでインストールされます。

# ezjail-admin install -r 9.2-RELEASE

15

Page 16: Free bsd jail入門

FreeBSD jailの構築(ezjail編)〜さらに詳しく〜

ezjail-admin create

-imd デバイスを用い、img ファイルにjail のケスト環境を構築します。

-c他のファイルシステムを使用したjailを構築します。以下コマントでは、ZFS へjail のケスト環境を構築します。

# ezjail-admin create -c zfs -s 300M container001 192.168.20.100

# ezjail-admin create -i -s 100M -f example C78 192.168.1.250# ll /opt/jails/total 102488drwxr-xr-x 2 root wheel 512 Jul 26 01:50 C78-rw-r--r-- 1 root wheel 104857600 Jul 26 01:50 C78.imgdrwxr-xr-x 9 root wheel 512 Jul 26 00:59 basejaildrwxr-xr-x 3 root wheel 512 Jul 26 00:59 flavoursdrwxr-xr-x 12 root wheel 512 Jul 26 00:59 newjail

16

Page 17: Free bsd jail入門

FreeBSD jailの構築(ezjail編)〜さらに詳しく〜

ezjail-admin console

-f停止状態のケスト環境を起動した後に、ログインすることが出来ます。

バグがありましたが、V3.2.3で直してもらいました!

https://erdgeist.org/gitweb/ezjail/

17

Page 18: Free bsd jail入門

FreeBSD jailの構築(ezjail編)〜さらに詳しく〜

ezjail-admin list

jail 環境を一覧で出力します。

STA の列にはjail のステータスが出力されています。それぞれのアルファベットは以下の状態を表します。

D ディレクトリベースで構築されたjail。I md ファイルイメーシベースで構築されたjail。B bde デバイスで構築されたjail。E eli デバイスで構築されたjail。Z zfs デバイスで構築されたjail。R 起動状態のjail。A bde デバイス、eli デバイスにおいて、attach されているjail。S 停止状態のjail。N config オプションにより、disable 状態となっているjail。

18

Page 19: Free bsd jail入門

FreeBSD jailの構築(ezjail編)〜さらに詳しく〜

ezjail-admin config

-rrun、norun により、disable/enable 状態を切り替えることが出来ます。disable 状態となったjail は、start 時に起動しません。複数のjail 環境が存在する場合に、特定のjail 環境を起動させたくない場合に使用します。

-njail名の変更ができます。

-cCPU が複数個ある場合、jail を動作させるCPU を指定することが出来ます。内部的にcpuset(1) を使用しています。

# ezjail-admin config -r norun C78

# ezjail-admin config -n after before

# ezjail-admin config -c 0 C8019

Page 20: Free bsd jail入門

FreeBSD jailの構築(ezjail編)〜さらに詳しく〜

ezjail-admin delete

jail のケスト環境を削除します。-w オプションにより、ファイルの削除を行います。ZFS を使用していた場合はデータセットを削除します。

# ezjail-admin delete -w C80

20

Page 21: Free bsd jail入門

FreeBSD jailの構築(ezjail編)〜さらに詳しく〜

ezjail-admin archive

jail 環境のバックアップを作成します。-a オプションで作成後のファイル名、-d オプションで作成先のディレクトリハスを指定します。デフォルトではjail のルートディレクトリに、jail 名をファイル名として作成されます。また、-A オプションを使用することで全てのjail のバックアップを作成することが出来ます。

ezjail-admin restore

archive オプションによって作成したバックアップから復元します。

# ezjail-admin restore C80

# ezjail-admin archive C80

21

Page 22: Free bsd jail入門

FreeBSD jail Tips

インストールしたら以下の初期設定をしておく。

/etc/resolv.confの作成。

/etc/hostsの追記。

cronからadjkerntzのコメントアウト。

タイムゾーンの設定。

22

Page 23: Free bsd jail入門

FreeBSD jail Tips

マウントポイントの設定

jail のマウントポイントはホスト環境の/etc/fstab.<jail 名>に記述されています。内容は、ホスト環境のfstab と同様です。

dmesgの不可視化

jail 環境でセキュアな環境を構築する場合、ハートウェアやカーネルログを出力するdmesg コマントを実行できるのは好ましくないでしょう。sysctl により、抑止することが出来ます。

以下をホスト環境のsysctl.conf に追記します。※下記カーネルハラメータを設定するとホストのrootユーザ以外はdmesgの内容を取得することができません。

# security.bsd.unprivileged_read_msgbuf=0

23

Page 24: Free bsd jail入門

FreeBSD jail Tips

pingを打てるようにする

/usr/local/etc/ezjail/<コンテナ名>ファイルに下記を記述する

ホストからハッケーシ管理を行う

export jail_container001_parameters="allow.raw_sockets"

pkg –j コンテナ名 <info|install|delete|etc…>

24

Page 25: Free bsd jail入門

【番外編】Hyper-Vでの仮想環境構築Tips

25

Page 26: Free bsd jail入門

まとめ

jailは簡単!

ezjailを使うともっと簡単&便利!

Dockerもいいけどjailも頑張ってます

26

Page 27: Free bsd jail入門

ご清聴ありがとうございました。

27