TOP情報セキュリティ> LIDSの歴史
LIDS
なぜなにLIDS〜シンプル・セキュアOS〜

歴史と機能と設定と

著者:日本SELinuxユーザ会 LIDS支部  面 和毅   2007/6/26
1   2  3  次のページ
LIDSの歴史

   LIDSはXie Huangang氏とPhilippe Biondi氏によって開発されたフリーのセキュアOSモジュールです。最初のバージョンは1999年に、つまりSELinuxが公開される以前にリリースされました。実はLIDSは、セキュアOSの中では意外に歴史の長いものなのです。

   LIDSはセキュアOSの特徴として以下の2つを備えています。
  • 強制アクセス制御(Mandantory Access Control:MAC)
  • 最小特権

表1:セキュアOSの特徴

   この2つの特徴を次の2つの機能によって実現しています。

  • ACLベースのMAC
  • Linuxケーパビリティ

表2:LIDSがセキュアOSを実現するための機能

   リリース後も機能拡張と開発が進み、現在では以下の2つの系列で開発が進められています。

  • LIDS-1系列(2.4カーネル)
  • LIDS-2系列(2.6カーネル:LSM対応版)

表3:2系列あるLIDS

   昨年末からは開発が停滞していましたが、2007年の5月にLIDS-2系列の最新バージョンであるlids-2.2.3rc1-2.6.21がリリースされ、さらに開発が進んでいます。


LIDSの特徴

   続いて、LIDSが持つ以下の特徴について解説していきます。


設定が直観的

   LIDSは「設定が直観的」なことが特徴としてあげられます。

   LIDSの設定方法は、例えば「プログラムAがファイルBやディレクトリCにアクセスした時の権限はDである」という表記で、「ACL(Access Control List:アクセス制御リスト)を記述していく方法を取っています。このため、ファイルにアクセス可能なプログラムを制限したい際に、非常に簡単に設定を行うことができます。

   また、LIDSはそのシンプルさが特徴となっている半面、SELinuxをはじめとしたその他のセキュアOSに比べ、セキュリティの粒度が荒い状態になっています。アクセスを制限できる対象も、今の所プロセスに対するファイル/ディレクトリへの権限操作とケーパビリティ、さらにネットワーク機能の一部の制限だけになっており、SELinuxのようにセマフォや共有メモリに対してのアクセス制御を行うことはできません。また、RBACによるユーザ管理なども行わない形になっています。

   しかし、特定の用途に限定してセキュリティの担保を行いたい場合には、充分な機能を備えており、さらに設定方法が直観的で簡単だという点は、複雑なセキュアOSの機能をOFFにしたがるユーザを対象として考えた場合にはメリットとなるのではないかと思います。

   また、LIDSはこのような簡便な機能のみを実装しているためソースファイルが非常に短くなっています。この点は、セキュアOSの動作や実装をカーネルレベルでみてみたいという方々には、第一歩として非常に役立つと思います。


デフォルトの権限が「ACCEPT」

   権限の設定方法に関しては、通常のセキュアOSでは以下の2つのアプローチが考えられます。

  1. 最初に厳しくしておいて、必要な権限を追加する
  2. 最初に緩やかにしておいて、できることを制限して行く

表4:セキュアOSの権限設定アプローチ

   SELinuxなどは前者を、LIDSは後者を採用しています。このことから、セキュリティの本質論からいえば「甘い」セキュリティとなりますが、「このフォルダだけ書き込み不可能にする」などといった、特定の用途に使用したい場合には簡単に設定を行うことができるため便利です。

   もちろんLIDSの場合でも、後述する設定方法によって「最初に/以下をすべてDENYにしておく」とすることで、セキュリティを強固にできます。また、TDE/Sandboxingという機能を用いることによって、特定のプログラムに対してデフォルトを「DENY」にすることも可能です。なおこの機能は、現在LIDS-1系列のみに実装されており、LIDS-2系列では今後実装する予定です。


LIDSならではの機能

   さらにLIDSには、他のセキュアOSにない機能がいくつか搭載されています。その1つがACLに「ステート」という概念を導入していることです。このステート機能とは、システム全体の状態を以下の3つの状態に分け、それぞれに対してACLを設定できるというものです。

  • 起動状態:ブートからloginまで
  • 運用状態:login以降
  • シャットダウン状態:lidsadmコマンドで状態を変更してからシステムが停止するまで

表5:ステート機能で設定できる状態

   例えばシステム起動時とシャットダウン時には、すべてのサービスに対して「/var/run/*.pid」というファイルが書き込めるように設定しておき、通常運用中にはREADONLYにしておくということが可能です。この機能を使うことで、より適切な権限を設定することが可能になります。

   さらに「NF_MARK」という機能では「iptables」や「iproute2」と同じように、ソケット作成時にMARK値を設定することができます。これを使うと、LIDSとiproute2を用いて各プログラムごとにネットワークのルーティングを変更することが可能となります。なおこの機能についてもLIDS-1系列のみ実装済みで、LIDS-2系列では今後実装する予定です。

1   2  3  次のページ


日本SELinuxユーザ会 LIDS支部 面 和毅
著者プロフィール
日本SELinuxユーザ会 LIDS支部    面 和毅
1997年よりサーバ構築およびセキュリティ全般をあつかう仕事に従事し、Linuxを触りはじめる。現在LIDSの布教活動に力を入れており、SELinuxユーザ会内でLIDS支部を立ち上げている。活動として、最新バージョンのLIDSの開発と、LIDSを用いたシステム構築の紹介を行っている。


INDEX
歴史と機能と設定と
LIDSの歴史
  LIDSの導入方法
  ケーパビリティを設定する場合