Trusted Solaris オペレーティング環境で、ホストが別々のネットワークにある場合、各ホストを結ぶ経路では、転送処理の段階ごとにセキュリティを維持する必要があります。
Trusted Solaris ホストは、ブート時にルーティング情報を読み込み、データの転送に使用します。/etc/tsolgateways ファイルがある場合は、そこに定義されたゲートウェイがホストのデフォルト経路として使用されます。/etc/tsolgateways ファイルがない場合は、/etc/defaultrouter ファイルのデフォルト経路が使用されます。どちらのファイルも管理者が手動で管理します。どちらか一方のファイルがあれば、このホストは「静的ルーティング」を使用していることになります。
/etc/tsolgateways ファイルも /etc/defaultrouter ファイルもない場合は、ホストは「動的ルーティング」を使用し、特別なデーモンを起動する必要があります。in.rdisc(1M) (ネットワークルーター検出デーモン) が使用可能であれば、これを起動し、使用可能でなければ、in.routed(1M) (ネットワークルーティングデーモン) を起動します。ホストがゲートウェイの役目も果たす場合、つまり、ホストが複数のネットワークに接続されている場合は、in.rdisc と in.routed の両方を起動します。
ブート時には、/etc/security/tsol/boot ディレクトリに常駐する tnrhdb ファイルと tnrhtp ファイルがカーネルに読み込まれ、ホストと NIS+ マスターとの通信を可能にします。ファイルのデフォルト値はトラステッドネットワークデーモン (tnd(1M)) が起動すると置換されます。デフォルトにより、/etc/security/tsol/boot/tnrhdb ファイルには、0.0.0.0:tsol というエントリが格納されています。これは、ネットワークが Trusted Solaris ネットワークであることを示しています。
Trusted Solaris 環境では、2 台のホストを結ぶ最短かつセキュリティ保護された経路を見つけるためにルーティングを行っています。Trusted Solaris のルーティングテーブルは、拡張メトリック方式 (以下、emetric と呼びます) です。「emetric」は、ルーティングメトリックとセキュリティルーティング情報 (SRI) を組み合わせたもので、セキュリティの程度を計測します。SRI に組み込まれるセキュリティ属性には次のものがあります。
最下位 SL
最上位 SL
DOI
RIPSO ラベル
RIPSO エラー
CIPSO 専用
RIPSO 専用
MSIX 専用
動的ルーティングを行う場合、ルーティングデーモン in.routed が Trusted Solaris 拡張ルーティング情報プロトコルを使用して、これらの情報を収集します。静的ルーティングを行う場合は、route コマンドを実行するか、/etc/tsolgateways/ または /etc/defaultrouter ファイルに手動で入力します。特定経路の emetric は、その経路が転送経路と見なされた場合、認可チェックに使用されます。
emetric は、ルーティングテーブル内の一部の経路にあるだけで十分です。emetric のない経路の場合、認可チェックには、最初に通過するゲートウェイのリモートホスト用テンプレートを使用します。
Trusted Solaris では、経路の適合性をセキュリティの観点から判断するため、「認可チェック」と呼ばれる一連の評価を行っています。これは、ソースホスト、宛先ホスト、経路の emetric 上で実施されます。経路の emetric が見つからない場合は、経路で最初に通過するゲートウェイのセキュリティ属性がチェックされます。ホストのセキュリティ属性は、tnrhdb、tnrhtp、tnidb の各ファイルから収集されます。評価では、たとえば、データパケットの機密ラベルが、経路の各ホストの認可範囲内にあるかどうかがチェックされます。また、経路でゲートウェイとして使用しているホストが CIPSO、RIPSO、MSIX のいずれかである場合、Trusted Solaris ホストと IP オプションを使用しない TSIX ホストとの間で転送されたデータは許可されません。
ソースホストで実施される認可チェックの項目は次のとおりです。
送信されるデータの機密ラベルは、宛先ホストの認可範囲内でなくてはならない
データの機密ラベルは、経路の emetric の認可範囲内でなくてはならない。emetric が使用できない場合は、最初に通過するゲートウェイのセキュリティ属性の認可範囲内でなくてはならない
データの機密ラベルは、ソースホストのネットワークインタフェースの認可範囲内でなくてはならない
発信パケットに CIPSO ラベルが含まれる場合は、その DOI が、宛先および経路の emetric (または最初に通過するゲートウェイ) の DOI と一致しなくてはならない
同様に、発信パケットの RIPSO ラベルは、宛先および経路の emetric (または最初に通過するゲートウェイ) の RIPSO ラベルと一致しなくてはならない。あるいは、RIPSO エラーが宛先の RIPSO エラー、経路の emetric、または最初に通過するゲートウェイの RIPSO エラーと一致しなくてはならない
宛先ホストが MSIX マシンの場合は、経路の emetric または最初に通過するゲートウェイも MSIX (または Trusted Solaris) マシンでなくてはならない
Trusted Solaris のゲートウェイホストでは、次のような認可チェックが行われます。
次に通過するゲートウェイがラベルなしホストの場合は、パケットのデフォルトラベルが宛先ホストのデフォルトラベルと一致しなくてはなりません。
パケットに CIPSO オプションが使用されている場合は、次の転送条件が必要です。
経路の emetric (または次に通過するゲートウェイ) が CIPSO プロトコルのデータを受信できる
経路の emetric (または次に通過するゲートウェイ) がデータパケットの DOI に含まれている
tnrhtp データベースの発信インタフェース用 DOI がデータパケットの DOI と同じ
パケットに RIPSO オプションが使用されている場合は、次の転送条件が必要です。
経路の emetric (または次に通過するゲートウェイ) が RIPSO プロトコルのデータを受信できる
経路の emetric (または次に通過するゲートウェイ) が、データパケットの RIPSO ラベル(または RIPSO エラー) と同じ RIPSO ラベル (または RIPSO エラー) を持っている
Trusted Solaris マシンがデータを受信する際、トラステッドネットワークソフトウェアによって次の項目がチェックされます。
データの機密ラベルが、ソースマシンとデータを受信するネットワークインタフェースの両方の認可範囲内であること
パケットに CIPSO ラベルが使用されている場合は、パケット内の DOI が宛先のリモートホスト用テンプレート内の DOI と同じであること
パケットに RIPSO ラベル (または RIPSO エラー) が使用されている場合は、パケット内の RIPSO ラベル (または RIPSO エラー) が、宛先のリモートホスト用テンプレート内の RIPSO ラベル (または RIPSO エラー) と同じであること
データが上記の認可チェックに合格すると、システムは、データに必要なセキュリティ属性がすべて含まれているかどうかをチェックします。欠落した属性があった場合は、ソフトウェアによって (IP アドレスまたは欠落している属性名をキーワードにして) tnrhdb データベースのソースホストが検索され、そのホストに割り当てられているネットワークセキュリティテンプレートの名前が取得されます。次に、tnrhtp データベースから、そのテンプレートのセキュリティ属性のセットが取得されます。それでもまだ欠けているセキュリティ属性がある場合は、tnidb データベースのネットワークインタフェースが検索され、デフォルトのセキュリティ属性が取得されます。tnrhtp のデフォルト属性の方が tnidb の属性よりも優先されます。
次の図は、Trusted Solaris 環境のルーティングの例を示したものです。図 5-8 (a) はルーティングの図解、図 5-8 (b) はルーティングテーブルです。ホスト 1 とホスト 2 を結ぶ経路には、次の 3 種類が考えられます。
経路 1 - ルーティング情報プロトコル (RIP) メトリック 3 を持つ最短経路。経路 1 を使用するデータグラムは、機密ラベルが「CONFIDENTIAL」(C) と「SECRET」(S) のものに制約されている
経路 2 - ADMIN_LOW から ADMIN_HIGH までの機密ラベル範囲を持つ。経路 2 を使用するデータグラムは、CIPSO に設定された IP オプションを使用する
経路 3 - RIP メトリック 6 を持つ、3 つの経路の中で最長の経路。セキュリティルーティング情報 (SRI) が指定されていないため、セキュリティ属性はすべて tnrhtp のゲートウェイ 5 のテンプレートから取得する
ルーティングテーブルの内容を表示するには、netstat コマンドに -R オプションを付けて実行します。ルーティングテーブルを手動で変更するには、route コマンドと add または delete オプションを使用します。次に、コマンドの使用例を示します。
% route add net 129.150.115.0 129.150.118.39 -m metric=2,min_sl=c,max_sl=ts,ripso_label="top_secret sci",ripso_error="genser;sci"add net 129.150.115.0: gateway 129.150.118.39
上の例では、IP アドレス 129.150.115.0 と 129.150.118.39 のホストのループを、距離メトリック: 2、SL 範囲: C から TS、RIPSO ラベル: top_secret sci、RIPSO エラー: genser;sci としてルーティングテーブルに追加しています。追加したループの結果を確認するには、次のように入力します。
% netstat -Rn ... 129.150.115.0 129.150.118.39 UG 0 0 metric=2,min_sl=C,max_sl=TS,ripso_label=0x3d 0x20000000 (top_secret sci) ,ripso_error=0xa0000000 (genser;sci) ...
追加した経路は上記のように表示されます。その他の経路は省略符号 (...) で置き換えられています。次の例は、2 つの新しい emetric を持つ経路の追加手続きと、追加後の新しいルーティングテーブルを表示しています。
% route add net 129.150.114.0 129.150.118.39 -m metric=3,min_sl=admin_low,max_sl=s,doi=3 -m metric=4,min_sl=c,max_sl=admin_high,doi=4,ripso_label="top_secret sci",ripso_error="genser;sci" add net 129.150.114.0: gateway 129.150.118.39 % netstat -Rn ... 129.150.115.0 129.150.118.39 UG 0 0 metric=2,min_sl=C,max_sl=TS,ripso_label=0x3d 0x20000000 (top_secret sci) ,ripso_error=0xa0000000 (genser;sci) 129.150.114.0 129.150.118.39 UG 0 0 metric=4,min_sl=C,max_sl=ADMIN_HIGH,doi=4,ripso_label=0x3d 0x20000000 (t op_secret sci),ripso_error=0xa0000000 (genser;sci) metric=3,min_sl=ADMIN_LOW,max_sl=S,doi=3 ...
セキュリティ保護されたデータのルーティングは、Trusted Solaris 以外 (以下、非 Trusted Solaris と呼びます) のゲートウェイが接続されているクラスタを介して行うことができます。この手続きは「トンネリング」と呼ばれています。ここで言う「クラスタ」とは、Trusted Solaris のホストとゲートウェイだけが接続された構成、または、非 Trusted Solaris のホストとゲートウェイだけが接続された構成を指します。種類の違うクラスタ同士を接続するゲートウェイ (Trusted Solaris または非 Trusted Solaris ) を「エッジゲートウェイ」と呼びます。
次の図は、トンネリングの例を示したものです。影付きの長方形は、非 Trusted Solaris ゲートウェイを表しています。太線で結ばれたループ (環) がクラスタです。クラスタ 1 は非 Trusted Solaris クラスタで、クラスタ 2 は Trusted Solaris クラスタです。
ホスト 1 からホスト 2 にデータを転送する際、非 Trusted Solaris クラスタであるクラスタ 1 と、Trusted Solaris クラスタであるクラスタ 2 を結ぶ経路が要求されます。このような経路は、次の 2 つの条件が満たされた場合に限り許可されます。
非 Trusted Solaris クラスタ内のすべてのゲートウェイ (上の図では、ゲートウェイ 1、2、3) が同じセキュリティ属性を持っていること。また、各ゲートウェイが、起動時に /etc/security/tsol/tunnel というローカルファイルを持ち、接続可能な宛先ホストのアドレスを保持していること考えられる経路が複数あり、それらの経路が同じエッジゲートウェイから
非 Trusted Solaris クラスタに入り、別々のエッジゲートウェイを通ってそのクラスタから抜ける場合、これらの経路の emetric が等しいこと。たとえば、ゲートウェイ 4 の SL 範囲が「CONFIDENTIAL」から「SECRET」までで、ゲートウェイ 5 の SL 範囲が、ADMIN_LOW から ADMIN_HIGH までだと仮定しましょう。このとき、ゲートウェイ 1 は非 Trusted Solaris ホストであり、セキュリティ属性のない標準のルーティングテーブルを使用しているため、ゲートウェイ 4 経由の経路と、ゲートウェイ 5 経由の経路を区別することができなくなります。