*jail [#g264de67]
jailはファイルシステムやプロセスの隔離を行う、一種の仮想OS環境です。ここではFreeBSD 6系列を対象としています。
#contents
**jail環境の構築 [#wf26e67e]
***jail用ディレクトリの構築 [#b1d058b1]
まずはjailのために各種コマンドやファイル群を用意します。
 # setenv JD /here/is/jail
 # mkdir -p $JD
 # cd /usr/src
 # make -j4 buildworld
 # make installworld DESTDIR=$JD
 # cd /usr/src/etc
 # make distribution DESTDIR=$JD
 # mount_devfs devfs $JD/dev

***jail 環境の初期設定 [#jd8ed2e4]
jail 環境の初期設定を行います。上に引き続き、chroot 環境下で作業を行います。

-起動時のエラーメッセージを抑制するため、空の fstab ファイルを作成します。
 # touch /etc/fstab
-portmapper が起動しないように、/etc/rc.conf に以下を追記します。
 rpcbind_enable="NO"
-インタフェース設定を無効化し ifconfig 関連の起動警告を解消するために、以下を /etc/rc.conf に追記します。
 network_interfaces=""
-仮想 OS をリモートから操作するために jail 環境内で sshd を起動します。以下を/etc/rc.conf に追記します。
 sshd_enable="YES"
 sshd_flags="-4"
-syslogd をセキュアモードで操作し、必要のないポートを閉じるために、以下を /etc/rc.conf に追記します。
 syslogd_flags="-ss"
-syslogd からコンソールへの出力を停止します。/etc/syslog.conf から以下に該当する箇所を削除またはコメントアウトします。
 *.err;kern.debug;auth.notice;mail.crit         /dev/console
-sendmail の警告を抑制するため、/etc/mail/aliases.db を生成します。
 # newaliases
-タイムゾーンの設定を行います。
 # touch /etc/wall_cmos_clock
 # chmod 444 /etc/wall_cmos_clock
 # ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
-root のパスワードを設定します。
 # passwd root
-ssh 用ユーザーの設定を行います。
 # adduser
-/etc/resolv.conf に最寄りの DNS サーバーを定義します。
-adjkerntz の定期動作を止めます。/etc/crontab から以下に該当する箇所を削除またはコメントアウトします。
 1,31    0-5     *       *       *       root    adjkerntz -a

初期設定が終了したらシェルを終了させ、chroot 環境から抜けます。
***portsの準備 [#d1357af7]
それぞれのjail環境内でportsツリーを用意し、最新の状態に保つのはリソースの無駄ですので、親環境のportsツリーをjail環境内でも使用できるようにします。

まず、jail環境内にportsディレクトリーを作成します。
 # mkdir $JD/usr/ports

次に、作成したディレクトリーに親環境の /usr/ports 以下を読み込み専用で、マウントします。
 # mount_nullfs -o ro /usr/ports $JD/usr/ports

親環境の起動時にマウントされるように、/etc/fstab に以下の内容を書き加えます。
 /usr/ports    /here/is/jail/usr/ports    nullfs    ro    0    0

読み込み専用でマウントしていますので、このままではjail環境内でpackageを作成するのに不都合が生じます。~
そこで、jail環境内の /etc/make.conf 内に以下の内容を書き加えます。
 WRKDIRPREFIX=/var/tmp
 DISTDIR=/var/tmp/usr/ports/distfiles
**jail 環境の起動 [#wfdc6782]
jail 環境に割り当てる IP アドレスを、実空間で仮想インターフェイスとして起動します。
 # ifconfig em0 inet alias 192.168.1.100/32
上記の処理を OS の起動時に自動で行わせるために、実空間の /etc/rc.conf に以下の内容を追記します。
 ifconfig_em0_alias0="inet 192.168.1.100  netmask 255.255.255.255"
jail環境を起動します。
 # jail /here/is/jail/ jail_host 192.168.1.100 /bin/sh /etc/rc
OS 起動とともに jail 環境を有効とするために以下の内容を実空間の /etc/rc.conf に追記します。
 jail_enable="YES"                    # Set to NO to disable starting of any jails
 jail_list="jail1"                    # Space separated list of names of jails
 jail_set_hostname_allow="NO"         # Allow root user in a jail
                                      # to change its hostname
 jail_socket_unixiproute_only="YES"   # Route only TCP/IP within a jail
 jail_sysvipc_allow="NO"              # Allow SystemV IPC use from within a jail
 jail_stop_jailer="NO"                # Only stop jailer. Requires jail_*_exec be set
                                      # to use sysutils/jailer port to start the jail.
 
 # jail_host in jail
 jail_jail1_rootdir="/here/is/jail"   # Jail's root directory
 jail_jail1_hostname="jail_host"      # Jail's hostname
 jail_jail1_ip="192.168.1.100"        # Jail's IP number
 jail_jail1_exec="/bin/sh /etc/rc"    # command to execute in jail
 jail_jail1_devfs_enable="YES"        # mount devfs in the jail
 jail_jail1_fdescfs_enable="NO"       # mount fdescfs in the jail
 jail_jail1_procfs_enable="YES"       # mount procfs in jail
 jail_jail1_devfs_ruleset="123"       # devfs ruleset to apply to jail
**jail 環境の再構築 [#v4927afe]
セキュリティアドバイザリへの対処を行うために、システムの再構築が必要な場合があります。また、OS のアップデート行う際にもシステムの再構築を行わなければなりません。

この場合、jail 環境の再構築も行う必要があります。
jail 環境の再構築は以下の手順で行います。

まず jail 環境を止めます。
 # jls
    JID  IP Address      Hostname                      Path
      1  192.168.1.100   jail_host                     /here/is/jail
 # killall -j 1
その後、 jail 環境の再構築を行います。
 # setenv JD /here/is/jail
 # cd /usr/src
 # make -j4 buildworld
 # mergemaster -p -D $JD
 # make installworld DESTDIR=$JD
 # mergemaster -i -C -D $JD
**jail 環境の backup & restore [#e849e4b6]
まず jail 環境を止めます。
 # jls
    JID  IP Address      Hostname                      Path
      1  192.168.1.100   jail_host                     /here/is/jail
 # killall -j 1
**Link [#b1cb3932]
FreeBSD Jail Software and Docs http://memberwebs.com/nielsen/freebsd/jails/

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS