■ 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 というディレクトリが作成されてその中に basejail と newjail というディレクトリが作成されます。 デフォルトと違う使い方をしたい場合は、PREFIX/etc/ にある ezjail.conf.sample を ezjail.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 - ジャンル:コンピュータ
|