Security-Enhanced Linux

Security-Enhanced Linux (SELinux) は、アメリカ国家安全保障局 (NSA) がGPL下で提供している、Linuxのカーネルに強制アクセス制御 (MAC) 機能を付加するモジュールの名称。名前から勘違いされることが多いが、Linuxディストリビューションの一つではない。
概要.
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と並んで、対応できる技術者の育成が課題となっている。