SELinux 【Security-Enhanced Linux】
概要
SELinux(Security-Enhanced Linux)とは、Linuxカーネルに強制アクセス制御(MAC:Mandatory Access Control)機能を追加し、セキュリティを高める拡張モジュール。カーネルに組み込まれており、管理者の操作で有効と無効と切り替えることができる。通常のLinuxでは他のUNIX系OSと同じく、ユーザーやグループを単位にファイルやディレクトリへの読み取り、書き込み、実行などの権限を与えてアクセス制御を行う。「root」(ルート)という組み込みの管理者アカウントが万能の権限を持っているため、攻撃者がroot権限を奪うと何でもできてしまうことがしばしば問題となる。
SELinuxでは、アクセスの対象となるシステム上の資源(オブジェクト)と、アクセスしようとする主体(サブジェクト)の双方に独自のラベルを付与することができ、どのような状況で、どの主体が、どの対象に、どの権限でアクセス可能かを事細かに指定することができる。
これにより、例えばWebサーバのhttpdプロセスを経由してrootが乗っ取られてもhttpdにあらかじめ許可された範囲の資源にしかアクセスできないようにしたり、rootユーザーの権限を縮小して複数のユーザーに分散するといったアクセス制御が可能となる。
SELinuxではシステムに適用されるルールの集合を「ポリシー」と呼んでおり、複数のアクセス制御方式が用意されている。このうち、プロセスなどのアクセス制御には「TE」(Type Enforcement)が、root権限の制限などには「RBAC」(Role-Based Access Control:ロールベースアクセス制御)が用いられる。
他にも、コンテナなど一定の範囲内に一括適用する「MCS」(Multi-Category Security)、政府機関や軍事システムなどで厳格な制御を行う場合に用いられる「MLS」(Multi-Level Security)といった方式も用意されている。
SELinuxには1990年代に米国家安全保障局(NSA)が行っていたOSの安全性に関する研究開発の結果が反映されており、米レッドハット(Red Hat)社などの協力により2000年に初版が公開された。GPL(GNU General Public License)に基づいてオープンソースとして公開されており、Linux 2.6以降のカーネルに標準で採用されている。CentOSなど初期状態で有効に設定されているディストリビューションもある。