hshinjiの日記

2006-05-20

[][]TOMOYO Linux on OpenBlockS266 21:58

これまでLIDS環境などを構築できるようにしたbuildrootのパッチに、TOMOYO Linuxも含め、make一発でファームウェアを作成できるようにした。

カーネルコンパイル

カーネルはとりあえず2.4.32のみとして、OpenBlockS用カーネルに対するTOMOYO Linuxパッチを作成し、ファームウェアの構築環境を作成したが、コンパイル中にエラーで終了。原因は、fs/ccs-common.cとfs/proc/ccs-proc.c内の__initが解決できないためだったので、それぞれに"#include <linux/init.h>"を付加してやってコンパイルすることが出来た。(x86系でコンパイルしたことが無いので分かりませんが、バグ?)

BusyBox

TOMOYO Linuxはシンボリックリンクを解決したパス名でアクセス制御を行う」と言うことなので、BusyBoxに対してはハードリンクで対応しようとした。

BusyBoxが作業ディレクトリインストールした時点では、うまくハードリンクになったが、initrd用のルートファイルシステム作成時にバラバラ(それぞれ/bin/busyboxのコピー)になってしまい、できあがったファームウェアは32M! FlashROMに入りませんてば・・・

しょうがないので、とりあえずバイナリラッパで構築することにする。(LIDSのACLと比較してみたいし。)

現在動作中

問題なく動作中。で、現在はSourceforge.jpにあるドキュメントを見ながらTOMOYO Linuxの設定中。

環境構築用のファイル

ホームページダウンロードページに置いときました。

PANDAPANDA 2006/05/21 09:36 ごめんなさい。 i386 アーキテクチャではコンパイルできるので大丈夫だと思っていました。
#include <linux/init.h> を追加しないとコンパイルが通らないアーキテクチャもあるんですね。
次回リリース版では追加するようにします。ありがとうございました。

> initrd用のルートファイルシステム作成時にバラバラ
ルートファイルシステム作成手順はどこかにありますか?
cpio ならば -H newc オプションを付ければハードリンクを維持できると思いますが、
ハードリンクが解除されてしまうということは、ハードリンクをサポートしていないファイルシステムなのかな?

hshinjihshinji 2006/05/21 11:52 PANDAさん、コメントありがとうございます。
はじめてTOMOYOを動かしましたが、学習モード、運用モードなど、ちゃんと動いていて面白いです。(VMwareを含め、普通のPCで動かしたことがありません(^^;;)
今BusyBoxはバイナリラッパなので、ポリシーのコマンドの間々に/bin/busyboxがちゃんと挟まっています。LIDSのACLでまだおかしいところがあるので、TOMOYOを使ったら分かるかも。

>> initrd用のルートファイルシステム作成時にバラバラ
これですが、ファイルシステムイメージを作業ディレクトリ(build_powerpc/root)
から作成する際に、genext2fsと言うものを使っているのですが、こいつではハードリンクの維持が出来ないようです。テキストファイルでデバイスファイルやファイルのパーミッションなどを設定しておけば、その通りに設定/作成してくれるので便利なのですが…
解決方法考え付くまで、とりあえずバイナリラッパにしておきます。

あと、組み込んだツールは、ccs-auditd、 indtemp、savepolicy、sortpolicy、editpolicy、loadpolicy、setlevel、位なのですが、よいでしょうか。組み込み系として必要/不必要なものなど、あれば教えていただけるとありがたいです。

hshinjihshinji 2006/05/21 12:00 PANDAさん、
>ルートファイルシステム作成手順はどこかにありますか?
あ、書き忘れましたが、ルートファイルシステムや、ファームウェアは、buildrootがすべて勝手にやってしまいます。genext2fsも途中でダウンロード/コンパイル/実行が行われます。ですので、buildroot内のMakefileなどを追ってく必要があります。

PANDAPANDA 2006/05/21 13:13 組み込み系で ncurses と readline ライブラリがサポートされているかどうか心配でしたが大丈夫でしたか?

まず、 savepolicy と editpolicy は必須です。

アクセス許可ログを保存しない場合 /root/security/profile*.txt で MAX_GRANT_LOG=0 と指定してください。アクセス拒否ログを保存しない場合 MAX_REJECT_LOG=0 と指定してください。アクセス許可ログもアクセス拒否ログも保存しないのであれば、 ccs-auditd は不要です。

本番運用開始後にポリシーの編集を行わないのであれば findtemp と loadpolicy は不要です。本番運用開始後にポリシーの編集を行う場合は findtemp と loadpolicy と ccs-queryd と ld-watch があると便利です。

sortpolicy は ccs-auditd で取得したログを圧縮するためのものですが、 TOMOYO カーネルで動作中のホストでなくても動作します。 ccs-auditd で取得したログを定期的に他のホストへ移動させてから、 sortpolicy で圧縮すこともできます。 ccs-auditd を使わない場合は sortpolicy も不要です。

setlevel の動作は /bin/sh や /bin/cat でも代用できます。例えば setlevel MAC_FOR_FILE=3 は echo MAC_FOR_FILE=3 > /proc/ccs/status や echo MAC_FOR_FILE=3 | cat > /proc/ccs/status と同等です。 TOMOYO Linux はポリシーを変更できるプログラムを /root/security/manager.txt に記述されたプログラムに限定しています。 /bin/sh や /bin/cat はいろいろなプログラムから呼ばれるので /root/security/manager.txt に記述すると不意にポリシーを変更される危険があるため、 /root/ccstools/setlevel というプログラムを用意しています。
busybox を /root/security/manager.txt に指定するのは危険です。とりあえずは setlevel を使うようにしてください。

> buildrootがすべて勝手にやってしまいます。
なるほど・・・使ったこと無いのでちょっと分かりません。(^^;

hshinjihshinji 2006/05/22 06:57 PANDAさん、アドバイスありがとうございます。

>組み込み系で ncurses と readline ライブラリがサポートされているかどうか心配でしたが大丈夫でしたか?
editpolicyではncursesが必要でしたので、自動的にncursesパッケージを選択するようにしましたが、readlineは入れていません。(readline必要なのはfalshでは?)

今は、buildrootでTOMOYOを選択すると、ccs-auditd、 indtemp、savepolicy、sortpolicy、editpolicy、loadpolicy、setlevelの7つを自動的に入れていますが、menuconfig時点で選択可能にしようと思います。

haradaharada 2006/07/01 09:46 原田です。こんにちは(ご無沙汰しています)。このページをTOMOYO Linuxリンク集に登録したいのですがよろしいでしょうか?

http://tomoyo.sourceforge.jp/tomoyo-links.html

hshinjihshinji 2006/07/03 02:18 もちろんOKです。
でも最近LIDSもTOMOYOもはかどってないので申し訳ないですが・・・