【セキュアOS SELinux入門】最終回 SELinuxとLIDSの機能・性能を比較する

 今回は,ITProオープンソース・サイト(当サイト)で紹介している2種類のセキュアOS「SELinux」と「LIDS」の機能・性能の違いを解説する。「Linuxシステムのアクセス制御機能を強化する」という目的は同じだが,アクセス制御のきめ細かさや設定の簡単さなどでは大きな違いがある。システムに適したセキュアOSを導入するために,両セキュアOSの違いを的確に把握しておこう。

両セキュアOSともに強制アクセス制御をサポート

 SELinuxとLIDSはともに,「OSのアクセス制御機能を強化することで,たとえ侵入された場合でも攻撃者に大きな権限を与えずに,事実上攻撃を無力化する」ことを狙って開発されている。

 これを実現するためにSELinuxは,「TE,RBAC,ドメイン遷移」という機能を持つ(SELinux入門第2回参照)。一方LIDSは,「アクセス制御リスト(以下,ACL),ケーパビリティ,カーネルの封印」という機能を持つ(主にLIDS入門第2回参照)。両セキュアOSともに,これらの機能により,「すべてのユーザーとプロセスがアクセス制御を強制される」強制アクセス制御(MAC)を実現しているわけだ。

 細かな機能比較に先立ち,両セキュアOSの機能の対比を示す。LIDSのACLは,「プロセスがアクセスできるファイルを制限する機能」なので,SELinuxのTEに相当する。また,ケーパビリティとカーネルの封印機能は,TEでも同様のことができる。TEにはケーパビリティが含まれるし,カーネルの封印機能はTEのカーネル・モジュールへのアクセス制御機能に相当するからである。

相容れない,アクセス制御のきめ細かさと設定の簡単さ

図1●アクセス制御のきめ細かさと使いやすさが異なる
 それでは,両セキュアOSの差異はいったい何なのか。結論から述べると,違いは,アクセス制御のきめ細かさと設定の簡単さである(図1[拡大表示])。

 一般に,アクセス制御が細かく行えるほどセキュリティは高くなる反面,設定の簡単さに代表される利便性は低くなる。逆に,アクセス制御が粗くしか設定できないほどセキュリティは低くなるものの,簡単に設定できるなど利便性は高くなる。簡潔にまとめると,「細かく設定できるものの,設定に手間がかかる(SELinux)」のか,「設定項目が比較的少ないのでより簡単に設定できる(LIDS)」ということになる。もちろん,両方とも通常のLinuxよりは,はるかにセキュリティ・レベルを高くできる。

アクセス制御のきめ細かさではSELinuxが優れる

 それでは,両セキュアOSを比較してみよう。まずはアクセス制御のきめ細かさを比較する。

(1) 設定対象の豊富さ

 SELinuxの方が,アクセス制御可能なリソース種別やパーミッションの数が豊富であり,よりきめ細かなアクセス制御が可能である。ファイルのパーミッションを例に説明する。LIDSのACLでは,「READ,WRITE,APPEND」という3種類の操作しか制限できない。一方,SELinux(のTE)では,「read(読み込み),write(書き込み),append(追記),create(生成),execute(実行)など17種類に及ぶ操作を制限できる。

(2) ユーザーごとのアクセス制御

 SELinuxのRBACにより,システムを細分化してそのそれぞれに専任の管理者(例えば,Webページ専門の管理者)を設定できる。一方LIDSには,ログイン・ユーザーごとに管理権限を分割して与える仕組みはない。

(3) 権限昇格制御

 SELinuxは,ドメイン遷移の機能により,権限の昇格を制御できる。LIDSにはこのような機能はないため,権限の昇格を利用した攻撃に対する耐性は,SELinuxの方が高い。

 具体例を挙げる。/sbin/passwdプログラムはパスワード・ファイルの読み書き権限を持つ。LIDSでこのプログラムの実行権限を限定しておけば,権限の昇格は行われない。ただし,設定ミスなどにより,ひとたび/sbin/passwdの実行を許してしまうと,パスワード・ファイルの読み書き権限を侵入者に与えてしまう。

 一方SELinuxの場合は,設定ミスなどで/sbin/passwdの実行を許しても,権限の昇格は起こらない。なぜなら権限を昇格するには,/sbin/passwdの実行許可に加えて,ドメイン遷移で明示的に権限昇格を許可しておく必要があるためだ。言わば,2重の防御になっており,SELinuxのほうが権限昇格を利用した攻撃に強いと言える。

(4) 監査ログ

 アクセス制御の結果がきちんと監査ログとして残ることは,侵入の証拠を得るために非常に重要である。SELinuxでは,アクセスが拒否された場合にログが残るほか,アクセスが許可された場合にもログを残せる。一方LIDSでは,アクセスが拒否された場合だけにしかログを残せない。

 このように,機能面では全般的にSELinuxの方がLIDSより優れる。特にユーザーごとのアクセス管理の有無は大きな違いである。

設定の簡単さを中心にした利便性を比較する。

(1) ラベル管理の簡単さ

 SELinuxのTEでは,ファイルとプロセスにそれぞれタイプとドメインを付与(これを「ラベル付け」と呼ぶ)してから,ドメインとタイプに関するアクセス制御を設定する。LIDSの場合は,プロセスの実行ファイル名と,ファイルのパスを直接指定してアクセス制御を設定する。LIDSでは,そもそもラベル付けが必要ないのでより簡単にアクセス制御の設定が行える。

 例えば,「Apache HTTP Server(以下Apache,/usr/sbin/httpd)が,Webページ(/var/www/html)を読み込み可能」という設定を行う場合,SELinuxでは,タイプやドメインを付与してから,アクセス制御を記述するため,下記の(1)〜(3)のような複数の設定を記述する必要がある。一方,LIDSの場合は,(4)のように記述するだけで済む。

(2) 設定項目の簡単さ

 アクセス制御のきめ細かさの比較で解説したように,SELinuxではリソース種別やパーミッションの数が豊富である。その反面,設定項目の種類が多くなり,設定作業が煩雑になりがちである*1

アクセス制御に優れるSELinuxと使いやすいLIDS
システムごとに使い分ける

 こうしてSELinuxとLIDSを機能・性能面で比較してみると,総じて「アクセス制御に優れるSELinuxと使いやすいLIDS」と位置付けられる(表1)。当たり前だが,システムの用途や重要性に応じて,導入するセキュアOSを使い分けるようにしよう。

表1●SELinuxとLIDSのアクセス制御機能の比較
○△×の3段階で機能・性能を評価した。
比較項目 SELinux LIDS
セキュリティ アクセス制御の細かさ(粒度)
ユーザーごとのアクセス制御
×
権限昇格制御
監査ログ
使いやすさ ラベル管理の簡単さ
×
設定項目の簡単さ
×

 ただし,サポート・サービスが必要なシステムでは当面,SELinuxを導入した方が良いと思われる。レッドハットやターボリナックスは,それぞれのサーバー・ディストリビューション(Red Hat Enterprise Linux,Turbolinux Enterprise Server)にSELinuxを組み込むことを発表済みである。また,ノベルも自社のディストリビューション(SUSE Linux Enterprise Server)でのSELinuxのサポートを進めているようだ。

 これらのディストリビューションを利用すれば(SELinuxの設定や運用管理を含んだ)サポート・サービスが期待できる。

 また,日立ソフトウェアエンジニアリング(以下,日立ソフト)のようにSELinuxのサポート・サービスを開始したSIベンダーや,日本高信頼性システムのようにSELinuxの教育サービスを開始したセキュアOSベンダーも登場している。

 さらに,日立ソフトのSELinux関連ツールの開発やNTTデータによるSELinuxの機能拡張,日本総研によるログ監査強化機能の開発など,企業の研究開発も活発である。

 一方LIDSでは,今のところ,こうしたサービスは見当たらない。こうしたことから,少なくとも当面は,サポート・サービスが必要なシステムにおいてはSELinuxを選択した方が無難だろう。

 SELinux入門は今回が最終回である。SELinuxもLIDSもまだ完成されたソフトではなく,改善の余地はまだまだ存在する。お互いの良いところを取り込みながら,改良されていくことを期待する。また,フリーソフトでは特に,ユーザーの要望により改良される場合が多いものである。本連載をきっかけにSELinuxやLIDSを試された際には,是非その結果をユーザーの声としてコミュニティに反映していただければ幸いである。