この章では、Trusted Solaris 環境でのネットワーキングについて説明します。SunOS CMW のネットワークサブシステムは、Solaris 7 TCP/IP ネットワークの機能を拡張したものであり、これによって、ネットワーク上のワークステーション間の通信が、信頼できる形で実現されます。また、ネットワークサブシステムによって、システムのセキュリティポリシー (MAC、情報ラベルの移動など) がネットワークのアプリケーション上でも確実に保護されます。各サイトのネットワークに必要な管理と保護の程度は、そのネットワークが同機種システム構成か異機種システム混在構成かによって異なります。
デフォルト構成では、セキュリティ管理者がネットワークセキュリティを管理することになっています。
この節では、ネットワークに関する次のトピックについて説明します。
同機種システムネットワーク
異機種システム混在ネットワーク
ホストの種類
ネットワーク構成データベース
関連サブシステム
データの転送方法
同機種システムネットワークは、管理と保護がもっとも簡単な構成です。同機種システムネットワーク構成では、すべてのワークステーションが Trusted Solaris 7 オペレーティング環境を使用し、同じセキュリティ属性セット (機密ラベル、情報ラベルなど) を持つ同じ NIS+ マスターサーバーを使用します。NIS+ マスターのサービスを受ける一般的な同機種システムネットワークは、次の図に示すような構成になります。同機種システムネットワークのホストは、同じセキュリティドメインに属するものとみなされます。
ワークステーションは、ネットワークインタフェースと呼ばれる物理コネクタでネットワークに接続されます。各ネットワークインタフェースの認可範囲は、最上位機密ラベルによって上限を、最下位機密ラベルによって下限を定義されています。インタフェースを介して送受信される情報の機密度は、この認可範囲によって制御されます。
Trusted Solaris ネットワークには、別のネットワークプロトコルを実行するホストも接続できます。異機種システム混在構成には、同機種システム構成よりも厳重な保護が必要になります。したがって、セキュリティポリシーで、異なるプロトコルのホストから受信するデータの処理方法を指定する必要があります。次の図は、一般的な異機種システム混在ネットワークと、Trusted Solaris ネットワークで通信可能なプロトコルを示しています。
Trusted Solaris ワークステーションが、他の Trusted Solaris ワークステーションや別のデータプロトコルを使用するホストからデータを受け入れる方法を理解するには、標準 Solaris のデータパケットフォーマット (図 5-3 (a))と Trusted Solaris のフォーマット (図 5-3 (b)) とを比較してみるのが良いでしょう。
標準フォーマットは、3 つのヘッダーと、データ領域 1 つ、トレーラ 1 つで構成されています。Trusted Solaris フォーマットにも同じフィールドがありますが、特に次のような特長が備わっています。
「IP オプション」フィールドに、RIPSO (Revised Internet Protocol Security Option) ラベルまたは CIPSO (Common Internet Protocol Security Option) ラベルを格納する。サポートされている CIPSO オプションには、CIPSO ホスト用のタグタイプ 1 と、MSIX ホスト用のタグタイプ 3 の 2 種類があります。
セッション管理プロトコルとバージョンを識別する SAMP (Security Attribute Modulation Protocol) ヘッダーが含まれる
属性タイプがバイナリ形式とトークン形式のどちらで送信されるのかを示す、属性ヘッダーが含まれる。Trusted Solaris ではバイナリ形式しか使用しませんが、トークン形式を使用するプロトコルからもデータを受信できます。
Trusted Solaris では、ネットワーキングプロトコルに応じてホストの種類が分類されるため、データを正確に転送できます。ホストの種類は次のように分類されます。
sun_tsol - Trusted Solaris 2.5 を稼動するワークステーション。プロトコルのセキュリティ属性はバイナリ形式で表現される。Trusted Solaris ホストは、IP オプションが RIPSO または CIPSO のデータの受け渡しが可能
tsix - TSIX (RE) 1.1 (Trusted Systems Information eXchange for Restricted Environments standard) をサポートしているホスト。バイナリデータの代わりにトークン (32 ビットの任意の数値) を使用してセキュリティ属性を表現するほかは、Trusted Solaris ホストと同じフォーマット (図 5-3) を使用する。トークンは、セキュリティ属性トークンマッピングプロトコル (SATMP) を使用する
msix - MSIX 1.0 規格をサポートしているホスト。Trusted Solaris 1.2 ネットワークで使用する
cipso - CIPSO に準拠するホスト。CIPSO でサポートされるセキュリティ属性は、CIPSO DOI (domain of interpretation) のみ
ripso - IETF RFC 1108 の記述どおり、RIPSO に準拠するホスト。SunOS CMW は、RIPSO ラベルに設定された管理セットをサポートして、特定のホストに送信されるネットワークパケットに適用させる。RFC の仕様に完全に合致したものではないが、RIPSO ラベルが必要な場合には十分有用
tsix、msix、cipso、ripso の各ホストの種類は、Trusted Solaris 以外のトラステッドなオペレーティング環境を使用するホストとして分類されます。ラベルなしのホストの種類は、標準のネットワーキングプロトコルを使用し、セキュリティ属性を使用しないホストとして分類されます。
ネットワーク構成データベースを自分のサイトに合わせて構成するときは、すべてのホストに対し、ネットワーク上で通信可能なワークステーションを指定します。また、上記のホストの種類で分類されたデフォルトのセキュリティ属性値を使用してテンプレートを設定します。これについては次の節で説明します。
外部との通信を実現するには、ホスト情報、ネットワークインタフェース情報、デフォルトのセキュリティ属性情報を保持するためのデータベースを設定します。次の 3 種類のネットワーク構成データベースを使用することができます。
tnrhdb
tnrhtp
tnidb
これらのデータベースはカーネルに読み込まれ、データがホストからホストに転送される際の認可チェックに使用されます。データベースの管理にはデータベースマネージャを使用します。Trusted Solaris では、NIS+ を使用して tnrhddb データベースと tnrhtp データベースを集中管理します。tnidb データベースだけは、各ホストで個別に管理されます。ネットワークデータベースを管理できるのは、セキュリティ管理者とスーパーユーザーだけです。データベースマネージャにアクセスするには、フロントパネルの CDE アプリケーションマネージャのアイコンをクリックします。データベースマネージャのアイコンは、「アプリケーション・マネージャ (Application Manager)」ウィンドウの「Solstice アプリケーション (Solstice_Apps)」フォルダアイコンから表示できます。「データベースマネージャ (Database Manager)」アイコンをクリックすると、「データベースマネージャ: 読み込み (Database Manager : Load)」ダイアログボックスが現れ、データベースを選択するためのスクロールリストが表示されます。
tnrhdb(4) データベースには、ネットワーク上のワークステーションと通信可能なすべてのホストのIP アドレスと、それらのホストに (tnrhtp から) 割り当てられたテンプレートが保持されます。また、代替機構の一部として、デフォルト値も保持されます (次の図を参照)。IP アドレスの右端のバイトに 0 を代入すると、これがワイルドカードとして機能し、0 以外のデフォルト部が一致する IP アドレスを持った、リストに表示されていないホストすべてを表します。ただし、代替機構はサブネットマスクには適用されません。
データベースマネージャで tnrhdb データベースを選択して読み込むと、データベースマネージャのメインウィンドウに tnrhdb データベースの内容が表示され、リモートホストの IP アドレスと、そのホストとの通信に使用するテンプレートを確認できます。tnrhdb データベースを編集するためには、「編集 (Edit)」メニューから「追加 (Add)」を選択するか、IP アドレスを指定した後「変更 (Modify)」を選択して、適切なダイアログボックスを表示します。次の図に示すのは、データベースマネージャの「読み込み (Load)」ウィンドウ、tnrhdb データベースが表示されたメインウィンドウ、「編集 (Edit)」メニューから表示される 2 種類のダイアログボックスです。
tnrhtp(4) データベースには、ソースホストに割り当てるセキュリティ属性値を含むテンプレートが保持されます。同機種システムネットワークでは 1 種類のテンプレートしか必要ありませんが、異機種システムネットワークになると、ホストタイプに応じて別々のテンプレートが必要になります。テンプレートに含まれる属性は、着信データに属性が欠如している場合のデフォルト属性として使用されるほか、発信データの宛先情報も提供します。対応付けられるセキュリティ属性は、テンプレートに指定されたホストタイプに依存します。tnrhtp に保持されるセキュリティ属性には、次のものがあります。
強制された特権
RIPSO ラベル
RIPSO エラー - ICMP エラーメッセージに RIPSO ラベルが含まれているときに使用される保護許可フラグ
CIPSO DOI - CIPSO ラベルのパケットで使用されるホストの DOI (Domain of Interpretation) を識別する
監査マスク
監査端末 ID
監査セッション ID
テンプレートの ip_label フィールドが「cipso」に設定されている場合、または、リモートホストタイプが「cipso」である場合は、タグタイプ 1 が使用されます。リモートホストタイプが MSIX の場合は、タグタイプ 3 が使用されます。ただし、どの属性も特定のタイプのホストだけに適用されます。表 5-1 は、適用されるセキュリティ属性をホストタイプ別に示しています。
表 5-1 ホストタイプ別セキュリティ属性
ホストタイプ |
セキュリティ属性 |
---|---|
ラベルなし |
機密ラベル、情報ラベル、認可上限、UID、GID、強制された特権、監査 UID、監査マスク、監査端末 ID、監査セッション ID、(ゲートウェイホストの最下位 SL と最上位 SL) |
sun_tsol |
許容された特権、最下位 SL と最上位 SL、IP ラベル、RIPSO ラベル、RIPSO エラー、CIPSO DOI、監査 UID、監査マスク、監査端末 ID、監査セッション ID |
ripso |
機密ラベル、情報ラベル、認可上限、UID、GID、強制された特権、RIPSO ラベル、RIPSO エラー、監査 UID、監査マスク、監査端末 ID、監査セッション ID、(ゲートウェイホストの最下位 SL と最上位 SL) |
cipso |
認可上限、情報ラベル、UID、GID、強制された特権、最下位 SL と最上位 SL、CIPSO DOI、監査 UID、監査マスク、監査端末 ID、監査セッション ID |
tsix |
機密ラベル、情報ラベル、認可上限、UID、GID、許容された特権、強制された特権、最下位 SL と最上位 SL、IP ラベル、RIPSO ラベル、RIPSO エラー、CIPSO DOI、監査 UID、監査マスク、監査端末 ID、監査セッション ID |
msix |
機密ラベル、情報ラベル、認可上限、UID、GID、最下位 SL と最上位 SL、監査 UID、監査マスク、監査端末 ID、監査セッション ID |
データベースマネージャから tnrhtp データベースを選択して読み込むと、データベースマネージャのメインウィンドウに tnrhtp データベースの内容が表示され、各リモートホストのテンプレート名と、それに対応付けられたデフォルト属性値を確認できます。tnrhtp データベースを編集するためには、「編集 (Edit)」メニューから「追加 (Add)」を選択するか、テンプレートを指定してから「変更 (Modify)」を選択します。次の図に示すようなダイアログボックスが表示されます。
ダイアログボックスは、次の 4 つの領域に分かれています。
テンプレート名とホストタイプ - テンプレートを識別する領域「ホストタイプ (Host Type)」メニューから、そのテンプレートを適用するホストの種類を選択できます。
認可範囲 - 「最下位 SL (Minimum SL)」と「最上位 SL (Maximum SL)」の両フィールドテンプレートの認可範囲を確定できます。このフィールドには、機密ラベル、情報ラベル、認可上限などのフィールドと、ラベルビルダーのダイアログボックスを表示するためのボタンがあります。
着信情報の属性 - 着信情報に適用するユーザー ID、機密ラベル、情報ラベル、認可上限、強制された特権と許容された特権を設定する領域「強制された特権 (Forced Privileges)」ボタン、「許容された特権 (Allowed Privileges)」ボタンをクリックすると、特権を選択するダイアログボックスが表示されます。
発信情報の属性 - 発信情報に適用する IP ラベルタイプ、RIPSO 戻りクラス、RIPSO 送信クラス、RIPSO 戻り PAF、CIPSO ドメインを設定する「I.P. ラベルの型 (IP Label Type)」フィールドにはオプションメニューがあり、「なし (None)」、「RIPSO」、「CIPSO」のうちいずれかを選択できます。このフィールドを「CIPSO」に設定すると (またはホストタイプが CIPSO の場合は)、データパケットの IP オプションのフィールドに CIPSO のタグタイプ 1 が使用されます。ホストタイプが MSIX の場合は、CIPSO のタグタイプ 2 が使用されます。「RIPSO 送信クラス (RIPSO Send Class)」フィールドのオプションメニューからは、送信される RIPSO ラベルの格付け要素として、「なし (None)」、「TOP SECRET」、「SECRET」、「CONFIDENTIAL」、「UNCLASSIFIED」、「16 進数 (Hex)」を選択できます。「16 進数 (Hex)」を選択すると、16進数を直接入力できるダイアログボックスが表示されます。「RIPSO 送信 PAF (RIPSO Send PAF)」フィールドでは、送信される RIPSO ラベルの保護許可フラグ要素として、「なし (None)」、「GENSER」、「SIOP_ESI」、「SCI」、「NSA」、「DOE」、「16 進数 (Hex)」を選択できます。「RIPSO 戻り PAF (RIPSO Return PAF)」フィールドでは、「なし (None)」、「GENSER」、「SIOP_ESI」、「SCI」、「NSA」、「DOE」、「16 進数 (Hex)」のオプションメニューから、エラーフラグを選択できます。
tnidb(4) データベースは、各ホストのローカルデータベースです。ここには、ホストのネットワークインタフェースとその認可範囲、機密ラベル、認可上限、実効 UID (実効 GID)、強制された特権の各デフォルト値が保持されます。ただし、tnidb の値よりtnrhtp のデフォルト値の方が優先されます。
データベースマネージャから tnidb データベースを選択して読み込むと、データベースマネージャのメインウィンドウに tnidb データベースの内容が表示され、ネットワークインタフェース、そのインタフェースの認可範囲、対応するデフォルトのセキュリティ属性を確認できます。tnidb データベースを編集するには、「編集 (Edit)」メニューの「追加 (Add)」を選択するか、ネットワークインタフェースを指定した後「変更 (Modify)」を選択して、それぞれのダイアログボックスを表示します。次の図は、tnidb データベースのメインウィンドウと「追加 (Add)」ダイアログボックスを示しています。「最下位 SL (Minimum SL)」ボタンと「最上位 SL (Maximum SL)」ボタンは認可範囲の定義に使用され、クリックするとラベルビルダーのダイアログボックスが表示されます。「機密ラベル (Sensitivity Label)」ボタン、「認可上限 (Clearance)」ボタンからも、ラベルビルダーが表示されます。「強制された特権 (Forced Privileges)」ボタンをクリックすると、特権を選択するダイアログボックスが表示されます。「ユーザー ID (User ID)」フィールド、「グループ ID (Group ID)」フィールドには、そのネットワークインタフェースに適用するデフォルトの ID を指定します。
Trusted Solaris 2.5.1 のトラステッド NFS 機能により、Trusted Solaris ホストと異種ホスト間でのマウントが可能になりました。転送されたデータは MAC と DAC によって保護され、欠落したセキュリティ属性がある場合は、tnrhtp データベースや tnidb データベースから取得することができます。詳細は、「Solaris ネットワークコマンドとの相違点」を参照してください。
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 経由の経路を区別することができなくなります。
この項で説明する次のネットワークコマンドは、Solaris の基本コマンドを Trusted Solaris 環境の操作向けに変更したものです。
arp
ifconfig
netstat
route
snoop
spray
ndd
rdate
arp(1M) コマンドを使用すると、アドレス解決プロトコルに使用されるインターネットと Ethernet 間での変換テーブルを表示、変更できます。Trusted Solaris 版の arp コマンドにオプション -d、-s または -f を付けて実行するには、sys_net_config 特権の継承が必要です。-a オプションを使用する場合は、実効 UID を 0 に指定し ADMIN_HIGH で実行する必要があります。ただし、この制約は、file_mac_read 特権、file_dac_read 特権によって無効にできます。
ifconfig(1M) コマンドを使用すると、ネットワークパラメータを構成し、ネットワークインタフェースにアドレスを割り当てることができます。Trusted Solaris 版の ifconfig コマンドには、sys_net_config 特権が必要です。ether、auto-revarp、plumb の各オプションを使用するには、スーパーユーザーだけが読み取ることのできる ADMIN_HIGH のネットワークデバイスを開く必要があります。これらのオプションは、実効 UID が 0 に指定された ADMIN_HIGH で使用できます。また、file_dac_read 特権、file_mac_read 特権で無効にすることもできます。
ndd(1M) コマンドの -set オプションを使用してドライバパラメータを設定するには、sys_net_config 特権の継承が必要です。
netstat(1M) コマンドは、ネットワーク関連のデータ構造 (ソケット、ルーティングテーブルなどの構造) の内容を、さまざまな形式で表示します。異なるネットワークに接続されたホストと通信する際は、netstat -rn と入力し、ゲートウェイが構成されていることを確認します。Trusted Solaris 版の netstat コマンドを使用して、カーネル情報およびネットワーク構成情報にアクセスするには、機密ラベルが ADMIN_HIGH でなくてはなりません。この制約は、file_mac_read 特権で無効にできます。
-R オプションを使用すると、セキュリティ情報のほかに、動的ルーティングテーブルに含まれる各経路のメトリック情報も表示できます。ただし、これには net_rawaccess 特権が必要です。このオプションの使用例については、「ルーティングコマンドの使用法」を参照してください。
rdate(1M) コマンドを正しく実行するには、sys_config 特権が必要です。
route(1M) コマンドを使用して、emetric (セキュリティ情報) の追加、削除などのネットワークルーティングテーブルの操作ができます。Trusted Solaris 版の route コマンドを正しく実行するには、sys_net_config 特権の継承が必要です。Trusted Solaris 環境の route コマンドには、次の 3 つのオプションがあります。
-m - コマンド行で拡張メトリック情報を指定する
-e - 拡張メトリック情報が保持されているファイルを指定する
-t - 通常のメトリックまたは拡張メトリックとともに、追加する経路が保持されているファイルを指定する
IP デバイスを開いて経路を追加または削除できるようにするには、sys_net_config 特権の継承が必要です。また、ADMIN_HIGH の機密ラベルで、実効 UID を 0 にするか、sys グループに指定して実行しなくてはなりません。MAC ポリシーの条件である ADMIN_HIGH の制約は、file_mac_read 特権で無効にできます。DAC の条件である UID 0 または sys グループの制約は、file_dac_read 特権で無効にできます。詳細は、「Trusted Solaris のルーティング」を参照してください。
snoop(1M) コマンドは、ネットワークからパケットを取り込み、その内容を表示します。ネットワークデバイスを開くときは、Trusted Solaris 版の snoop コマンドを機密ラベル ADMIN_HIGH で、実効 UID を 0 に指定して実行する必要があります。この 2 つの条件は、プロセスに file_mac_read 特権と file_dac_read 特権が指定されている場合は必要ありません。そのほか、snoop コマンドには、sys_net_config 特権の継承も必要になります。なお、-i オプションは、ネットワークデバイスではなくファイルを開くため、使用条件は異なります。
snoop コマンドを使用すると、パケットの SAMP セキュリティ属性と IP オプションも表示できます。
spray(1M) コマンドは、RPC を使用して、指定されたホストに一方向ストリームのパケットを送信し、受信数と転送速度のレポートを出力します。ホストがブロードキャストアドレスの場合、コマンドを正しく実行するためには net_broadcast 特権の継承が必要です。
この項で説明する次のネットワークコマンドは、Trusted Solaris 特有のものです。
tnchkdb
tnctl
tnd
tninfo
tokmapd
tokmapctl
tnd コマンド、tokmapd コマンドは、それぞれトラステッドネットワークデーモンとトークンマッピングデーモンを呼び出します。トークンマッピングデーモンは、TSIX ホストとの通信が必要な場合に使用します。tnctl コマンドは、ネットワーキング情報をカーネルのキャッシュに読み込みます。この情報は、tninfo コマンドでチェックすることができます。また、tnchkdb コマンドでネットワーク構成データベースの障害を検査し、tokmapctl コマンドで TSIX トークンマッピングの障害を追跡することができます。
tnchkdb(1M) コマンドは、tnrhdb、tnrhtp、tnidb の各データベースの形式に含まれるエラーをチェックします。データベースを変更または作成するたびにこのコマンドを実行します。
tnctl(1M) コマンドを使用すると、Trusted Solaris ネットワークデーモンの制御パラメータを構成できます。このパラメータはデバッグ、カーネルインタフェースキャッシュの更新、カーネルリモートホストキャッシュの更新、カーネルテンプレートキャッシュの更新などに使用します。
tnctl コマンドは、トラステッドパスメニューから実行します。また、カーネルキャッシュを更新するには、sys_net_config 特権の継承が必要です。
tnd(1M) (トラステッドネットワークデーモン) コマンドは、トラステッドネットワークデータベースが読み込まれているカーネルを初期化したり、必要に応じてデータベースを再度読み込む際に使用します。トラステッドネットワークデーモンは、ブート処理のはじめに起動し、tnrhdb、tnrhtp、tnidb データベースをカーネルに読み込みます。
tnd コマンドを実行するには、トラステッドパスメニューを使用し、net_privaddr、net_mac_read、sys_net_config の各特権を継承する必要があります。また、rc スクリプトから起動し、機密ラベル ADMIN_LOW で実行しなくてはなりません。
-d オプションを使用すると、tnd のデバッグ機能が有効になり、デバッグ情報をログファイルに記録できます。ネットワークのデバッグに使用されるデフォルトのログファイルは/var/tsol/tndlog です。このファイルには、デバッグメッセージごとに 1 レコードずつ格納されます。デバッグメッセージには、デバッグ情報と時間が記録されます。
デフォルトでは、デバッグ機能が有効になっていないと、tndlog ファイルが作成されません。tndlog ファイルは、tnd コマンドの -d オプションのほか、tnctl コマンドでも作成できます。
tninfo(1M) コマンドを使用すると、ホスト情報 (-h)、テンプレート情報 (-t)、カーネルレベルのネットワーク情報と統計 (-k) を印刷できます。カーネルにキャッシングされている情報が正しいかどうかをチェックするために使用します。tninfo コマンドは、機密ラベル ADMIN_HIGH で、実効 UID を 0 にして実行しなくてはなりません。こうした制約は、file_mac_read、sys_trans_label、file_dac_read の各特権で無効にできます。tninfo の実行可能ファイルは、機密ラベル ADMIN_LOW で管理します。ADMIN_LOW には、アクセス権ビット 555、所有者、スーパーユーザー、sys グループが指定されています。
# tninfo ================== kernel statistics ================== fails host accreditation: 1496 fails interface accreditation: 0 number of seccom structures allocated: 29020 deallocated but memory not yet reclaimed: 28885 memory reclaimed: 28885
tokmapd(1M) (トークンマッピングデーモン) コマンドは、SATMP トークンマッピングプロトコルを実装し、トラステッドネットワーク外に転送される情報のラベル付けを行います。情報には、属性値を示すトークンによってラベルが付けられます。tokmapd は、トークンと属性値対応付けを行うコマンドで、カーネルや他のホストのトークンマッピングサーバーからのトークンマッピング要求を受け入れます。デバッグ用のオプションも多数用意されています。
tokmapd コマンドは、トラステッドパスメニューから実行します。このとき、net_privaddr、proc_setclr、proc_setsl の各特権の継承と、機密ラベル ADMIN_HIGH が必要です。
tokmapctl(1M) コマンドは、tokmapd の処理に制御要求と構成要求を送信するインタフェースの役目をします。このコマンドは、トラステッドパスから実行します。このとき、net_privaddr 特権と net_mac_read 特権の継承と、機密ラベル ADMIN_HIGH が必要です。
この節では、ネットワーク障害のデバッグに役立つ Trusted Solaris ツールとコマンドを紹介します。コマンドの詳細については、それぞれのマニュアルページのほか、『Trusted Solaris 管理の手順』の パート III の「ホストおよびネットワーク管理」を参照してください。Trusted Solaris 環境には、snoop(1M)、ipcs(1)、netstat(1M) などの標準のネットワークデバッグコマンドも用意されています。
データ転送で使用するソースホスト、宛先ホスト、ゲートウェイホストのセキュリティ情報を取得するには、tninfo(1M) コマンドを使用します。これにより、カーネルに保持されている情報が正確かどうかをチェックできます。このコマンドは、ADMIN_HIGH で、実効 UID を 0 にして実行されなくてはなりません。ただし、こうした制約は、file_mac_read、sys_trans_label、file_dac_read の各特権で無効にできます。tninfo の実行可能ファイルは、アクセス権ビット 555、所有者、スーパーユーザー、sys グループが指定された、機密ラベル ADMIN_LOW で管理します。tninfo コマンドの使用方法は次のとおりです。
tninfo -h [<hostname>] - すべてのホストまたは指定したホストの IP アドレス、ポート、テンプレートを表示する
tninfo -t <templatename> - すべてのテンプレートまたは指定したテンプレートについて、ホストの種類、最下位機密ラベル (ラベル形式と 16 進形式で表示)、最上位機密ラベル (ラベル形式と 16 進形式で表示)、許容された特権、IP ラベルの種類 (RIPSO、CIPSO、ラベルなし) を表示する
tninfo -k - ホスト認可チェックの不合格数、ネットワーク認可チェックの不合格数、メモリ割り当てに関する統計など、カーネル統計情報を表示する
ネットワークセキュリティ情報を変更または確認するにはデータベースマネージャから tnrhtp、tnrhdb、tnidb の各ファイルを表示します。NIS+ テーブルを使用していないネットワークでは、変更内容がファイルに保存されると直ちに反映されます。NIS+ テーブルを使用している場合は、ネットワークデーモンが次にデータベースをポーリングしたとき、またはシステムがリブートされたときに変更が反映されます。少しでも早く反映させたい場合は、更新した情報を必要とするホストで、tnd(1M) コマンドに -p オプションを付けて実行し、ポーリング間隔を短縮します。ただし、変更が反映された後は、必ずポーリング間隔を元に戻してください。
ネットワークデーモンからデバッグ情報を収集するにはネットワークを起動する際、tnd(1M) コマンドに -d オプションを付けて実行します。すると、デバッグデータがデフォルトで /var/tsol/tndlog ファイルに書き込まれるので、このログファイルを検索して障害やその他の症状を確認します。
ネットワークがすでに稼動している場合に、ネットワークデーモンからデバッグ情報を収集するには tnctl(1M) コマンドに -d オプションを付けて実行します。すると、デバッグデータがデフォルトで /var/tsol/tndlog ファイルに書き込まれるので、このログファイルを検索して、障害やその他の症状を確認します。
CIPSO 転送をチェックするにはtninfo コマンドに -h と -t オプションを付けて実行し、ソースホスト、宛先ホスト、ゲートウェイホストの DOI が同じであること、その他すべてのセキュリティ属性が適切であることを確認します。
RIPSO 転送をチェックするにはtninfo コマンドに -h と -t オプションを付けて実行し、ソースホスト、宛先ホスト、ゲートウェイホストの RIPSO ラベルが同じであること、その他すべてのセキュリティ属性が適切であることを確認します。
TSIX 転送をチェックするにはtokmapd コマンドに -d オプションを付けて実行するか、tokmapctl -d を実行してログを作成し、適切なデバッグレベルを選択します。デバッグデータは、デフォルトで /var/tsol/tokmapdlog ファイルに書き込まれるので、snoop(1M) を使用して、ソース、宛先のどちらでもトークンをやりとりできることを確認します。
MSIX 転送をチェックするには/etc/group ディレクトリに「wheel」という名前の特別なグループがあります。tokmapd コマンドに -d オプションを付けて実行するか、 tokmapctl -d を使用してログを作成し、適切なデバッグレベルを選択します。デバッグデータは、デフォルトで /var/tsol/tokmapdlog に書き込まれるので、snoop(1M) を使用して、ソース、宛先のどちらでもトークンをやりとりできることを確認します。