Tetsuo Handa
from-****@I-lov*****
2011年 5月 23日 (月) 12:53:37 JST
Toshiharu Harada さんは書きました: > >> コマンドに対してではなく例外ポリシーに対して追加するのが良いと思います。 > >> tomoyo-ld-watch コマンドを実行すると自動的に反映してくれます。 > > tomoyo-ld-watchのオンラインマニュアルはここですね。 > http://tomoyo.sourceforge.jp/2.3/man-pages/tomoyo-ld-watch.html.en > > 読みながら思ったのですが、libcなどの影響度の高いモジュールの > 更新がある場合には、tomoyo-ld-watchを実行して、 > 自動的に修正させるという以外に、ポリシー設定を一度待避しておいて、 > 更新後の環境でinit_policyを実行させ、例外ポリシーの差分を > 手動で反映させる、というような手順は意味がありますでしょうか?>半田さん > (結果としては同じになるかもしれませんが、自分で確認してから > 手動で反映させたいという人がいた場合に) > それで「動作上の問題」が生じないのならそれでも良いと思います。 TOMOYO ではパス名でポリシーを記述するため、ソフトウェアのアップデートなどにより パス名が変化した場合、ポリシーも更新してやる必要があります。 TOMOYO としてはファイルのパス名にバージョン番号を含めないようにしてくれると 嬉しいのですが、 Windows とは異なり Linux ではバージョン番号をパス名に含める ことが慣例になっています。 本番環境と同一内容の試験環境を用意し、試験環境でソフトウェアのアップデートと ポリシーの再作成およびテストをしてから、本番環境でソフトウェアのアップデートと ポリシーの反映を行うことができれば理想です。しかし、現実には試験環境を用意 できないことが多いでしょう。また、一度強制モードでの運用を開始した本番環境を ポリシーの更新のために強制モードを解除してしまうのは、無防備になってしまうため 望ましくありません。そのため、本番環境を強制モードで動作させた状態のままソフト ウェアのアップデートとポリシーの修正を行えるようにすることに苦慮してきました。 TOMOYO 1.1 までは、ポリシーに違反したアクセス要求はすぐに拒否されるようになって いました。しかし、ソフトウェアのアップデートにより突発的なアクセス要求(サーバ プロセスの再起動要求や共有ライブラリのパス名の変化によるポリシー違反)が生じる ことがあるため、更新後の環境で init_policy を実行して手動で反映させようとした ときには既に手遅れである(例えばサーバプロセスを再起動できなかったためログイン できなくなっていたとか、 /bin/sh などのコマンドを実行できなくなって操作不能に 陥っていたとかいう「動作上の問題」が発生する)場合があります。 手遅れになることを避けるために、アクセス要求を対話的に判断できるようにする機能 (およびその機能を使うための ccs-queryd コマンド)が TOMOYO 1.1.1 に追加され ました。また、今回の件のように共有ライブラリのパス名が変化した場合に ccs-queryd で逐一許可していくというのは面倒なので、共有ライブラリのパス名が変化した場合に 自動的に例外ポリシーに反映されるようにするために、 ld-watch コマンド( TOMOYO 1.5.2 で ccs-ld-watch に改名)も TOMOYO 1.1.1 で追加されました。 TOMOYO 1.3 ではドメイン単位で制御モードを切り替えるためのプロファイルが導入 されたため、ログインセッションなどを制御しない限り操作不能に陥ってしまう可能性は ほとんど無くなりました。しかし、それでも手遅れになる可能性は残っています。 ccs-queryd と ccs-ld-watch は TOMOYO 1.1.1 で追加されて以来、別々に存在して いました。しかし、どちらもソフトウェアのアップデート時に実行するものであり、 yum や apt を実行するためのターミナルに加えて、 ccs-queryd と ccs-ld-watch を 実行するために合計3つもターミナルを開かなくてはいけないというのは面倒です。 そのため、 TOMOYO 1.6.2 で ccs-ld-watch の機能は ccs-queryd に包含されるように なり、 yum や apt を実行するためのターミナルと ccs-queryd を実行するための 2つで済むようになりました。 ccs-queryd は TOMOYO 2.3 では tomoyo-queryd コマンドとして提供されています。 ( http://tomoyo.sourceforge.jp/2.3/man-pages/tomoyo-queryd.html.en ) ポリシー違反を対話的に処理したいけれども tomoyo-ld-watch コマンドの機能は 使いたくないという場合には、 tomoyo-queryd を --no-update オプション付きで 実行することで実現できます。 その後、 TOMOYO 1.8 では acl_group 構文をサポートするために ignore_global_allow_read キーワードが廃止されたことに伴い、 ccs-ld-watch が 全ての acl_group に対して自動的に file read を追加してしまうという動作は (せっかく細粒度で共有ライブラリへのアクセスも制限できるようになる acl_group の 価値を損ねるという点で)管理者の意図に反してしまうことから、 ccs-ld-watch を 廃止し、 ccs-queryd からも ccs-ld-watch の機能は削除されました。また、共有 ライブラリは数百個も存在するため、ワイルドカードで指定することにより例外 ポリシーの行数削減を図りました。(ということで、 TOMOYO 2.4 では tomoyo-ld-watch は提供されなくなります。)