第4回 VMwareでLIDSに触れてみよう

面 和毅
サイオステクノロジー株式会社
インフラストラクチャービジネスユニット
Linuxテクノロジー部
OSSテクノロジーグループ
シニアマネージャ
2006/2/23

 前回は、LIDSの特徴の1つである「Linuxカーネルケーパビリティ」について説明しました。これは、プロセスに特権を与えるのではなく、特権を細分化した必要最小限のケーパビリティを与えることで、万が一、脆弱性が悪用されても特権を奪われないようにするものです。

 今回は「ステート」という概念とLIDS-1系列で使用できる「TDE/TPE/Sandbox」を解説する予定でしたが、実際に読者にLIDSを触ってもらう方がよいと思いますので、簡単にステートの概念を説明してから、VMwareイメージの使い方の紹介という内容に変更します。なお、TDE/TPE/Sandboxについては次回に回します。

 セキュリティ強度とシステム動作の相反

 第2回第3回で見てきたように、LIDSではACLとケーパビリティを用いることでシステムを保護しています。これらの保護を厳密に行うことにより、システムを極めて堅牢にすることができる半面、設定しなくてはいけないACLやケーパビリティの数が多くなってしまい、結果としてシステムの使い勝手が悪くなってしまうという問題があります。例を挙げて説明しましょう。

 図1のようにシステムすべてがREADONLYで保護されていると仮定します。プログラムが起動するときに、/tmpディレクトリにテンポラリファイルを作成/消去し、/var/runディレクトリにPIDファイルを作成するとしましょう。第2回で説明したように、この場合にはACLを用いて、特定のプログラムのみが/tmpディレクトリと/var/runディレクトリに書き込めるように設定します。

図1 特権を奪われたプログラムが被害を拡大する

 しかし、そのプログラムが悪用された場合には、/tmpディレクトリや/var/runディレクトリに書き込みを許可してしまうことになり、結果として/tmpディレクトリ以下に悪意のあるバイナリを置かれてしまうなど、全体のセキュリティを下げてしまう可能性があります。

 また、/etc/init.d以下の起動スクリプトをDENYにすることにより、プログラムの不正な起動や停止を妨げることができますが、これも常にDENYにしてしまうと、システムを起動してサービスを立ち上げる際やシステムをシャットダウンする際に、正常な動作ができなくなります。

 このようにシステムのセキュリティ強度を上げようとすると、システムの起動や停止がうまくいかなくなることがあります。しかし、起動や停止がうまくいくような設定をしてしまうと、結果としてセキュリティ強度が弱くなってしまう可能性があります。

 ステートという考え方

 LIDSでは、このような問題に対する解として、ステートを用意しています。これはシステムを、

  • BOOTステート
  • POSTBOOTステート
  • SHUTDOWNステート

の3つのステートに分け、それぞれのステートごとで異なるACL/ケーパビリティを設定できるようにしようというものです。

 システムのステートは、図2のように遷移します。各ステートの説明は以下になります。

図2 システムのステートの遷移

1.BOOTステート

 システムが起動し、LIDSが初期化された状態から「lidsadm -I」コマンド(「カーネルの封印」を行うコマンド)を実行するまでになります。このBOOTステートで、システムで必要とするサービスなどを起動したり、必要なモジュールをロードしたりします。

2.POSTBOOTステート

 カーネルを封印した後のステートです。システムをこのステートにした状態で、通常の運用は行います。カーネルを封印することにより、LKM(Loadable Kernel Module)によるカーネルへのモジュールのロードが一切できなくなります。これにより、LKMを悪用するrootキットの侵入を防ぐことができます。

3.SHUTDOWNステート

 「lidsadm -S -- +SHUTDOWN」コマンドを実行すると、システムがSHUTDOWNステートになります。名前のとおりシステムをこのSHUTDOWNステートにしてから「shutdown」コマンドなどで実際のシステムシャットダウンや再起動を行います。

 これらのステートごとで異なるACL/ケーパビリティを設定できます。先ほどの例では、

  • BOOTステートでは、システムすべてをREADONLYにし、プログラムが/tmpや/var/runディレクトリに書き込みや削除ができるようなACLを設定する
  • POSTBOOTステートでは、システムすべてが例外なくREADONLYになる
  • SHUTDOWNステートでは、システムすべてをREADONLYにし、プログラムが/tmpや/var/runディレクトリに書き込みや削除ができるようなACLを設定する

として、通常運用はPOSTBOOTステートで行うようにすれば、仮に通常運用中にプログラムが悪用されたとしてもシステムに影響を与えられる危険性が少なくなります。

1/3

Index
VMwareでLIDSに触れてみよう
Page1
セキュリティ強度とシステム動作の相反
ステートという考え方
  Page2
VMwareイメージでLIDSを体験しよう
VMwareイメージの使い方
システムの起動からログインまで
設定用スクリプト
  Page3
デモ1:ファイルACLを試してみる
デモ2:プロセスの保護を試してみる
デモ3:プロセスの隠ぺいを試してみる
システムの停止/再起動


Security&Trust記事一覧


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間