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

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

 前回のMulti Category Security(MCS)の続きとして、今回はSELinux Referenceポリシーの新機能であるMulti Level Security(MLS)の取り扱い方を解説したいと思います。

 MLSはMCSと同じく、標準のポリシー(Strict/Targeted)に対するオプションとして導入されます。MCSにおいてはカテゴリ別のアクセスを実現していましたが、今回紹介するMLSはこのカテゴリに加えてさらに上下関係がプラスされます。(第5回の図1と図2を参照してください)

 MLS〜国防/軍隊向けのセキュリティ〜

 SELinuxのMLSは非常に厳密で、それゆえ扱いにくい国防/軍事対応の強固なセキュリティを提供します。詳細は前回のMLSとMCSの比較表をご覧ください。

セキュリティレベルによる情報保護機能
MCS
MLS
機密情報を役職別に持つことを想定しているか?(Sensitivity)
×
機密情報を部署別に持つことを想定しているか?(Categories)
MCSとMLSの住み分け(第6回より)

 MLSの記法

 MLSが適用されたセキュリティコンテキストを次に示します。ハイフンを挟んで左側がデフォルト、右側がクリアランスとなっているのはMCSと同じです。

図1 MLSのセキュリティコンテキスト

 MCSでは左側のデフォルトも右側のクリアランスもs0から始まっていましたが【注1】、MLSではsの次の数字は0〜15の16段階の値を取ります。

 これがMLSで使われるセキュリティレベルと呼ばれるアクセス階層で、s0からs15に向かってだんだんと機密レベルが上昇し、重要度が高いものを示しています。

【注1】
MCSではセキュリティの階層構造がなく、すべてのサブジェクトとオブジェクトはs0のセキュリティレベルで表されます。MCSで区別に用いられるのはカテゴリのみです。
 

 MLSとMCSは何が違うのか

 前回、MCSはMLSのサブセットです、と説明しましたがその内容を示したのが下の図になります。

図2 MLSとMCSとの比較図
MLSのセキュリティレベルをs0に固定し、簡略化したものがMCSである

 MLSを使う

 今回もFedora Core(FC)を使用して説明しますが、FCのデフォルトはTargeted(Targeted-MCS)ポリシーです。そのためMLSを使用するためには、ちょっとした準備が必要です。

 今回はFedora Core 6 Test3(FC6T3)を使用して説明します。インストールはFTPで公開されているFC-6-Test3-i386-DVD.isoを使用しました。GUIのインストーラで起動し、英語のロケール、パッケージグループから‘Office and Productivity’を外したほかは、標準構成で行っており、特に手を加えていません。

 MLSで作業する場合の基本的な注意ですが、SELinuxのMLSはStrictポリシと組み合わせて設定されています。

Targeted(targeted-mcs) いままでのTargetedに加えMCSによるカテゴリでのアクセス制御
Strict(strict-mcs) いままでのStrict+MCSによる制御
MLS(strict-mls) いままでのStrict+MLSによる制御
図3 FC6のMLS

 MLSを設定するための準備

 MLSで作業するためには2回再起動を行う必要があります。まずは、SELinux設定ファイルである/etc/selinux/configに以下のように設定します。

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=permissive   ←‘permissiveにしておくことが重要
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=mls
図4 /etc/selinux/configの設定(起動1回目)

 MLSを使用するためには、readahead_earlyサービスを自動起動しないように設定し、ランレベル3で起動するように変更します。readahead_earlyサービスの停止は必ず行ってください(筆者の環境ではMLS環境で正常動作せず、メモリをどんどん消費し、ついにはOOM Killerが発動しました)。

 その後、SELinuxのポリシー設定をPermissiveモード、ポリシー設定をMLSにしたら、‘touch /.autorelabel’を行い、再起動します。これで次回起動時に、自動的にMLS用のラベル付けがファイルシステムに適用されてから起動します。

[root@vmfc5 ~]# vi /etc/selinux/config ←図4のように設定します
[root@vmfc5 ~]# checkconfig readahead_early off ←MLS環境で正常動作しないため

[root@vmfc5 ~]# vi /etc/inittab ←起動するランレベルを5から3へ変更します
[root@vmfc5 ~]# touch /.autorelabel [root@vmfc5 ~]# reboot
図5 起動1回目の手順

 再起動したら、再度/etc/selinux/configを編集して‘SELINUX=permissive’を‘SELINUX=enforcing’に変更して2回目の再起動を行います。

 2回目の再起動後、起動時にいろいろとエラーが出ますが、取りあえず起動を確認したら準備完了です。

1/2

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


Security&Trust記事一覧


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

注目のテーマ

Security & Trust 記事ランキング

本日 月間