SELinux

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

SELinux(Security-Enhanced Linux : エスイーリナックス)は、アメリカ国家安全保障局GPL下で提供しているLinuxカーネル強制アクセス制御 (MAC)機能を付加するモジュールの名称。名前から勘違いされることが多いが Linuxディストリビューションの一つではない。

概要[編集]

SELinuxは1992年アメリカ国家安全保障局が主体となってFlukeというOS上におけるMAC機能の研究のために開発された。MAC機能はセキュリティの高いOSの提供を可能にするが、主にMulti Level Securityと呼ばれる機能で提供されている。この機能ではアクセスする対象(サブジェクト)全てに階層化された権限が与えられ、またアクセスされる対象(オブジェクト)にも全て階層化された情報の重要度に応じたラベルを付加することによってアクセスの制御を行うもので、柔軟に実装するには複雑なシステムになってしまうという欠点があった。

SELinuxではこの問題点を解決するためにFlaskというベースアーキテクチャを開発し、Flask上でのセキュリティポリシー言語を記述することにより、あらゆるセキュリティモデルに対して柔軟に対応できるように設計された。またセキュリティポリシー言語とセキュリティチェックの仕組みはそれぞれ独立しており、ポリシーがアーキテクチャに制約されないという特徴がある。

2000年12月22日に一般に公開され、2003年8月13日Linuxカーネル2.6で追加された新機能であるLinux Security Modules (LSM) における拡張モジュールとしてメインライン化されている。

SELinux の内容[編集]

従来の Linux(もっと広くいえばUNIX全体)のシステムでは、ディレクトリやファイルといったリソースに対するアクセス制限は各ファイルに割り当てられているパーミッションに基づいている。

このパーミッションは「オーナー」、「グループ」、「その他のユーザ」に対してそれぞれ「読み込み」、「書き込み」、「実行」の許可を設定するものであり、これらのパーミッションを「無視して」アクセス可能なユーザとして root(スーパーユーザー) がある。 すなわち全ての権限が root に集中しているといえる。このため一度 root のパスワードが漏洩するとシステムに致命的な被害を及ぼすという欠点がある。

SELinux はこのことに注目しセキュリティの対象に応じてHTTPFTPといったプロセスごとにアクセス制限をかける Type Enforcement (TE)と、rootも含む全てのユーザに関して制限をかけるロールベースアクセス制御(RBAC)などで制御し、rootに権限が集中することを防ぐことでセキュリティの高いシステムの構築の提供を目的としている。

TE[編集]

TE では全てのプロセスに対して「ドメイン」と呼ばれるラベルを付加する。またリソースに対しても同じく「タイプ」と呼ばれるラベルを付与する。さらに各リソースには「アクセス・ベクタ」が割り当てられる。アクセス・ベクタとは「読み込み」、「書き込み」といったリソースに対して行える操作の種類のことである。 これにより各ドメインとタイプに対して許可されるアクセス・ベクタを、セキュリティーポリシーとして設定可能にしている。

RBAC[編集]

RBAC は「ロール」と呼ばれるいくつかのドメインを束ねたものを設定し、それをユーザに付与する仕組みである。ユーザは付与されたロール内のドメインの権限でのみファイルにアクセス可能である。この機能により各ユーザ毎に細かく権限を付与、制限することが可能である。このため例えば Web管理者には Web管理に必要なファイルのみにアクセス可能にする、という風にユーザに応じて権限の役割分担が行える。このことにより仮にあるユーザのパスワードが漏洩しても、被害を受けるのはそのユーザが持つ権限に対してのみであり、被害を最小限に押さえることができる。

関連項目[編集]

外部リンク[編集]