第7回 Multi Level Securityでより厳密なポリシーを実現する

古田 真己
サイオステクノロジー株式会社
インフラストラクチャービジネスユニット
Linuxテクノロジー部
OSSテクノロジーグループ
2006/10/21

 MLSの実際

 MLS(strict-mls)が有効になったFC6T3で、以下のような状態を確認してみましょう。

●システムへのログイン

FC6T3でログインすると以下のように表示されるでしょう。

Fedora Core release 5.92 (FC6 Test3)
Kernel 2.6.17-1.2630.fc6 on an i686

localhost login: root
Passwd: ********
Last login: Mon Oct 2 18:07:19 from localhost.localdomain
-bash: /root/.bash_profile: Permission denied
-bash-3.1#
図6 MLSシステムへのログイン

 /root/.bash_profileが読めませんというエラーが出ています。取りあえず先に進みましょう。

●自分のセキュリティコンテキスト

 次に、自分のセキュリティコンテキストを確認します。

-bash-3.1# id -Z
root:staff_r:staff_t:SystemLow-SystemHigh
図7 セキュリティコンテキストの確認

 最初は‘root:staff_r:staff_t’というSELinuxのコンテキストでログインします。まず、以下のようにしてこれからの作業に必要なセキュリティコンテキストを持つロールにスイッチしてください。

-bash-3.1# newrole -r sysadm_r
Authenticating root.
Password: ******** ←rootのパスワードを入力します
[root@localhost ~]# id -Z
root:sysadm_r:sysadm_t:SystemLow-SystemHigh
図8 ロールの変更

 これで、現在のrootユーザーで作業できるようになりました。この作業が必要になるのはMLSがStrictポリシーをベースにしているからです。

ポリシーの種類
Strict
Targeted
主な開発元/開発までの経緯 NSA(米国家安全保障局)と民間が開発・研究 Red Hatとコミュニティが使いやすさを重視して開発
SELinuxによる保護の対象 全システム(すべてのアプリケーションとすべてのユーザー) 攻撃されやすい、またはシステムに重要な特定のサービス
SELinuxでの運用上の差異 全ユーザーにロールがあり、ロールごとに権限が設定される 従来どおりの運用が可能
図9 StrictポリシーとTargetedポリシーの運用上の違い

このポリシーはNSA(国家安全保障局)とSCC(Secure Computing Corporation)の開発研究を起源としている。SELinux本来の「デフォルト拒否」のポリシーを提供し、すべてのアクセスは厳しく制限される
図10 Strict(完全なSELinux)

Red Hatとコミュニティの協力で作られた。エッジサービスを提供するDaemonに対してSELinuxを、その他のアプリケーションには疑似的な「デフォルト許可」環境を提供する。Red Hat Enterprise Linux 4はTargetedポリシーがデフォルトである
図11 Targeted(SELinux対応サービスが付属のLinux)

 さらに従来のStrictポリシーのロールに加え、以下のようなロールの細分化が行われています。

ロールの種類
ロールの役割
sysadm_r
SELinuxとシステム監査(Audit)以外のすべての管理を行うことができる
secadm_r
(新規追加)
SELinuxに関する操作とポリシーに対する操作のみができる
auditadm_r
(新規追加)
システム監査(Audit)に対する操作のみができる
staff_r
sysadm_r、secadm_r、auditadm_rのロールにスイッチすることができる。そのほかはuser_rと同じ
user_r
デフォルトのユーザー。セキュリティ上重要なアプリケーションやデータに対する操作はできない
図12 MLSのロールの種類

●MLSポリシーの確認

  次に、MLSポリシーの構成を確認してみましょう。FC6T3はReferenceポリシーを採用しています。つまり、ポリシーのファイル構成としてはベースモジュール(base.pp)と各アプリケーション別のポリシーモジュールになりますが、実際に確認すると以下のようになっています。

[root@localhost ~]# newrole -r secadm_r ←ポリシーを取り扱うのでsecadm_rにスイッチする
bash: /root/.bash_profile: Permission denied
bash-3.1# id -Z
root:secadm_r:secadm_t:SystemLow-SystemHigh
bash-3.1# cd /etc/selinux/mls/ ←ポリシーディレクトリに移動する
bash-3.1# ls -Z
drwxr-xr-x root root system_u:object_r:default_context_t:SystemLow contexts
drwxr-xr-x root root system_u:object_r:selinux_config_t:SystemLow modules
drwxr-xr-x root root system_u:object_r:policy_config_t:SystemHigh policy
-rw-r--r-- root root system_u:object_r:selinux_config_t:SystemLow setrans.conf
drwxr-xr-x root root system_u:object_r:selinux_config_t:SystemHigh seusers
drwxr-xr-x root root system_u:object_r:selinux_config_t:SystemLow src
bash-3.1# find . -type f -name '*.pp' ←ポリシーモジュールを検索する
./modules/active/base.pp ←base.ppモジュールだけが見つかった
bash-3.1#
図13 MLSポリシーの確認手順

 このように、FC6T3のMLSではFedora Core 5(FC5)と同じく、ベースモジュール(base.pp)しか存在しません。現状のMLSポリシーでは、全アプリケーション用の設定がベースポリシーの中に集約されています。【注2】

【注2】
Strict(strict-mcs)ポリシーだと、アプリケーションごとにポリシーモジュールが分けてコンパイルされており、その数は全部で145個(ベースポリシーを含む)もあります。
bash-3.1# cd /etc/selinux/strict/
bash-3.1# find . -type f -name '*.pp'
./modules/active/base.pp
./modules/active/modules/dhcp.pp
./modules/active/modules/arpwatch.pp
./modules/active/modules/daemontools.pp
: (中略)
./modules/active/modules/cpucontrol.pp
./modules/active/modules/pcmcia.pp
./modules/active/modules/pegasus.pp
./modules/active/modules/certwatch.pp
図14 (参考)Strict(strict-mcs)ポリシーの構成

 ところで、先ほどの図13ではsecadm_rに切り替えて作業を行いました。これをsysadm_rのまま実行すると、例えば‘ls -Z’を実行する部分では以下のようになります。

[root@localhost ~]# cd /etc/selinux/mls/
[root@localhost ~]# ls -Z
drwxr-xr-x root root system_u:object_r:default_context_t:SystemLow contexts
drwxr-xr-x root root system_u:object_r:selinux_config_t:SystemLow modules
?--------- ?  ?        policy ←ディレクトリの情報が表示されていない
-rw-r--r-- root root system_u:object_r:selinux_config_t:SystemLow setrans.conf
?--------- ?  ?        seusers ←ファイルの情報が表示されていない
drwxr-xr-x root root system_u:object_r:selinux_config_t:SystemLow src
[root@localhost ~]#
図15 (参考)sysadm_rロールで/etc/selinux/mlsを見る

 上記のように、policyディレクトリとseusersファイルをstat()する権限がないため、何も表示されていません。/etc/selinux/mls/policyディレクトリはシステムで使用するポリシーを格納するディレクトリ、seusersはLinuxのユーザーとSELinux上のユーザーのマッピングを記述してあるファイルで、それぞれセキュリティ管理者(secadm_r)にしか公開されません。

●ポリシーディレクトリについて

/etc/selinux/mlsディレクトリ以下のファイルについて、ここで簡単に説明します。このディレクトリ配下には、セキュリティポリシーとシステムをコントロールするためのファイルがあります。

ファイル/ディレクトリ名
役割
contexts [dir]
システムデフォルトのセキュリティコンテキストファイルがあるディレクトリ
modules [dir]
アプリケーションごとのポリシーモジュールがあるディレクトリ。ポリシーモジュールは管理者が直接扱わず、semanage、semoduleのコマンドで操作する
policy [dir]
カーネルで使われるポリシーファイルがあるディレクトリ。ポリシーファイルは‘policy.[バージョンの数字]’の形式のファイル
seusers [file]
SELinuxのユーザーとLinuxのユーザーの対応関係を記述するファイル。MLSとMCSで使用するカテゴリとセキュリティレベルのデフォルトとクリアランスも記述されている
setrans.conf [file]
前回のMCSの回でも触れた、カテゴリとセキュリティレベルに対する分かりやすい翻訳(トランスレーション名)が記述されたファイル。翻訳された名前はidコマンドやpsコマンド、lsコマンドなどで使用される
図16 /etc/selinux/(ポリシー名=mls/strict/targeted)以下のファイルとディレクトリの説明

 さらにこの下の/etc/selinux/mls/contextsディレクトリ以下のファイルについても説明します。

ファイル/ディレクトリ名
役割
customizable_types [file]
restoreconコマンドで変更されないセキュリティコンテキストが記述されている
dbus_contexts [file]
DBUS経由のIPCを使用する各アプリケーション名とそれに対応するセキュリティコンテキストのマッピングが記述される。
default_contexts [file]
ユーザー認証アプリケーション(login、ssh、suなど)と認証後のセキュリティコンテキストのデフォルトが記述されている
default_type [file]
各ロールに対するデフォルトのタイプ(ドメイン)が記述されている
failsafe_contexts [file]
フェイルセーフ用のセキュリティコンテキストが記述されている
files [dir]
ファイルシステム用のセキュリティコンテキスト(ファイルコンテキスト)が記述されたファイル群があるディレクトリ
initrc_contexts [file]
initスクリプト用のセキュリティコンテキストが記述されている
netfilter_contexts [file]
iptablesでパケットのsecmarkにセキュリティコンテキストを付与するためのルールが記述されている
removable_contexts [file]
リムーバブルデバイス用のセキュリティコンテキストが記述されている
userhelper_contexts [file]
SELinuxのユーザーとLinuxのユーザーの対応関係を記述するファイル
図17 /etc/selinux/(ポリシー名=mls/strict/targeted)/contexts以下のファイルとディレクトリの説明

 MLSの特徴をつかむ

 今回はMLSの概念と、FC6T3を使用したシステムのセットアップ、そしてポリシーのファイル構成について触れました。

  • MLSはMCSのスーパーセットで、軍事/国防向けの強固なセキュリティを提供する
  • SELinuxのMLSはStrict-MLSである。従って、オペレーションにはロールの概念も必要になる
  • MLSでは使用できるロールが素のStrictと比較して2つ追加されており、sysadm_rの権限はさらに分割された

 次回はMLSでのオペレーションの続きと、ポリシーソースのインストールと解析について触れたいと考えています。

2/2
 

Index
Multi Level Securityでより厳密なポリシーを実現する
  Page1
MLS〜国防/軍隊向けのセキュリティ〜
MLSの記法
MLSとMCSは何が違うのか
MLSを使う
MLSを設定するための準備
Page2
MLSの実際
MLSの特徴をつかむ


Profile
古田 真己(ふるた まさき)

サイオステクノロジー株式会社
インフラストラクチャービジネスユニット Linuxテクノロジー部
OSSテクノロジーグループ

 学生時代にUNIXマシン欲しさ、触りたさに秋葉原へ通い詰める。秋葉原でAT互換機や中古UNIXマシンの販売などを経て、IT業界に転職。その後Linuxのエンタープライズ分野での性能評価や、構築案件などを経験し、2004年にテンアートニ(現・サイオステクノロジー)入社。RedHat Linuxのサポート業務、構築案件に取り組んできた。

 現在はサイオステクノロジーでSELinuxの調査・研究、ビジネスでの普及活動に注力している。

Security&Trust記事一覧


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間