スポンサーリンク

jailとは
jailは、「プロセスとその子孫を閉じ込める」ことができ、「仮想FreeBSDマシン」を実現する機能です。 chrootコマンドを使用し、ルートディレクトリを変更し、コマンドを実行することができます。コマンドを任意のディレクトリの下に閉じこめることで、不要なファイルシステムへのアクセスを制限することが可能になります。 chrootされたコマンドは、指定されたルートディレクトリよりも上の階層へアクセスすることができません。

jailは、chrootの機能を拡張したもので、プロセスやネットワークなどを隔離することができます。

WMWareなどの仮想マシンとは異なり、プロセス自体はマスターホストのカーネルによって動作します。

ezjailをインストールする方法

portsからezjailをインストールすることができます。

cd /usr/ports/sysutils/ezjail/
sudo make install clean


% cd /usr/ports/sysutils/ezjail/
% sudo make install clean
Password:
===>  Vulnerability check disabled, database not found
=> ezjail-2.0.1.tar.bz2 doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from http://erdgeist.org/arts/software/ezjail/.
ezjail-2.0.1.tar.bz2                          100% of   15 kB   28 kBps
===>  Extracting for ezjail-2.0.1
=> MD5 Checksum OK for ezjail-2.0.1.tar.bz2.
=> SHA256 Checksum OK for ezjail-2.0.1.tar.bz2.
===>  Patching for ezjail-2.0.1
===>  Configuring for ezjail-2.0.1
===>  Building for ezjail-2.0.1
===>  Installing for ezjail-2.0.1
===>   Generating temporary packing list
mkdir -p /usr/local/etc/ezjail/ /usr/local/man/man1/ /usr/local/man/man5/ /usr/local/etc/rc.d/ /usr/local/bin/ /usr/local/share/examples/ezjail
cp -p ezjail.conf.sample /usr/local/etc/
cp -R -p examples/default /usr/local/share/examples/ezjail/
sed s:EZJAIL_PREFIX:/usr/local: ezjail.sh > /usr/local/etc/rc.d/ezjail.sh
sed s:EZJAIL_PREFIX:/usr/local: ezjail-admin > /usr/local/bin/ezjail-admin
sed s:EZJAIL_PREFIX:/usr/local: man1/ezjail-admin.1 > /usr/local/man/man1/ezjail-admin.1
sed s:EZJAIL_PREFIX:/usr/local: man5/ezjail.conf.5 > /usr/local/man/man5/ezjail.conf.5
sed s:EZJAIL_PREFIX:/usr/local: man5/ezjail.5 > /usr/local/man/man5/ezjail.5
chmod 755 /usr/local/etc/rc.d/ezjail.sh /usr/local/bin/ezjail-admin
chown -R root:wheel /usr/local/man/man1/ezjail-admin.1 /usr/local/man/man5/ezjail.conf.5 /usr/local/man/man5/ezjail.5 /usr/local/share/examples/ezjail/
===>   Compressing manual pages for ezjail-2.0.1
===>   Registering installation for ezjail-2.0.1
===>  Cleaning for ezjail-2.0.1

環境構築
以下のコマンドを実行するとbuildworldが行われます。
/usr/srcにFreeBSDのソースが必要です。
ezjailのbasejailを作成、または、更新します。

sudo ezjail-admin update


実際に下記コマンドで j1 というjailを作成します。

sudo mkdir /home/jail
ezjail-admin create -r /home/jail/j1 j1 192.168.0.111

/home/jail/j1というディレクトリに j1 という名前の jailを作成します。
/home/jail/j1にj1のFreeBSDのツリーができます。
j1 の IPアドレスは、192.168.0.111になります。

ネットワークの設定
ネットワークカードがfxp0と想定します。
ifconfigで、デバイス名を調べてください。
jail用のIPアドレスをaliasにセットします。

sudo ifconfig fxp0 inet 192.168.0.111/24 alias


上記の設定を解除するには、-aliasを使用します。

sudo ifconfig fxp0 inet 192.168.0.111/24 -alias


/etc/rc.conf などに下記の設定を加えておくと便利です。

ifconfig_fxp0_alias0="inet 192.168.0.111/24"


もし複数の設定があるなら aliasの次の値を増やしていきます。

ifconfig_fxp0_alias0="inet 192.168.0.111/24"
ifconfig_fxp0_alias1="inet 192.168.0.112/24"
ifconfig_fxp0_alias2="inet 192.168.0.113/24"


jailの中からpingなどのコマンドを使うことができないので、もし利用したいなら、マスターホストで下記の設定をします。

sudo sysctl security.jail.allow_raw_sockets=1


ezjailでのjailの起動と停止
/etc/rc.confに下記の設定を追加します。

ezjail_enable="YES"

これを設定することで、FreeBSDの起動時に自動的にjailがスタートされます。

起動方法

/usr/local/etc/rc.d/ezjail.sh start

停止方法

/usr/local/etc/rc.d/ezjail.sh stop


jailコマンドによるjailの開始

jail /home/jail/j1 j1 192.168.0.111 /bin/sh /etc/rc


アクティブなjailを調べる方法
アクティブなjailを調べる方法は、jlsコマンドです。

jls


jailの中に入る方法
jailの中に入る方法として、jexecか、sshする方法があります。

% jexec 1 /bin/csh

j1の名前解決をできるように/etc/hostsなどに設定がしてある必要があります。
% ssh j1

jailの停止方法
jlsでJIDを調べ、jexecで/etc/rc.shutdownを実行します。

% jls
   JID  IP Address      Hostname                      Path
     4  192.168.0.111   j1                            /home/jail/j1
% sudo jexec 4 /bin/sh /etc/rc.shutdown 
%
% sudo jexec 4  kill -15 -1

まとめ

jailを利用することで、用途ごとに環境を分離することができます。環境を分離することにより、パッケージの依存関係に悩むことが減らすことができます。また、テスト環境とサービス環境をわけたり、複数台のマシンを容易しなくても、分散したシステムの簡単なテストを行うことができます。プロセスをjailに閉じこめることにより、セキュリティを高める効果もあります。

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー