第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個(ベースポリシーを含む)もあります。
|
ところで、先ほどの図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記事一覧 |
- Windows起動前後にデバイスを守る工夫、ルートキットを防ぐ (2017/7/24)
Windows 10が備える多彩なセキュリティ対策機能を丸ごと理解するには、5つのスタックに分けて順に押さえていくことが早道だ。連載第1回は、Windows起動前の「デバイスの保護」とHyper-Vを用いたセキュリティ構成について紹介する。 - WannaCryがホンダやマクドにも。中学3年生が作ったランサムウェアの正体も話題に (2017/7/11)
2017年6月のセキュリティクラスタでは、「WannaCry」の残り火にやられたホンダや亜種に感染したマクドナルドに注目が集まった他、ランサムウェアを作成して配布した中学3年生、ランサムウェアに降伏してしまった韓国のホスティング企業など、5月に引き続きランサムウェアの話題が席巻していました。 - Recruit-CSIRTがマルウェアの「培養」用に内製した動的解析環境、その目的と工夫とは (2017/7/10)
代表的なマルウェア解析方法を紹介し、自社のみに影響があるマルウェアを「培養」するために構築した動的解析環境について解説する - 侵入されることを前提に考える――内部対策はログ管理から (2017/7/5)
人員リソースや予算の限られた中堅・中小企業にとって、大企業で導入されがちな、過剰に高機能で管理負荷の高いセキュリティ対策を施すのは現実的ではない。本連載では、中堅・中小企業が目指すべきセキュリティ対策の“現実解“を、特に標的型攻撃(APT:Advanced Persistent Threat)対策の観点から考える。
|
|