Security-Enhanced Linux
Security-Enhanced Linux (SELinux) は、アメリカ国家安全保障局 (NSA) がGPL下で提供しているLinuxのカーネルに強制アクセス制御 (MAC) 機能を付加するモジュールの名称。名前から勘違いされることが多いが、Linuxディストリビューションの1つではない。
概要
SELinuxは1992年、NSAが主体となってFlukeというOS上におけるMAC機能の研究のために開発された。MAC機能はセキュリティの高いOSの提供を可能にするが、主にMulti Level Securityと呼ばれる機能で提供されている。この機能ではアクセスする対象(サブジェクト)全てに階層化された権限が与えられ、またアクセスされる対象(オブジェクト)にも全て階層化された情報の重要度に応じたラベルを付加することによってアクセスの制御を行うもので、柔軟に実装するには複雑なシステムになってしまうという欠点があった。
SELinuxではこの問題点を解決するためにFlaskというベースアーキテクチャを開発し、Flask上でのセキュリティポリシー言語を記述することにより、あらゆるセキュリティモデルに対して柔軟に対応できるように設計された。またセキュリティポリシー言語とセキュリティチェックの仕組みはそれぞれ独立しており、ポリシーがアーキテクチャに制約されないという特徴がある。
2000年12月22日に一般に公開され、2003年8月13日にLinuxカーネル2.6で追加された新機能であるLinux Security Modules (LSM) における拡張モジュールとしてメインライン化されている。
内容
従来の Linux(もっと広くいえばUNIX全体)のシステムでは、ディレクトリやファイルといったリソースに対するアクセス制限は各ファイルに割り当てられているパーミッションに基づいている。
このパーミッションは「オーナー」、「グループ」、「その他のユーザ」に対してそれぞれ「読み込み」、「書き込み」、「実行」の許可を設定するものであり、これらのパーミッションを「無視して」アクセス可能なユーザとして root(スーパーユーザー) がある。 すなわち全ての権限が root に集中しているといえる。このため一度 root のパスワードが漏洩するとシステムに致命的な被害を及ぼすという欠点がある。
SELinux はこのことに注目しセキュリティの対象に応じてHTTP、FTPといったプロセスごとにアクセス制限をかける Type Enforcement (TE)と、rootも含む全てのユーザに関して制限をかけるロールベースアクセス制御(RBAC)などで制御し、rootに権限が集中することを防ぐことでセキュリティの高いシステムの構築の提供を目的としている。
TE
TE では全てのプロセスに対して「ドメイン」と呼ばれるラベルを付加する。またリソースに対しても同じく「タイプ」と呼ばれるラベルを付与する。さらに各リソースには「アクセス・ベクタ」が割り当てられる。アクセス・ベクタとは「読み込み」、「書き込み」といったリソースに対して行える操作の種類のことである。 これにより各ドメインとタイプに対して許可されるアクセス・ベクタを、セキュリティーポリシーとして設定可能にしている。
RBAC
RBAC は「ロール」と呼ばれるいくつかのドメインを束ねたものを設定し、それをユーザに付与する仕組みである。ユーザは付与されたロール内のドメインの権限でのみファイルにアクセス可能である。この機能により各ユーザ毎に細かく権限を付与、制限することが可能である。このため例えば Web管理者には Web管理に必要なファイルのみにアクセス可能にする、という風にユーザに応じて権限の役割分担が行える。このことにより仮にあるユーザのパスワードが漏洩しても、被害を受けるのはそのユーザが持つ権限に対してのみであり、被害を最小限に押さえることができる。
日本における普及状況
セキュリティ面から興味を覚えるユーザは多いものの、日本における利用実績は少ない。とりわけ、ほとんどのSI'erやサービスプロバイダにおいては、OSインストール直後にSELinuxを無効化することが通常であり、積極的な対応はしていない。このため、IPv6と並んで対応できる技術者の育成が課題となっている。