This page is for TOMOYO 2.2 (for Linux 2.6.30 - 2.6.35 kernels). Please jump to this page for TOMOYO 2.3 (for Linux 2.6.36 and later kernels).

English Page

Last modified: $Date: 2024-03-30 20:25:00 +0900 (Sat, 30 Mar 2024) $

第3章:システムの振る舞いを学習

このページでは、 TOMOYO の学習モードの使い方について説明します。


ステップ1:ドメインを作成する

TOMOYO Linux 対応カーネルで再起動したら、 root としてログインしてください。

どのアプリケーションを解析/保護の対象とするかを決めてください。

以下の手順は CentOS 5 環境で Apache を保護する場合で説明します。

対象となるアプリケーションを開始させます。

[root@tomoyo ~]# service httpd start

TOMOYO のポリシーエディタを実行してください。今回は現在カーネル内に存在しているポリシーを直接編集するので、 /etc/tomoyo/ というコマンドラインオプションを指定していないことに注意してください。

CentOS 5 では、 Apache プログラムパス名は /usr/sbin/httpd です。
矢印キーや Home/End/PageUp/PageDown キーを使ってカーソルをスクロールして、 /usr/sbin/httpd の行を見つけてください。この絵では 416 行目です。

editpolicy-httpd-profile0.png

もし、 /usr/sbin/httpd が initialize_domain キーワードで指定されていた場合、 /usr/sbin/httpd を実行することにより <kernel> /usr/sbin/httpd という名前のドメインが作成されます。もし指定されていなかった場合、実行したドメインの子ドメイン(例えば <kernel> /usr/sbin/mingetty /bin/login /bin/bash ドメインから /usr/sbin/httpd を実行した場合は <kernel> /usr/sbin/mingetty /bin/login /bin/bash /usr/sbin/httpd )が作成されます。この手順書では /usr/sbin/httpd が initialize_domain に指定されている場合で説明します。

s キーを押してから 1 と入力し、 Enter キーを押してください。

editpolicy-httpd-set-profile1.png

/usr/sbin/httpd のプロファイル番号が 1 に変化しました。

editpolicy-httpd-profile1.png

q キーを押してポリシーエディタを終了してください。その後、 tomoyo-pstree コマンドを実行して /usr/sbin/httpd プロセスに対してプロファイル 1 が割り当てられていることを確認してください。

pstree-httpd1.png


ステップ2:必要なアクセス許可を収集する

Apache の起動時/終了時に必要となるアクセス許可を学習させるために、 Apache を再起動します。

[root@tomoyo ~]# service httpd restart

TOMOYO のポリシーエディタを実行し、 /usr/sbin/httpd の行へ移動してください。(あなたやシステムが実行したプログラムによりドメインが追加されることで、行番号が変化しているかもしれません。)

Enter キーを押すと、現在までに収集されたアクセス許可が表示されます。

editpolicy-httpd-acl1.png

q キーを押してポリシーエディタを終了してください。その後、 Apache に対して許可したい操作を全て行ってください。

収集されたアクセス許可はカーネル内のメモリにしか存在しないため、時々ポリシーファイルとしてディスク上に保存することを忘れないでください。システムを再起動した場合、カーネル内のメモリに存在しているアクセス許可は失われます。

現在カーネル内のメモリに存在しているポリシーをディスク上に保存するには、 tomoyo-savepolicy コマンドを利用します。

[root@tomoyo ~]# /usr/sbin/tomoyo-savepolicy

tomoyo-savepolicy コマンドを実行することにより、2個のファイル( exception_policy.conf domain_policy.conf )が /etc/tomoyo/ ディレクトリ内に作成されます。より正確に言うと、これらは作成時刻をファイル名の中に含んだ通常ファイルへのシンボリックリンクとして作成されます。

現在ディスク上に保存されているポリシーをカーネル内のメモリに読み込ませるには、 tomoyo-loadpolicy コマンドを利用します。

[root@tomoyo ~]# /usr/sbin/tomoyo-loadpolicy af

a オプションは2個のファイル( exception_policy.conf domain_policy.conf )を読み込ませることを、 f オプションはディスク上のポリシーを読み込ませる前にカーネル内のポリシーを消去することを意味します。もし f オプションが指定されなかった場合、ディスク上のポリシーが現在カーネル内に存在しているポリシーに追加されます。


ステップ3:収集されたアクセス許可を確認する

Apache に許可したい操作を一通り行ったと判断したら、ポリシーエディタを実行してプロファイル番号を 2 に変更します。 Apache は(例えば /bin/sh /usr/bin/perl /usr/lib/sendmail のような)外部のプログラムを実行したことにより、 Apache に子ドメインや孫ドメインが作成されているかもしれません。 /usr/sbin/httpd のドメインだけでなくその子孫ドメインのプロファイル番号も変更するのを忘れないようにしてください。

対象となるドメインを選択して、 s キーを押し、 2 と入力してから Enter キーを押してください。

editpolicy-httpd-set-profile2.png

/usr/sbin/httpd およびその子孫ドメインのプロファイル番号が 2 に変更されました。

editpolicy-httpd-profile2.png

q キーを押してポリシーエディタを終了してください。その後、 Apache に対して許可したい操作を再度行ってください。

もしプロファイルで TOMOYO_VERBOSE=enabled と設定されている場合(デフォルトでそうなっています)、ポリシーで許可されていない操作を行うと TOMOYO-WARNING: というメッセージがコンソールに表示されます。

permissive-warning.png

もし、 Apache に対して許可したい操作を全て行っても TOMOYO-WARNING: というメッセージが表示されなくなれば、次のステップへ進んでください。

TOMOYO Linux を使う目的が解析であれば、ここで解析は終了です。

TOMOYO Linux を使う目的が保護であれば、次の章へと進んでください。


目次へ戻る

sflogo.php