FC2ブログ
悪魔茶屋
*BSDにまつわる記録… 間違ってたらゴメン
ezjail
■ ezjail とは
ezjail は nullfs とソフトリンクを駆使して少ないディスク容量(*1)で複数の jail 環境を構築・メンテナンスするツールです。
副作用として以下のようなメリットがあります。
・jail の構築とメンテナンス(*2)を簡単にする。
・リードオンリーでマウントするので侵入者に書き換えられない。
(*1) jail 環境一つ分のファイル群は作成するので、ディスク容量については複数の jail 環境を構築する予定が無ければメリットになりません。
(*2)システムの更新を一回の作業で全 jail 環境へ行き渡らせることができるなど。

■ 試行環境
FreeBSD 6.0 Release
ezjail-1.1.tar.bz2
HOST環境: 192.168.11.22
JAIL環境: 192.168.11.23

■ インストール
ezjailの本家 http://erdgeist.org/arts/software/ezjail/ よりダウンロードします。
$ tar yxvf ezjail-1.1.tar.bz2
$ cd ezjail-1.1
$ su
# make PREFIX=/usr/local install

■ ベースシステムの構築
# ezjail-admin update
でベースシステムを構築する。システムの更新もこれで行います。
デフォルトでは /usr/jails というディレクトリが作成されてその中に basejailnewjail というディレクトリが作成されます。
デフォルトと違う使い方をしたい場合は、PREFIX/etc/ にある ezjail.conf.sampleezjail.conf という名前に変えて適当に書き換えます。

■ HOST 環境の設定1 (普通のjailと同じ)
192.168.11.23 をエイリアスで作成しておきます
ifconfig_xxxx_aliasx="inet 192.168.11.23 netmask 255.255.255.255"

こまめにテストするのであれば、ここで再起動してエイリアスができているか確認します。

listenするサーバプログラムがあれば jail 環境の IP アドレスを listen しないように設定します。

・inetd
/etc/rc.conf に一行加えます
inetd_flags="-wW -C 60 -a 192.168.11.22"

・sshd
/etc/ssh/sshd_config に一行加えます
ListenAddress 192.168.11.22

・ポートマッパーを止めます
/etc/rc.conf に一行加えます
rpcbind_enable="NO"

PostgreSQLを使う場合
/etc/sysctl.conf に一行加えます
security.jail.sysvipc_allowed=1
どうやら /etc/rc.d/jail でこの設定は 0 に上書きされてしまうようです。コメントアウトして無理やり動かしてますが、正攻法は何でしょう?

■ jail 環境の構築
# ezjail-admin create JAILNAME 192.168.11.23

ここでいったん jail を起動してテスト
# /usr/local/etc/rc.d/ezjail.sh start

(1) /var/run/jail_JAILNAME.id
(2) /usr/jails/JAILNAME/var/log/console.log
の内容を確認します。
(1)には数字(*1)が入っていればOK
(2)は jail 環境のスタートアップログが収められている
できていればテスト完了。jailを停止します。
# /usr/local/etc/rc.d/ezjail.sh stop

/etc/rc.conf
ezjail_enable="YES"

を追加しておくとブート時に /usr/local/etc/rc.d/ezjail.sh が構築した全ての jail 環境を開始させる。

(*1)jid: jexecなどで使用するID

■ JAIL 環境の設定 (普通のjailと同じ)
JAIL環境でアカウント周りの設定
・passwd root
・ユーザの追加
# jexec JID /bin/sh
でJAIL環境に入れます

HOST環境から
・cron の設定
/usr/jails/JAILNAME/etc/crontab から下の一行を削除する
1,31 0-5 * * * root adjkerntz -a

/etc/fstab の設定
# touch /usr/jails/JAILNAME/etc/fstab

resolv.conf の設定
# echo 'domain example.com' > /usr/jails/JAILNAME/etc/resolv.conf
# echo 'nameserver 192.168.11.1' >> /usr/jails/JAILNAME/etc/resolv.conf

・ローカルタイムの設定
# cd /usr/jails/JAILNAME/etc
# touch wall_cmos_clock
# ln -sf ../usr/share/zoneinfo/Asia/Tokyo localtime

・sshd の設定
/usr/jails/JAILNAME/etc/rc.conf に一行加えます
sshd_enable="YES"

/usr/jails/JAILNAME/etc/ssh/sshd_config に一行加えます
ListenAddress 192.168.11.23

・inetd の設定
/usr/jails/JAILNAME/etc/rc.conf に二行加えます
inetd_enable="YES"
inetd_flags="-wW -C 60 -a 192.168.11.23"

/usr/jails/JAILNAME/etc/inetd.confを編集する

・ポートマッパーを無効にします
/usr/jails/JAILNAME/etc/rc.conf に一行加えます
rpcbind_enable="NO"

・ネットワークインターフェースの設定を無効にします
/usr/jails/JAILNAME/etc/rc.conf に一行加えます
network_interfaces=""

* jail 環境内では raw socket が禁止されているので ping, traceroute などは使えない
HOST 環境で /etc/sysctl.conf に次の一行を追加で raw socket を使うことができます。
security.jail.allow_raw_sockets=1


その他のサーバ
・named
/usr/jails/JAILNAME/etc/namedb/named.conf

・apache
httpd.conf
Listen 192.168.11.23
スポンサーサイト




テーマ:FreeBSD - ジャンル:コンピュータ

この記事に対するコメント

>どうやら /etc/rc.d/jail でこの設定は 0 に上書きされてしまうようです。コメントアウトして無理やり動かしてますが、正攻法は何でしょう?

/etc/rc.conf に jail_sysvipc_allow="YES" でどうでしょう?
【2006/01/27 01:41】 URL | otsune #HfMzn2gY [ 編集]

承認待ちコメント
このコメントは管理者の承認待ちです
【2011/08/08 16:41】 | # [ 編集]


この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://bsdsystem.blog40.fc2.com/tb.php/1-90f0bf31
この記事にトラックバックする(FC2ブログユーザー)

cvsupとmake worldでFreeBSD-5.4Rをupdate!

FreeBSD-5.4Rサーバのメンテナンスを行なった。1月になってから3つ目の... divingweb【2006/01/31 21:05】

ezjailに初挑戦!

ezjailに挑戦してみた。設定は悪魔茶屋さんやfkimuraさんのページを参照... divingweb【2006/02/10 17:57】

仮想FreeBSDマシン Jail環境構築

 FreeBSDにて、chroot(8)を強化したJailを使って、Jail環境... BSD使えや、(゚Д゚)ゴルァ!【2006/10/14 09:36】

リンク集

IketomoさんのFreeBSDへ戻る FreeBSD関係のリンク † FreeBSD-Users-JP_Ports-JPなど検索 http://www.queen.ne.jp/iMA/ 5.3の初期からのインストールが詳しいです http://sakura.take-labo.jp/freebsd/ 日本語マニュアル検索 http://www.jp.freebsd.org/man-jp/sea.. PukiWiki/TrackBack 0.1【2007/02/11 14:06】