やっぱり Sun がスキ! : Weblog やっぱり Sun がスキ!

やっぱり Sun がスキ!

http://blogs.sun.com/yappri/date/20070226 2007年 2月 26日 月曜日

Trusted Extensions の設定手順

皆さん Trusted OS という名前は敷居が高く、難しいというイメージを持っていませんか。
実はそんなことはありません。
しっかりとしたセキュリティ設計をするのであれば、かなり深い知識を持たなければいけませんが、ちょっとセキュリティに関して勉強してみたいと思うのであれば、Solaris Trusted Extensions (以下 TX)にはサンプルファイルもあり、簡単にセキュアな OS 環境を構築することができます。
ということで、今回は、その TX を皆さんにも使っていただきたいと思い、分かりやすく TX 環境を設定する手順を公開したいと思います。


【概要説明】

Trusted OS とは米国国防省など機密情報を扱う組織での利用実績があるセキュア OS であり、なんと Solaris 10 11/06 で標準機能として実装されることになりました。

それが Solaris Trusted Extensions です。

この TX は Solaris とは別のセキュリティ OSとして出荷されていた Trusted Solaris 8 (以下 T-Sol 8)が Solaris 10 で統合されたセキュリティ機能です。

では実際に TX と T-Sol 8 の違いは何かというと以下のような点があります。

  • ラベル付きセキュリティ機能を Solaris 10 をベースにしたレイヤ・アーキテクチャで再設計(図1参照)
  • Solaris コンテナを使用
  • デスクトップ環境として CDE のみでなく JDS もサポート
  • SPARC のみでなく x86/x64 Solaris にも対応
  • ベースが Solaris 10 なので無償で提供

図1●従来との実装の違い


ただし、基本的に TX は T-Sol 8 の後継であり、データの所有権からセキュリティポリシを分割したり、デスクトップやネットワーク、印刷機能に対して異なるラベルのプロセスを同時に処理することが可能なところは T-Sol 8 と同じとなります。

もっと詳しく Trusted OS のことを知りたいかたは、古い情報ですが以下をご参照していただくと良いと思います。

Sun Developer News 2/2003
Sun Developer News 3/2003
Sun Developer News 4/2003



前置きはこれくらいにして、実際に環境を作ってみましょう。 基本的には「Solaris Trusted Extensions ソフトウェアのインストール」を参考にセットアップをしました。

インストールの注意事項は 「Solaris Trusted Extensions ソフトウェアのインストール」の P39 をご参照ください。


【環境構築のための前提条件です】
・Solaris 10 11/06 がインストールが完了している
・LDAPは使用しません
・ラベルは以下を使用します(標準で登録されているラベルです)
  public
internal
needtoknow
restricted


セットアップは以下を行います。
  1. パッケージのインストール
  2. セキュリティ設定

1. パッケージのインストール

Solaris インストールメディアをマウントします。
TX のインストールパッケージは以下にあります。

Solaris_10/ExtraValue/CoBundled/Trusted_Extensions

マニュアルには pkgadd コマンドと Java ウィザードでのインストールを紹介していますが、今回はJava ウィザードでインストールします。ソフトウェアのインストールに関してはインストールマニュアル P45 を参照してください。

# java wizard

ライセンスの同意やインストール形式を聞かれますが、気にせず標準のままで問題ないです。
[ 画像クリックで拡大 ]

パッケージインストール後は再起動します。


再起動後はログインするたびに確認メッセージが表示されますが、気にせずそのまま進んでください。
[ 画像クリックで拡大 ]



ログインしてみても、CDE デスクトップでは下側に、JDS デスクトップでは上側にラベル情報の項目が追加されていますが、その他にデスクトップ環境は変化はありません。
CDE デスクトップ JDS デスクトップ
[ 画像クリックで拡大 ]


TXのソフトウェアのインストールが完了しましたので、次にセキュリティ設定に移ります。


2. セキュリティ設定

セキュリティ設定に関するファイルには以下のようなものがあります。

/etc/security/tsol/label_encodings
  ラベルに関しての設定
・/etc/security/tsol/tnrhdb
  分散システム内の各ホストで使用するテンプレートを設定
・/etc/security/tsol/tnrhtp
  システムでplumb された interface の初期テンプレート設定
・/etc/security/tsol/tnzonecfg
  各ゾーン名毎にラベル名、ポート/プロトコルの設定

label_encodings ファイル(サンプル有り)は直接編集する必要がありますが、他の tn ファイルはツールで設定することができます。label_encodings ファイルを修正した場合は必ず【エンコーディングの検査】を実行して検査にパスする必要があります。
【エンコーディングの検査】は次に説明する【Trusted_Extensions】フォルダ内にあります。


TX の設定用ツールは以下のフォルダにあります。

【右クリック】→【アプリケーション】→【アプリケーション・マネージャ】→【Trusted_Extensions】

このフォルダ内に TX を設定/運用するために必要なツール群が登録されています。


Trusted_Extensions フォルダ

[ 画像クリックで拡大 ]



上記のツールを使ってセキュリティ設定をしていきます。
まずは、ラベル付きゾーンを作成します。
マニュアルでは、ゾーンのネットワーク設定が先に記載されていますが、後の作業が簡単になるので初めに【ゾーンを構成】をします。

【Trusted_Extensions】→【ゾーンを構成】→【ゾーン名の入力】

ゾーン名は上記のラベル名を使用します。

bash-3.00# zoneadm list -ivc
  ID NAME             STATUS         PATH                          
   0 global           running        /                             
   - public           configured     /zone/public                  
   .....
bash-3.00# 
bash-3.00# zonecfg -z public info
zonename: public
zonepath: /zone/public
autoboot: true
.....
.....
bash-3.00# 

ゾーンの構成が完了しましたので、ゾーンに対してネットワークの設定をします。
設定方法はインストールマニュアル P54 を参照してください。

今回はそれぞれのゾーンに対してネットワークの設定しますので P56 「システムのゾーンごとに1 つずつIP アドレスを指定する」を参考にします。

bash-3.00# zonecfg -z public
zonecfg:public> add net
zonecfg:public:net> set address=192.168.113.100/24
zonecfg:public:net> set physical=pcn0 ← ここはご自身の環境のネットワークIFを
zonecfg:public:net> end                   入力してください。
zonecfg:public> commit
zonecfg:public> exit
bash-3.00# zonecfg -z public info
zonename: public
zonepath: /zone/public
net:
        address: 192.168.113.100/24
        physical: pcn0
bash-3.00#

次に Solaris 管理コンソール(/usr/sbin/smc)を使用してゾーンとラベルを関連付けます。
設定方法はインストールマニュアル P63 を参照してください。


ここで注意ですが public ゾーンを作成するときはラベルビルダーで下にある「定義済みラベルを選択するか・・・」のところを必ず≪public≫と手入力してください。選択肢にある≪PUB≫を選びますと 正常に public ゾーンが立ち上がってきませんのでご注意ください。


ラベルビルダー

[ 画像クリックで拡大 ]


bash-3.00# zoneadm -z public boot
zoneadm: zone 'public': zone_create に失敗しました。: File exists
zoneadm: zone 'public': zoneadmd の呼び出しに失敗しました
bash-3.00# 

正しく設定されているかは /etc/security/tsol/tnzonecfg ファイルを見ることで確認できます。

public:ADMIN_LOW:0:: ← ×
public:0x0002-08-08:0:: ← ○

public ゾーン以外は特に気にする必要はありません。
続けて全てのゾーンに対してネットワークを設定します。



次にゾーンが使用するための ZFSプールを作成します。
作成方法はインストールマニュアル P66 を参照して下さい。
注意事項としては【ゾーンを構成】でゾーンを設定した場合 zonepath/zone/ゾーン名 となるので気をつけてください。

bash-3.00# mkfile 1000m /export/zone   ← 1つのゾーンで100MB程度なので1GB程度で
bash-3.00# zpool create zone /export/zone 問題ないです。
bash-3.00# zfs create zone/public
bash-3.00# chmod 0700 /zone/public
bash-3.00# zpool status -x zone
プール 'zone' は正常です
bash-3.00# zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
zone                    992M    108K    992M     0%  ONLINE     -
bash-3.00# zpool status
  プール: zone
    状態: ONLINE
スクラブ: 何も要求されませんでした
構成:

        NAME            STATE     READ WRITE CKSUM
        zone            ONLINE       0     0     0
          /export/zone  ONLINE       0     0     0

エラー: 既知のデータエラーはありません
bash-3.00# 


ZFSプールの作成も終わりましたので、ゾーンのインストールをします。
ゾーンのインストールもゾーンの構成と同様にツールを使用して設定してみます。

【Trusted_Extensions】→【ゾーンをインストール】→【ゾーン名の入力】

後はコンソール画面が表示されてステータスが確認できますので、インストールが完了するまで待ち状態となります。



インストールが完了したら、ゾーンを起動してコンソールからログインしてみます。

コンソールの起動

【Trusted_Extensions】→【ゾーン端末コンソール】→【ゾーン名の入力】

ゾーンの起動

【Trusted_Extensions】→【ゾーンを起動】→【ゾーン名の入力】

 [ゾーン 'public' コンソールに接続しました]

[NOTICE: Zone booting up]

SunOS Release 5.10 Version Generic_118855-33 32-bit
Copyright 1983-2006 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: public

public console login: root
Password: 
Feb 19 00:06:44 public login: ROOT LOGIN /dev/console
Last login: Thu Feb 15 01:23:09 on pts/13
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
bash-3.00# 
bash-3.00# hostname
public
bash-3.00# ifconfig -a
lo0:1: flags=2001000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
pcn0: flags=1004843 mtu 1500 index 2
        all-zones
        inet 192.168.113.162 netmask ffffff00 broadcast 192.168.113.255
pcn0:1: flags=1000843 mtu 1500 index 2
        inet 192.168.113.100 netmask ffffff00 broadcast 192.168.113.255
bash-3.00# 
bash-3.00# cat /etc/hosts
#
# Internet host table
#
127.0.0.1       localhost

192.168.113.100 public  loghost
192.168.113.157 all-zones

無事に public ゾーンが作成できました。
同様に他のゾーンも作成しなければいけないのですが、一からインストールすると時間が掛かります。
そこでマニュアルにも記載されていますが、ゾーンのコピーや、ZFS のスナップショットを使用したクローンコピー等でゾーンを作成することができますのでそちらをお薦めいたします。
作成方法はインストールマニュアル P73 の項目5 の「このゾーンをほかのゾーンのテンプレート・・・」から以降を参考にしてください。

2点ほど注意事項があります。
  コピーやクローンコピーを使用してゾーンを作成した場合は自動的にホスト名が変更されませんので、コピー後、ホスト名を変更する必要があります。
  端末コンソールで root でログインができなかったときは、グローバルゾーンのhosts ファイルにローカルゾーンの情報を追加してください。


全てのゾーンのインストールが完了したら、セキュリティ設定は完了となります。
マニュアルではこの後、セキュリティ管理者ユーザを作成したり、ホームディレクトリを作成していますが、今回はこれで完了とします。


ではシステムを再起動してログインしてみます。
実際にログインしましたが、ワークスペースに対してゾーンの割り当てを行っていないので、デスクトップに変化はありません。

というわけで、まずワークスペース 2 に「intenal」権限を割り当ててみます。
ワークスペース 2 の上で
【右クリック】→【ワークスペースラベルを変更】
を選択してください。
[ 画像クリックで拡大 ]
ワークスペースマネージャウインドウが開きますので、
CLASSIFICATION=CONFIDENTIAL(CNF)
SENSITIVITY=INTERNAL USE ONLY(:INTERNAL)
を選択してください
[ 画像クリックで拡大 ]



同様に他のワークスペースも変更してみましょう。

ワークスペース1 = public(gray)
ワークスペース2 = internal(blue)
ワークスペース3 = needtoknow(yellow)
ワークスペース4 = restricted(green)

※分かりやすくするためにデフォルトのラベルの色を変更しました。




ワークスペースとラベルの紐付きが完了しましたので、それぞれのラベルでアプリケーションを起動してみます。

[ 画像クリックで拡大 ]
それぞれのアプリケーションに権限のラベルが付与されているのが分かります。



では最後に INTERNAL USE ONLY から RESTRICTED にテキストをコピーしたいと思います。

[ 画像クリックで拡大 ]

左側に確認画面が表示されていますので、権限が有効になっているのがお分かりになると思います。



いかがでしたか、今回は皆さんに Trusted OS をいう堅苦しく高い壁を取っ払ってもらうために実際に私自分が Solaris Trusted Extensions をセットアップしてみました。
今回、私がやっていることはほんの入り口でしかなく、まだまだ Solaris Trusted Extensions には機能がたくさんあります。日本語のマニュアルで8冊 1326ページもあります。


昨今セキュリティに関して騒がれていますが、この Solaris Trusted Extensions をマスターすることができれば、強固でセキュアな環境を簡単に、しかも無償で構築できると確信しています。
皆さんもセキュリティを勉強する上でも Solaris Trusted Extensions を使ってみてはいかがですか。


最後に余談ですが、今回の構築には Windows ノート PC に VMWare を使用して Solaris の環境を構築しました。
4つほどゾーンが動いているので起動には時間が掛かりますが、それ以外は特に動作に問題はありません。
今は仮想化の技術を使ってこんな検証を簡単にできるようになって本当に便利だなと思いました。
今後も、この環境を残して Solaris Trusted Extensions について勉強しくつもりですので、何らかのアップデートがありましたらこの Blog にアップしていきたいと思っています。
皆さんも、もしご使用されて「こんなことできました。」なんてのがありましたらご連絡をいただければ幸いです。


今回の Blog で書きました設定手順を pdf ファイルにまとめましたので興味のあるかたは、こちらからダウンロードしてご使用ください。
Solaris Trusted Extensions 設定手順書(1.6MB)

おしまい