Info: Version 1.7.x is available.

English Page

# TOMOYO Linuxメンテナンス手順

Last modified: $Date: 2011-07-01 13:55:23 +0900 (Fri, 01 Jul 2011) $

# パッケージのアップデートについて

システムの振る舞いをポリシーにより制限しているため、パッケージのアップデートに伴いポリシーの更新が必要になる場合があります。

以下のいずれかの場合に、ポリシーの更新が必要になります。

- ファイルのパス名が変化した場合
- ファイルの依存関係が変化した場合
- 必要なアクセス許可が増えた場合

学習モードを使ってポリシーを最初から再取得するのが理想です。しかし、現実には、一度強制モードでの運用を開始したシステムを強制モード以外に変更することは困難です。ドメイン単位で強制モードにするかどうかを指定できますが、強制モードではないドメインに属しているアプリケーションの制御を奪われたら意味がありません。例えば、 http サーバのアクセス許可を再取得するために http サーバだけを学習モードにするだけでも、システム全体が無防備になってしまうわけです。そのため、 TOMOYO Linux では、強制モードのまま、パッケージのアップデートとポリシーの修正を行います。

TOMOYO Linux には、強制モードのままポリシーの修正を行うためのツールが付属しています。これらのツールを使うことで、軽微な変更ならば、ポリシーを最初から再取得することなくシステムの運用を継続できます。ただし、これらのツールは、全てのケースに対応できるとは限らず、最適なポリシーであることを保証するものではありません。

このページで説明している手順は、 TOMOYO Linux 1.6.2 以降のものです。 TOMOYO Linux 1.6.2 未満での手順については、こちらを参照してください。

# デモ

アップデート手順を解説した デモムービーがあります。

このムービーを観るには VMware 用のコーデックが必要です。 Windows 環境の場合、 こちらからダウンロードできます。

# 手順

まず、コンソールまたはターミナルを開いて、以下のコマンドを起動してください。

/usr/sbin/ccs-queryd

ccs-queryd は、 /etc/ld.so.cache に登録されている共有ライブラリファイルの情報が変更された場合に、共有ライブラリのパス名を「無条件に読み込み可能なファイル」として例外ポリシーに追加します。以下の例は、 /lib/libnss_hesiod-2.5.so というパス名が作成されて /etc/ld.so.cache に登録されたので例外ポリシーに追加したことを示しています。

The pathname /lib/libnss_hesiod-2.5.so was created. Appended to globally readable file.

また、「無条件に読み込み可能なファイル」として例外ポリシーに登録されているパス名が消滅した場合、例外ポリシーから削除します。以下の例は、/lib/libnss_hesiod-2.4.so というパス名が消滅したのでポリシーから削除したことを示しています。

The pathname /lib/libnss_hesiod-2.4.so was deleted. Deleted from globally readable file.

この状態で、パッケージのアップデートを行うためのコマンドを実行します。

yum を使用している環境ならば yum update を、 apt を使用している環境ならば apt-get update および apt-get upgrade を実行します。

パッケージをアップデート中に、デーモンの再起動などでポリシー違反が発生するかもしれません。ポリシー違反が発生した場合、 ccs-queryd に以下のようなプロンプトが表示されます。

#2008-06-18 20:54:37# profile=3 mode=enforcing pid=2546 uid=0 gid=0 euid=0 egid=0 suid=0 sgid=0 fsuid=0 fsgid=0 state[0]=0 state[1]=0 state[2]=0 <kernel> /sbin/mingetty /bin/login /bin/bash /bin/cat allow_read /etc/fstab Allow? ('Y'es/Yes and 'A'ppend to policy/'N'o):

上記の例は、 <kernel> /sbin/mingetty /bin/login /bin/bash /bin/cat というドメインに属しているプロセスが /etc/fstab を読み込みモードでオープンしようとしたが、ポリシーによって拒否されたので、あなたの判断を仰いでいることを示しています。 アクセス要求の妥当性を判断して、アクセスを許可するか否か、ドメイン用ポリシーに追加するか否かを指定してください。 Y を押すと許可、 N を押すと拒否されます。また、 A を押すと編集した上でドメイン用ポリシーに追加することができます。

無条件にアクセス要求を許可しないようにしてください。ポリシー違反の原因がパッケージのアップデートによるものとは限らず、侵入者の攻撃によるものである可能性があるからです。 もし、侵入者の攻撃によって発生したアクセス要求に対してアクセスを許可してしまった場合、侵入されてしまいます。

ccs-queryd が動作している場合、ポリシーによって拒否されたアクセス要求は、あなたが応答するまで保留状態となります。そのため、 ccs-queryd を動作させたままログアウトしないでください。

次に、強制アクセス制御の対象となっているプログラムの動作を確認するために、一通りの操作を試してください。もし、アクセス許可の不足が検出された場合は ccs-queryd に表示されますので、 ccs-queryd の監視を忘れないようにしてください。

なお、 ccs-queryd はメモリ上のポリシーを直接編集します。シャットダウンすると失われてしまいますので、忘れずに ccs-savepolicy を実行してポリシーを保存してください。

/usr/sbin/ccs-savepolicy

以上でパッケージの更新作業は完了です。 ccs-queryd を実行していたコンソールまたはターミナルを閉じてください。