« auとdocomoのIPアドレス帯域のチェックツール | トップページ | あなたのスキルで飯は食えるか?に挑戦 »

2010年2月23日 (火)

LinuxでchrootによるJail環境を構築

FreeBSDにはJailという簡易仮想マシンを作るコマンドがあるけど、残念ながら
Linuxにはない。ただ、chrootという古くからあるunixコマンドで仮想マシンに
近いことができる。
この辺のことについては、Apacheセキュリティ という本に記述されている。
Apacheセキュリティの場合は、root権限を使わないようにしたり、必要最低限の
ファイルのみをJail環境に移行することによって、セキュリティを強固にするため
に使われている。
私の場合は、自分のプロジェクトのチームが作成しているWebアプリが、/etc配下
の設定ファイルのパスをソースに直で書いてあるため、設定ファイルを書き換え
て、Webアプリを同時に2個立ち上げることができなかったためにJail環境を構築し
た。そのため、厳密にセキュリティを考慮していないが、悪しからず。
Apacheセキュリティでは、必要な実行ファイルとその実行ファイルを引数にlddを
実行して、依存関係のあるファイルのみ移行していた。

sudo su -l

rootになる。

mkdir /chroot

適当なchroot用のディレクトリの作成(どこでもいい。以降は/chrootと仮定)

mkdir /chroot/proc

procディレクトリの作成

mkdir /chroot/bin

chroot用の/binディレクトリの作成

cp -r /bin/* /chroot/bin/

/bin配下のコマンドをchroot環境にコピー

mkdir /chroot/lib

chroot用の/libディレクトリの作成

cp -r /lib/* /chroot/lib/

/lib配下のライブラリをchroot環境にコピー

mkdir /chroot/usr

chroot用の/usrディレクトリの作成

cp -r /usr/lib /chroot/usr/

/usr/lib配下のライブラリをchroot環境にコピー

mkdir /chroot/tmp

chroot用の/tmpディレクトリの作成

mkdir /chroot/dev

chroot用の/devディレクトリの作成

mknod  -m 666 /chroot/dev/null c 1 3

chroot環境に/dev/nullデバイスの作成

mknod  -m 666 /chroot/dev/zero c 1 5

chroot環境に/dev/zeroデバイスの作成

mknod  -m 644 /chroot/dev/random c 1 8

chroot環境に/dev/randomデバイスの作成

mkdir /chroot/etc

chroot環境に/etcディレクトリの作成

cp /etc/group /chroot/etc/group

chroot環境にgroup設定ファイルをコピー

cp /etc/hosts /chroot/etc/hosts

chroot環境にhosts設定ファイルをコピー

cp /etc/mime.types /chroot/etc/mime.types

chroot環境にmime一覧ファイルをコピー

cp /etc/mtab /chroot/etc/mtab

chroot環境にmount設定ファイルをコピー

cp /etc/nsswitch.conf /chroot/etc/nsswitch.conf

chroot環境にネームサービス設定ファイルをコピー

cp /etc/passwd /chroot/etc/passwd

chroot環境にユーザ設定ファイルをコピー

cp /etc/resolv.conf /chroot/etc/resolv.conf

chroot環境にDNSサーバー設定ファイルをコピー

cp -r /etc/apache2 /chroot/etc

chroot環境にapacheの設定ファイルをコピー

vim /chroot/etc/apache2/ports.conf

chroot環境のapacheのポートを今起動しているサーバとかぶらないよう変更

mkdir /chroot/etc/init.d

chroot環境に起動用スクリプトディレクトリの作成

cp /etc/init.d/apache2 /chroot/etc/init.d/apache2

chroot環境にApacheの起動スクリプトをコピー

mkdir /chroot/usr/bin

chroot環境に/usr/binディレクトリの作成

mkdir /chroot/usr/sbin

chroot環境に/usr/sbinディレクトリの作成

cp /usr/bin/env /chroot/usr/bin/env

chroot環境にenvコマンドをコピー

cp /usr/bin/install /chroot/usr/bin/install

chroot環境にinstallコマンドをコピー

cp /usr/bin/perl /chroot/usr/bin/perl
cp /usr/bin/perl5.10.0 /chroot/usr/bin/perl5.10.0
cp /usr/bin/perlbug /chroot/usr/bin/perlbug
cp /usr/bin/perldoc /chroot/usr/bin/perldoc
cp /usr/bin/perlivp /chroot/usr/bin/perlivp

chroot環境にperlコマンドをコピー

cp /usr/bin/vim /chroot/usr/bin/vim

chroot環境にvimコマンドをコピー

cp /usr/sbin/apache2 /chroot/usr/sbin/apache2
cp /usr/sbin/apache2ctl /chroot/usr/sbin/apache2ctl

chroot環境にapacheコマンドをコピー

mkdir /chroot/var
cp -r /var/www /chroot/var
mkdir  /chroot/var/lock
mkdir /chroot/var/log
mkdir /chroot/var/run

chroot環境に各種/varディレクトリの作成

mkdir /chroot/usr/share
cp -r /usr/share/perl /chroot/usr/share/
cp -r /usr/share/perl5 /chroot/usr/share/

chroot環境にperlライブラリのコピー

sudo cp /usr/share/zoneinfo/Japan /chroot/etc/localtime
mkdir -p /chroot/usr/lib/locale
set|grep LANG
sudo cp -dpR /usr/lib/locale/ja_JP.utf8 /chroot/usr/lib/locale

chroot環境の時刻のlocaleを設定

chroot /chroot

chrootの実行!!

mount -t proc proc /proc

/procのmount

/etc/init.d/apache2 start

congraturation!!

mysql -u root -h 127.0.0.1 --password=root

ちなみに、mysqlはunix socketでは通信できなくなったのでTCPで通信する
必要があります。その際に-pだけでは駄目で、--password=パスワードのよう
にパスワードをコマンドライン上で指定しないと繋がりませんでした。

|

« auとdocomoのIPアドレス帯域のチェックツール | トップページ | あなたのスキルで飯は食えるか?に挑戦 »

Linux」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/68673/47647383

この記事へのトラックバック一覧です: LinuxでchrootによるJail環境を構築:

« auとdocomoのIPアドレス帯域のチェックツール | トップページ | あなたのスキルで飯は食えるか?に挑戦 »