SELinux新機能解説

Red Hat Enterprise Linux 5で始めるSELinux


面 和毅

サイオステクノロジー株式会社
OSSソリューションセンター
グローバルサービスグループ
グループマネージャー

2007/3/14
まもなくリリースされるRed Hat Enterprise Linux 5では、SELinuxを使いやすくする新機能が搭載されている。今回は「セキュアOS「LIDS」入門」を執筆する面氏が、Red Hat Enterprise Linux 5のSELinuxで新しくなったポイントを詳しく紹介する(編集部)

 Red Hat Enterprise Linux 5(以下RHEL5)が近日中にリリースされます。このRHEL5では、仮想化やクラスタリングなどさまざまな新機能が盛り込まれていますが、採用されているSELinuxもバージョンが上がり、新機能が盛り込まれ、扱いが大きく変わっています。この記事では、SELinuxに関しての前バージョンとRHEL5との相違点を説明します。

 最新のSELinuxに関しての詳しい説明は、「SELinuxの最新動向」やITmediaエンタープライズの記事「SELinuxは今すぐ使えるのか?」などの連載を参照してください。

【編集部注】
2007年3月14日、Red HatはRed Hat Enterprise Linux 5のリリースを発表しました。以下の記事も併せてご参照ください。

Red Hat、「Red Hat Enterprise Linux 5」をリリース
http://www.itmedia.co.jp/enterprise/articles/0703/15/news020.html

 Referenceポリシーの採用


 RHEL5で採用されているバージョンのSELinuxからは、新しいポリシーの記述言語として「Referenceポリシー」が採用されています。SELinuxでは機能やアプリケーションごとに異なる「ドメイン」を設定してコンパートメント化を行うことにより、セキュリティ侵害が起きたときに被害を最小限化することができます。このドメインやアクセス制御の設定ファイルに当たるものが「ポリシー」になります。

 旧バージョンのSELinuxでは、ディストリビューションで提供されているアプリケーション以外の独自のアプリケーションを使用したり、ポリシーをカスタマイズするには、設定ファイルのソースを入手してカスタマイズする必要がありました。また、そのソースファイルはドメインごとのディレクトリ構成になっていましたが、完全に各ドメインでソースファイルが分離できているわけではありませんでした(例えばrsyncのポリシー内にはftpのポリシーで定義されているパラメータなどが出てきます)。従って、あるドメインのポリシーを修正した際に、ほかのドメインのポリシーも修正しなくてはならないような状態でした。

図1 従来のポリシー構造

 これに対し、Referenceポリシーでは「モジュール」とレイヤ構造を定義して、このようなポリシーの依存関係を整理することになりました。このモジュールの概念を実現するためにReferenceポリシーではいままでのポリシーを再作成し、またマクロを多用して各ドメイン間の依存関係を整理しています。

図2 モジュール化されたReferenceポリシーのレイヤ構造

 これによりユーザーが新しくドメインを追加する際には、そのドメイン用のポリシーを作成するだけで作業が済み、ほかのドメインのポリシーの修正や削除などが不要になるため、簡単にドメインの追加が行えるようになりました。

図2 Referenceポリシーでの構造

 図4は、httpdのドメインで定義されているインターフェイス(右ターミナル、“apache_read_log”)と、それを利用しているwebalizerのポリシー(左ターミナル、“apache_read_log(webalizer_t)”)になります。

図4 ポリシーの設定(画像をクリックすると拡大します)

 RHEL5ではこのReferenceポリシーの機能のおかげで、ポリシーのソースファイルを入手することなく、自分の追加したいアプリケーションのソースファイルだけを定義してロードすることが可能になっています(Referenceポリシーの完全なソースファイルを入手するには、src.rpmから抜き出して適用するという、いささか面倒な方法しかなくなっています)。

【参考】
Referenceポリシーについての詳細な説明は、「SELinuxの最新動向」第2回〜第5回を参照してください。

 第2回 構成が大きく変わったセキュリティポリシー 2.x系
 第3回 Referenceポリシーを設定してみよう
 第4回 ReferenceポリシーをEnforcingモードで動かそう
 第5回 Referenceポリシーの作成と動作テスト

 MLS/MCSの実装

 RHEL5で採用されている、SELinuxの新機能のもう1つの特徴としてMLS(Multi Level Security)の実装があります。

 RHEL5で“ps axZ”や“ls -alZ”などを実行してセキュリティコンテキストを確認すると、図5のようにいままでのセキュリティ識別子の末尾に“c0”などが付いた形で結果が表示されます。これは、従来のSELinuxのセキュリティコンテキストを構成していたユーザー識別子、ロール識別子、タイプ識別子に加えて新たにMLS識別子が加わったためです。

[root@rhel5b2 ~]# ps axZ
system_u:system_r:udev_t:s0-s0:c0.c1023 391 ? S<s 0:01 /sbin/udevd -d
system_u:system_r:auditd_t 1627 ? S<sl 0:00 auditd
system_u:system_r:setrans_t:s0-s0:c0.c1023 1667 ? Ss 0:00 mcstransd
system_u:system_r:crond_t:s0-s0:c0.c1023 1967 ? Ss 0:00 crond

[root@rhel5b2 ~]# ls -laZ
dr-xr-xr-x root root root:sysadm_r:sysadm_ssh_agent_t:s0-s0:c0.c1023 2456
dr-xr-xr-x root root root:sysadm_r:sysadm_t:s0-s0:c0.c1023 2459
dr-xr-xr-x root root root:sysadm_r:sysadm_dbusd_t:s0-s0:c0.c1023 2460
dr-xr-xr-x root root root:sysadm_r:sysadm_t:s0-s0:c0.c1023 2467
図5 RHEL5でのセキュリティコンテキスト表示

図6 新たに加えられたMLS識別子

 MLSでは、リソースに付いているカテゴリ(c0などで表示される)とレベル(s0などで表示される)を比較して、アクセスの許可/拒否を判定します。また、通常のMLSではユーザーにとってかなり複雑なアクセス制御ルールとなってしまうため、RHEL5ではさらに、MLSの簡易版(より正確には、すべてのリソースが単一のレベルにいるとしてレベルによる制御をなくし、カテゴリによる制御のみに絞ったもの)となるMCS(Multi Category Security)を実装しています。

 このMCSといままでのTargetedポリシーが組み合わさった形(targeted-mcs)がRHEL5のデフォルトとなっています。

【参考】
MLS/MCSでのアクセス制御についての詳細な説明は、「SELinuxの最新動向」第6回〜第8回を参照してください。

 第6回 新しく追加されたMulti Category Security
 第7回 Multi Level Securityでより厳密なポリシーを
 第8回 Multi Level Securityで機密ファイルを管理する

1/2

Index
Red Hat Enterprise Linux 5で始めるSELinux
Page1
Referenceポリシーの採用
MLS/MCSの実装
  Page2
ツール類の充実
SELinuxを使ってみるチャンス

関連記事
  連載:SELinuxの最新動向
  連載:セキュアOS「LIDS」入門
  SELinux Policy EditorでSELinuxを簡単に
  想像以上?! お隣韓国のセキュアOS事情(前)
  想像以上?! お隣韓国のセキュアOS事情(後)
  ITmedia エンタープライズ:SELinuxの現状:使いやすさの改善が進むSELinux

Security&Trust記事一覧


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

注目のテーマ

Security & Trust 記事ランキング

本日 月間