
第6回 新しく追加されたMulti Category Security
古田 真己サイオステクノロジー株式会社
インフラストラクチャービジネスユニット
Linuxテクノロジー部
OSSテクノロジーグループ
2006/8/16
MCSのセキュリティレベルと表記法
MCSはMLSのサブセットです。従って、MLSゆずりのセキュリティレベルを持っています。先ほどの「s0-s0:c0.c255」の見方を解説します。
「s0」は「Sensitivity」と呼ばれ、企業における役職の上下を表します。しかし、MCSではこの機能は使われないため、Sensitivityは常に「s0」です。「c0」とか「c255」は「Category」のことで、そのままカテゴリになります。
図中の「FC5デフォルトの例」は、表記法のサンプルとしては分かりにくいかもしれません。なぜならば、デフォルトのセキュリティレベル(下限、新規にファイルを作成したときに適用される)は「カテゴリなし」になっていて、何も記述されていないからです。
そこで「分かりやすい例」として、デフォルトのセキュリティレベルにもカテゴリを設定したものを作りました。こちらの方がアクセスのイメージを持ちやすいと思います。
MCSのアクセスモデル
図2を使って、MCSのアクセス制御を解説すると以下のようになります。
自分のカテゴリに属しているものに対してはフルアクセスが可能ですが、自分の持っていないカテゴリが含まれているものにはまったくアクセスできません。また、ファイルにカテゴリを付けないでおくと誰からでもアクセス可能になります。
![]() |
図2 MCSのアクセス制御の概念図(画像をクリックすると拡大します) |
実際の動作における設定方法
それでは、実際にMCSを設定してみましょう。
1.ユーザーへのカテゴリの設定と確認方法
新規にユーザー「john」を追加します。デフォルト(下限)にカテゴリがないと新規作成したファイルに誰からでもアクセスできてしまうので「s0:c0」を設定します。
[root@localhost ~]# adduser john [root@localhost ~]# id john uid=10002(john) gid=10002(john) groups=10002(john) [root@localhost ~]# semanage login -a -r s0:c0-s0:c0.c255 john [root@localhost ~]# semanage login -l Login Name SELinux User MLS/MCS Range __default__ user_u s0 john user_u s0:c0-SystemHigh root root SystemLow-SystemHigh |
「s0:c0」だと分かりにくいので、「John」というトランスレーションを設定します【注】。
[root@localhost ~]# semanage translation -a -T john s0:c0 [root@localhost ~]# semanage translation -l Level Translation s0 s0-s0:c0.c255 SystemLow-SystemHigh s0:c0 john s0:c0.c255 SystemHigh [root@localhost ~]# semanage login -l Login Name SELinux User MLS/MCS Range __default__ user_u s0 john user_u john-SystemHigh root root SystemLow-SystemHigh |
【注】 FC5のpolicycoreutils-1.30.10-2.fc5の/usr/sbin/semanageコマンド(実体はpythonスクリプト)にはバグがあるようです。以下のパッチを/usr/lib/python2.4/site-packages/semanage.pyに当ててバイトコンパイルし直すか、semanage.pycとsemanage.pyoをsemanage.pyc.offやsemanage.pyo.offなどのようにリネームしてください。
|
2.新規作成ファイルのカテゴリ確認とカテゴリの変更方法
トランスレーションの設定も終わりましたので、実際にユーザー「john」でログインして空のファイルを作成してみます。
[root@localhost ~]# ssh john@localhost Enter passphrase for key '/root/.ssh/id_rsa': [john@localhost ~]$ id -Z user_u:system_r:unconfined_t:s0:c0-s0:c0.c255 [john@localhost ~]$ echo TEST > /tmp/TEST_FILE |
作成したファイルをrootユーザー(s0-s0:c0.c255)から確認します。
[john@localhost ~]$ exit [root@localhost ~]# ls -Z /tmp/TEST_FILE -rw-rw-r-- john john user_u:object_r:user_home_t:john TEST_FILE [root@localhost ~]# cat /tmp/TEST_FILE TEST |
次に、カテゴリを持たないユーザーを作成して、このファイルの中身が見られるかどうか確認してみます。
[root@localhost ~]# adduser jane [root@localhost ~]# id jane uid=10002(john) gid=10003(jane) groups=10003(jane) [root@localhost ~]# semanage login -a -r s0 jane [root@localhost ~]# semanage login -l Login Name SELinux User MLS/MCS Range __default__ user_u s0 jane user_u s0 john user_u john-SystemHigh root root SystemLow-SystemHigh [root@localhost ~]# ssh jone@localhost Enter passphrase for key '/root/.ssh/id_rsa': [jane@localhost ~]$ id -Z user_u:system_r:unconfined_t:s0 [jane@localhost ~]# ls -l /tmp/TEST_FILE -rw-rw-r-- 1 john john 5 Jul 15 05:47 /tmp/TEST_FILE [jane@localhost ~]$ cat /tmp/TEST_FILE cat: /tmp/TEST_FILE: Permission denied |
/tmp/TEST_FILEのパーミッションは644ですが、MCSによるアクセス制御によって読めなくなっているのが分かります。このとき、SELinuxのログは以下のように出力されています。
1: Jul 15 05:52:55 localhost kernel: audit(1152910375.418:591): avc: denied { read } for pid=28072 comm="cat" name="TEST_FILE" dev=dm-0 ino=461533 scontext=user_u:system_r:unconfined_t:s0 tcontext=user_u:object_r:tmp_t:s0:c0 tclass=file 2: Jul 15 05:52:55 localhost kernel: audit(1152910375.418:591): arch=40000003 syscall=5 success=no exit=-13 a0=bfd40c02 a1=8000 a2=0 a3=8000 items=1 pid=28072 auid=10003 uid=10003 gid=10003 euid=10003 suid=10003 fsuid=10003 egid=10003 sgid=10003 fsgid=10003 tty=pts3 comm="cat" exe="/bin/cat" subj=user_u:system_r:unconfined_t:s0 3: Jul 15 05:52:55 localhost kernel: audit(1152910375.418:591): cwd="/home/jane" 4: Jul 15 05:52:55 localhost kernel: audit(1152910375.418:591): item=0 name="/tmp/TEST_FILE" inode=461533 dev=fd:00 mode=0100664 ouid=10002 ogid=10002 rdev=00:00 obj=user_u:object_r:tmp_t:s0:c0 |
このログでは1行目の「avc: denied { read }」部分で読み込みの拒否が発生しています。そのときのアクセス元のコンテキストは「scontext=user_u:system_r:unconfined_t:s0」、アクセス先のコンテキストは「tcontext=user_u:object_r:tmp_t:s0:c0」、種類は「tclass=file」です。
つまり、「s0」しか持たないユーザーは「s0:c0」のファイルに実際にアクセスできていないことが分かります。FC5からはMCSのこのカテゴリ別のアクセス制御機能を使ってセキュリティを高めてゆくことが可能となったのです。
MCSの実運用での生かし方
企業が、MCSを有効活用できそうな例を2つ挙げてみます。
1.内部統制(従業員評価書類や経理書類)
重要書類を取り扱うユーザーとメンテナンス作業者を別のカテゴリに分けて登録することで実現できるソリューションです。
人事評価情報を取り扱うサーバ上で、メンテナンスを行う一般の従業員から、役職者が取り扱う人事評価書類をMCSのアクセス制御によって守ることができます。また、経理書類を取り扱うサーバでは同じくメンテナンス作業者から経理書類を保護することが可能になります。
メンテナンス作業者が重要書類にアクセスしようとしたかどうかは前述のようにSELinuxのログに出力されます。メンテナンス作業中に「seaudit」などのGUIツールでログをリアルタイムに観察することで、さらにセキュリティ上の安心が確保できます。
2.アプリケーションのテスト(SandBox)
システム全体とテストしたいアプリケーションファイルとを別々のカテゴリに設定しておけば、新規にテストしたいアプリケーションが不必要な部分に手を加えて不具合を起こす可能性からシステムを保護できます。
このソリューションの利点はchrootなどを行わなくても、SELinux上で本来のインストールパスにアプリケーションを配置してテストが可能な点です。
MCSはMLSのサブセットで、カテゴリのみでアクセス制御を行う仕組みです。MCSを使うことで、従来RHELに含まれず、運用・保守も困難だったStrictポリシーでしかできなかったユーザーやグループごとのアクセス制御ができます。また、MCSの設定はコマンドで簡単に行えるので扱いやすく、企業において強力なソリューションとなり得ます。
次回は、MCSの本来の姿であり、国際基準を満たす強力なセキュリティを実現するMLSを取り上げます。
![]() |
2/2
|
Index | |
新しく追加されたMulti Category Security | |
Page1 MCSは企業向けのセキュリティ機能 MCSを使うために MCSで増えた「SystemLow-SystemHigh」という表示 |
|
![]() |
Page2 MCSのセキュリティレベルと表記法 MCSのアクセスモデル 実際の動作における設定方法 MCSの実運用での生かし方 |
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)対策の観点から考える。
![]() |
|
|
|
![]() |