【レポート】

SELinuxにみるセキュアOSの現在

2 SELinuxの基本的な機能

2/6

では、SELinuxの3種類のアクセス制御の概要を、それぞれ簡潔に紹介しよう。

TE

従来のLinuxでは、動作するプロセスはそれぞれを実行するユーザの権限でファイルなどのリソースにアクセスする。つまり、各プロセスに対しても、オーナー、グループとパーミッションに基づいたおおざっぱな権限制御しか行えなかったわけだ。これに対しSELinuxでは「TE(Type Enforcement)」という機構が用意され、より細かい制御が行えるようになっている。TEでは、プロセスには「ドメイン」、ファイルなどのリソースには「タイプ」という「ラベル」が付与される。また、各リソースは、ファイルやディレクトリ、ソケットなどの「オブジェクト・タイプ」毎に「アクセス・ベクタ」が割り当てられる。アクセス・ベクタは、リソースに対して行える操作の種類である。例えば、ファイルを表すオブジェクト・タイプ"file"には、"read"、"write"、"lock"などのアクセス・ベクタが割り当てられている。SELinuxでは、ドメイン毎にタイプに対して許可されるアクセス・ベクタを、ポリシとして設定できる。つまり、httpdプロセスやsendmailプロセスが、どのファイルを読み書きできるのか、どのデバイスにアクセスできるのか、といった個別の設定を詳細に行えるのだ。これによって、各プロセスを必要最低限の権限で動作させることが可能になる。

RBAC

プロセスからリソースへのアクセス権限を制御するTEに対し、「RBAC(Role Based Access Control」はユーザのリソースへのアクセスを制限する機構だ。ユーザにはそれぞれ、管理者「sysadm_r」や一般ユーザ「user_r」といった「ロール」を割り当て、各ロールには最低限必要な操作だけが可能なようにポリシを設定し、リソースへのアクセスを許可する。つまり、RBACによって、rootも実質的には他のユーザと同じく非常に限定された許可しか与えられなくなるのだ。たとえクラッカーがroot権限を奪取しても、選択できるロールの範囲でしか攻撃を加えられないため、大幅にリスクを減らすことが可能になる。

MAC

Linuxをはじめとする一般的なUNIX系OSの権限制御、つまりファイルオーナー、グループとパーミッションによる管理方法は「DAC (Discretionary Access Control) - 任意アクセス制御」と呼ばれる。DACでは、自分があるファイルの所有者であれば、そのファイルに対する各種許可を自由に設定できる。これは、各ユーザにとって利便性が高い反面、ホストの管理者の目の届かないところで、人為的なセキュリティホールを生む原因にもなっていた。

これに対し、SELinuxは「MAC (Mandatory Access Control) - 強制アクセス制御」機能を提供する。MACでは、ポリシ・ファイルに記述された設定に基づいて、TE、RBAC等のアクセス制御を、全てのユーザとプロセスに例外なく強制する。ポリシ・ファイルの設定を行えるのは、限定されたシステム管理者だけだ。つまり、システム管理者によるアクセス制御の集中管理が、より高度に行えるのだ。
 
また、SELinuxにはプロセスのアクセス制御に関連して「ドメイン遷移」という機能もある。この機能は、親プロセスが子プロセスを生成する場合に、子プロセスに親プロセスとは異なる「ドメイン」を割り当てるものだ。これによって、子プロセスの生成を繰り返しながら動作する複雑なサーバプロセスに対しても、きめ細かい権限制御が可能になる。

2/6

インデックス

目次
(1) SELinuxの概要と必要性
(2) SELinuxの基本的な機能
(3) SELinux設定の実例 - FC2で基本設定
(4) SELinux設定の実例 - 設定の確認
(5) SELinuixを使用してApacheを運用
(6) SELinuxの可能性

もっと見る



人気記事

一覧

イチオシ記事

新着記事