Fedora Core 5でのSELinuxの機能や使い方を,これまでSELinuxを使ったことがない人に向けて分かりやすく解説する。今回は,新たに組み込まれたアクセス制御機能「MCS」を紹介する。

 Fedora Core 5以降のSELinuxには,新たなアクセス制御機能「MCS(Multi Category Security)」が組み込まれている。今回は,このMCSの基本を説明する。

ログイン・ユーザーの権限が問題に

 MCSが登場した背景には,targetedポリシーにおける,ログイン・ユーザーのセキュリティ上の問題がある。targetedポリシーでは,ログイン・ユーザーのシェルは,「unconfined_t」というドメインで動作する。unconfined_tドメインは,SELinuxのアクセス制御を極力受けない*1ように設定されたドメインだ。一般ユーザーでログインした人が,セキュリティ・ホールを利用して(unconfined_tドメインのまま)root権限に昇格したとする。こうなると,SELinuxによる制限を受けないため,システムに対してやりたい放題が可能だ。

 こうした問題を解決するために,SELinuxには,「RBAC(Role Based Access Control)」というアクセス制御機能が用意されている。このRBACのアクセス制御を生かすには,strictポリシーを使う必要があった。strictポリシーの設定は非常に難しいことからあまり利用されず,RBACも有効活用されていなかった。

 そこで,もっと簡単に,ログイン・ユーザーの権限をコントロールするために設けられたのがMCSである。

ユーザーやファイルをカテゴリで分類

 MCSは,ユーザーやファイルに「カテゴリ」と呼ばれるラベルを付与して行うアクセス制御だ。カテゴリとは,ユーザーやファイルの「所属」を表すラベルである。例えば,「研究部」「開発部」というカテゴリが考えられる。ユーザー「nakamura」は「研究部」というカテゴリに所属し,ディレクトリ「/home/tanaka/」は「開発部」というカテゴリに所属する,といった具合である。複数のカテゴリに所属することも可能だ。ユーザー「suzuki」は,「研究部」「開発部」「役員」に所属するといった場合である。

 このカテゴリを使ったアクセス制御ルールを一言でまとめると,「ファイルの所属カテゴリすべてに所属したユーザーだけがそのファイルにアクセスできる」となる。

 具体例とともに見ていこう。

 ユーザーのnakamuraとsuzuki,そしてファイル(ディレクトリ)の/home/nakamuraと/home/seihinが,図1のようなカテゴリに所属しているとする。nakamuraは,/home/nakamuraにはアクセスができる。同じカテゴリだからだ。一方,/home/seihinにはアクセスができない。なぜなら,/home/seihinが所属するカテゴリは「研究部,開発部」であり,ユーザーがアクセスするには研究部と開発部の両方のカテゴリに所属している必要があるためだ。nakamuraは研究部にしか所属しておらず,/home/seihinにはアクセスができない。もう一人のsuzukiのカテゴリは,「研究部,開発部,役員」である。従って,/home/seihinへのアクセスが可能だ。

図1●MCSによるアクセス制御の例
図1●MCSによるアクセス制御の例
[画像のクリックで拡大表示]

SELinuxにおけるMCS

 MCSの概要が分かったところで,SELinuxでの使い方を具体的に説明しよう。

 SELinuxのMCSでは,カテゴリの名前はあらかじめ決められている。Fedora Core 5では,「c0,c1,c2...c255」という256種類の名前が使える。Fedora Core 6では,c1023までの1024種類の名前が使える。これらの名前は意味が分かりにくいため,別名を付けることも可能だ。別名については後述する。また,表1のように,複数のカテゴリに所属させるための表記方法も決められている。

表1●複数カテゴリの指定方法
表1●複数カテゴリの指定方法
[画像のクリックで拡大表示]