More Related Content Similar to Free bsd jail入門 Similar to Free bsd jail入門 (20) Free bsd jail入門2. 自己紹介
名前
乃村 翼
facebook
Tsubasa Nomura で検索してください
お仕事
Windows Serverのサポート
英語とMCPの勉強中。。。
サポート終了!
2
3. 目次
1. FreeBSD jailとは
2. FreeBSD jailとは(もう少し詳しく)
3. FreeBSD jailの構築(基本編)
4. FreeBSD jailの構築(ezjail編)
5. FreeBSD jail Tips
6. 【番外編】Hyper-Vでの仮想環境構築Tips
3
4. FreeBSD jailとは
コンテナ型仮想化のひとつ
Linux界隈で盛り上がっているLXCと類似。
各jailはホストマシン上で動く仮想機械であり、独自のファイ
ルシステムやプロセス空間、ユーザーアカウントを持つ。
(by Wikipedia:http://ja.wikipedia.org/wiki/FreeBSD_jail)
引用元:
http://ascii.jp/elem/000/000/419/419268/#eid419270
4
6. FreeBSD jailとは(もう少し詳しく)
ディレクトリツリー、プロセス、ネットワークスタックの分離
jail 環境ではプロセスは指定されたルートディレクトリから外に出るこ
とは出来ません。
似た機構に chroot がありますが、こちらはアクセス出来るファイルシ
ステムを限定するのみであり、 ユーザやネットワークはホスト環境と共
有します。
プログラムのロジックによっては、プロセスは chroot されたディレク
トリの外にアクセスすることが出来てしまいます。
ネットワークスタックも仮想化。
FreeBSD 8.0からjail が Vimage 対応に。
ホスト名
jail では環境毎にホスト名を持つことが出来ます。
6
7. FreeBSD jailとは(もう少し詳しく)
IP アドレス
jail では構築時に IP アドレスが割り当てられます。複数のIPアドレスを割り
当てることも可能です。
コマンド
ファイルシステムが分離される為、もちろんコマンドパスは jail 毎に全く異
なります。ports シ ステムを使用した環境ではユーザ用コマンドは
/usr/local/bin に配置されますが、コマンドパスを 変えることが出来ます。
root ユーザ
Unix では root ユーザは特権ユーザとして全ての権限を持っています。jail
のゲスト環境でもroot ユーザは存在しますが、ホスト環境を破壊すること
が無いように、root ユーザであっても、一部の機能に制限事項があります。
7
10. 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
13. FreeBSD jailの構築(ezjail編)〜jail 作成〜
1. jailのインストール先を設定ファイルに記述
2. ベースシステムをインストール
3. jailを作成する
# vi /usr/local/etc/ezjail.conf
ezjail_jaildir=/opt/ezjails
# ezjail-admin install
# ezjail-admin create -f example container02 192.168.20.10
予めportsもしくはpkgでezjailをインストールする。
13
14. 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
15. FreeBSD jailの構築(ezjail編)〜さらに詳しく〜
ezjail-admin install
-m
manpageのインストール
-s
FreeBSDソースのインストール
-p
portsのインストール
-r
リリースバージョンを指定してjail をインストールします。8.4-
RELEASE、9.2-RELEASE などが指定できます。
尚、jail 環境下でuname -r をした場合でも、ホスト環境のバー
ジョンが出力されます。ライブラリ、コマンドが指定されたバー
ジョンでインストールされます。
# ezjail-admin install -r 9.2-RELEASE
15
16. FreeBSD jailの構築(ezjail編)〜さらに詳しく〜
ezjail-admin create
-i
md デバイスを用い、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 102488
drwxr-xr-x 2 root wheel 512 Jul 26 01:50 C78
-rw-r--r-- 1 root wheel 104857600 Jul 26 01:50 C78.img
drwxr-xr-x 9 root wheel 512 Jul 26 00:59 basejail
drwxr-xr-x 3 root wheel 512 Jul 26 00:59 flavours
drwxr-xr-x 12 root wheel 512 Jul 26 00:59 newjail
16
18. 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
19. FreeBSD jailの構築(ezjail編)〜さらに詳しく〜
ezjail-admin config
-r
run、norun により、disable/enable 状態を切り替えることが出
来ます。disable 状態となったjail は、start 時に起動しません。
複数のjail 環境が存在する場合に、特定のjail 環境を起動させたく
ない場合に使用します。
-n
jail名の変更ができます。
-c
CPU が複数個ある場合、jail を動作させるCPU を指定することが
出来ます。内部的にcpuset(1) を使用しています。
# ezjail-admin config -r norun C78
# ezjail-admin config -n after before
# ezjail-admin config -c 0 C80 19
21. 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
22. FreeBSD jail Tips
インストールしたら以下の初期設定をしておく。
/etc/resolv.confの作成。
/etc/hostsの追記。
cronからadjkerntzのコメントアウト。
タイムゾーンの設定。
22
23. FreeBSD jail Tips
マウントポイントの設定
jail のマウントポイントはホスト環境の/etc/fstab.<jail 名>に記
述されています。内容は、ホスト環境のfstab と同様です。
dmesg の不可視化
jail 環境でセキュアな環境を構築する場合、ハードウェアやカー
ネルログを出力するdmesg コマンドを実行できるのは好ましく
ないでしょう。sysctl により、抑止することが出来ます。
以下をホスト環境のsysctl.conf に追記します。
※下記カーネルパラメータを設定するとホストのrootユーザ以外
はdmesgの内容を取得することができません。
# security.bsd.unprivileged_read_msgbuf=0
23
24. FreeBSD jail Tips
pingを打てるようにする
/usr/local/etc/ezjail/<コンテナ名> ファイルに下記を記述する
ホストからパッケージ管理を行う
export jail_container001_parameters="allow.raw_sockets"
pkg –j コンテナ名 <info|install|delete|etc…>
24