2021/02/20作成, 2020/02/19更新

FreeBSD Jail

FreeBSD Jail はプロセス空間とディレクトリを指定した空間に閉じ込めるための基本システムです。Jail内で実行されたプログラムはJail空間から出ることができないためクラックされたとしてもホスト環境を攻撃される可能性を極力抑えることができる。

ezjail

jailの管理を簡単に行うためのスクリプトです。jail環境内のベースシステムをnullfsを用いて共有するためディスク容量を節約できます。

ezjailをインストールする

sysutils/ezjailを使用する。パッケージをインストール後、ezjail-adminコマンドが使えるようになる。初回はezjail-admin install を実行し、ベースシステムのビルドを行う。

pkg install ezjail
# ベースシステムのビルドが始まります
# /usr/jails ディレクトリが作成される。
ezjail-admin install

jail仮想環境を作成する

jailには任意の名前とIPアドレスをひとつ振ることができる。ezjailを使って作成する場合は ezjal-admin コマンドを使う。

ezjail-admin create JAIL名 JAILのIPアドレス

jailを起動する

/usr/local/etc/rc.d/ezjail スクリプトを使って制御できるので、service コマンドを使う。

# JAIL名を省略した場合はすべてのjailを起動する
service ezjail onestart JAIL名
# jlsで起動中のjailを確認できる
jls
# ---------------------------------
JID  IP Address      Hostname                      Path
  1  JAILのIPアドレス JAIL名                     /usr/jails/パス
# ---------------------------------

jail内でプログラムを実行する

jexec コマンドを使う。jexecの後ろにjlsで確認した JID とjail内で起動したいプログラム名を指定する。この時シェルコマンドを指定すればjail内で生活できるようになる。

例えば、以下のようにjexecでシェルを起動し、jail内でpsコマンドを使うとホスト環境のプロセスが隠蔽されているのがわかる。

root@ホスト名# jexec 1 csh
# これでjail内で生活できる。
root@JAIL名# ps -auxw
USER   PID %CPU %MEM   VSZ  RSS TT  STAT STARTED    TIME COMMAND
root 20970  0.0  0.0 11396 2764  -  SsJ  00:35   0:00.01 /usr/sbin/syslogd -s
root 21053  0.0  0.0 11264 2600  -  IsJ  00:35   0:00.01 /usr/sbin/cron -s
root 21341  0.0  0.1 13092 3860  0  SJ   01:10   0:00.01 csh
root 21343  0.0  0.0 11684 2916  0  R+J  01:10   0:00.00 ps -auxw
root@JAIL名# exit

まとめてアーカイブを保存する

アーカイブを作成し、ついでにrsyncで別サーバーに転送する。

#!/bin/sh
SYNCTO=RSYNCUSER@RSYNCSERVER:RSYNCPATH
ARCDIR=/usr/jails/ezjail_archives
rm /usr/jails/*/var/cache/pkg/*.txz
for jailname in `ls /usr/local/etc/ezjail`
do
	service ezjail stop ${jailname}
	ezjail-admin archive ${jailname}
	service ezjail start ${jailname}
done
find ${ARCDIR} -mtime +7 -name "*.tar.gz" | xargs rm
rsync -avz --delete ${ARCDIR}/ ${SYNCTO}
INTEL 小型ベアボーン BOXNUC8I5BEH
共有だけじゃなくていろいろとサーバーに仕事をさせたいならまずは場所を取らない小型PCを使ってみるのをお勧め。
Amazon.comのページを別ウィンドウで開きます
Synology DiskStation DS918+
ホットスワップ4ベイのNAS。RAIDも使えるし運用も簡単なのでおすすめ。
Amazon.comのページを別ウィンドウで開きます