RPC ALG
リモートプロシージャコール(RPC)ALGは、既知のポートTCP 111およびUDP 111を使用してポートマッピングを行い、RPCサービスのポートを動的に割り当てて開きます。RPC ポートマップ ALG はポート要求を追跡し、要求されたポートのファイアウォールを動的に開きます。RPC ALGは、許可されたプログラム番号を指定することで、RPCプロトコルをさらに制限することができます。
RPC ALG について
Junos OS は、基本的なリモート プロシージャ コール アプリケーション レイヤー ゲートウェイ(RPC ALG)サービスをサポートしています。RPC は、あるアドレス・スペースで実行されるアプリケーションが、リソースが最初のアドレス・スペースにローカルであるかのように、別のアドレス・スペースで実行されているアプリケーションのリソースにアクセスできるようにするプロトコルです。RPC ALG は、RPC パケット処理を担当します。
Junos OS の RPC ALG は、以下のサービスと機能をサポートしています。
Sun Microsystems RPC Open Network Computing(ONC)
Microsoft RPC 分散コンピューティング環境(DCE)
動的ポートネゴシエーション
特定の RPC サービスを許可または拒否する機能
静的ネットワークアドレス変換(NAT)とソースNAT(ポート変換なし)
セキュリティ ポリシーにおける RPC アプリケーション
NFS や Microsoft Outlook などの RPC ベースのアプリケーションを実行する必要がある場合は、RPC ALG を使用します。RPC ALG 機能はデフォルトで有効になっています。
Sun RPC ALG について
Open Network Computing Remote Procedure Call(ONC RPC)とも呼ばれる Sun Microsystems Remote Procedure Call(Sun RPC)は、あるホストで実行されるプログラムが別のホストで実行されているプログラムでプロシージャを呼び出す方法を提供します。RPC サービスの数が多く、ブロードキャストする必要があるため、RPC サービスのトランスポート アドレスはサービスのプログラム番号とバージョン番号に基づいて動的にネゴシエートされます。RPC プログラム番号とバージョン番号をトランスポート アドレスにマッピングするために、いくつかのバインディング プロトコルが定義されています。
Junos OSは、事前定義されたサービスとしてSun RPCをサポートし、設定したセキュリティポリシーに基づいてトラフィックを許可および拒否します。ALG(アプリケーションレイヤーゲートウェイ)は、Sun RPCの動的トランスポートアドレスネゴシエーションメカニズムを処理し、プログラム番号ベースのセキュリティポリシーを確実に適用する機能をジュニパーネットワークスデバイスに提供します。セキュリティポリシーを定義して、すべてのRPC要求を許可または拒否したり、特定のプログラム番号で許可または拒否することができます。ALG は、受信要求と送信要求に対してルート モードと NAT(ネットワーク アドレス変換)モードもサポートしています。
アプリケーションまたは PC クライアントがリモート サービスを呼び出す場合、サービスのトランスポート アドレスを見つける必要があります。TCP/UDP の場合、アドレスはポート番号です。このケースの一般的な手順は次のとおりです。
クライアントは、リモート マシン上の RPCBIND サービスに GETPORT メッセージを送信します。GETPORT メッセージには、呼び出そうとするプログラム番号、および呼び出そうとするリモート・サービスのバージョンおよびプロシージャー番号が含まれています。
RPCBIND サービスは、ポート番号で応答します。
クライアントは、返されたポート番号を使用してリモート サービスを呼び出します。
リモートサービスはクライアントに返信します。
また、クライアントは CALLIT メッセージを使用して、サービスのポート番号を決定せずにリモート・サービスを直接呼び出すことができます。この場合、手順は次のとおりです。
クライアントは、リモート・マシン上の RPCBIND サービスに CALLIT メッセージを送信します。CALLIT メッセージには、呼び出そうとするリモート・サービスのプログラム番号とバージョンおよびプロシージャー番号が入っています。
RPCBIND はそのクライアントのサービスを呼び出します。
RCPBIND は、呼び出しが成功した場合、クライアントに応答します。応答には、呼び出し結果とサービスのポート番号が含まれています。
Sun RPC ALG は、デフォルト サイズ(512 エントリー)を使用する代わりに、新しいマッピング エントリーを動的に割り当てます。また、制御セッションとデータ セッションの両方を含む、関連するアクティブな RPC セッションに影響を与えることなく、マッピング エントリ(自動クリーン)を削除する柔軟な時間ベースの RPC マッピング エントリも提供します。
Junos OS 15.1X49-D10 および Junos OS リリース 17.3R1 以降では、Sun RPC マッピング エントリーのエージングアウト値を定義できます。コマンドを set security alg sunrpc map-entry-timeout value
使用します。エージアウト値の範囲は 1 時間から 72 時間で、デフォルト値は 32 時間です。Sun RPC ALG サービスが 72 時間後でも制御ネゴシエーションをトリガーしない場合、最大 RPC ALG マッピングエントリ値がタイムアウトし、サービスへの新しいデータ接続が失敗します。
Sun RPC ALG の有効化
Sun RPC ALG はデフォルトで有効になっており、設定は必要ありません。
Sun RPC ALG の有効化(CLI 手順)
Sun RPC ALG を無効にするには、次のコマンドを入力します。
user@host# set security alg sunrpc disable
Sun RPC ALG を再び有効にするには、次のコマンドを入力します。
user@host# delete security alg sunrpc
Sun RPC アプリケーションのカスタマイズ(CLI 手順)
すべての Sun RPC アプリケーションは、事前定義されたアプリケーション・セットを使用してカスタマイズできます。
例えば、アプリケーションをカスタマイズして制御セッションのみを開き、データセッションを許可しないことができます。
application-set junos-sun-rpc { application junos-sun-rpc-tcp; application junos-sun-rpc-udp; }
次の例では、事前定義されたアプリケーション・セットによってデータ・セッションのみが許可されています。制御セッションがなければ機能しません。
application-set junos-sun-rpc-portmap { application junos-sun-rpc-portmap-tcp; application junos-sun-rpc-portmap-udp; }
事前定義されたアプリケーション・セットですべての Sun RPC アプリケーションをカスタマイズするには、ポリシーで両方のアプリケーション・セットを使用します。
application-set [junos-sun-rpc junos-sun-rpc-portmap]
MS RPC アプリケーションは、Sun RPC アプリケーションと同じ方法でカスタマイズされています。
Sun RPC サービスについて
Open Network computing リモート プロシージャ コール(ONC RPC)とも呼ばれる Sun RPC は、あるホスト上で実行されているプログラムが別のホスト上で実行されているプログラムでプロシージャを呼び出す方法を提供します。Sun RPC サービスは、プログラム識別子によって定義されます。プログラム識別子はトランスポート アドレスに依存しません。ほとんどの Sun RPC セッションは TCP または UDP ポート 111 を介して開始されます。各ホストは、必要な RPC サービスを、ポート 111 制御チャネルでネゴシエートされた動的 TCP または UDP ポートにリンクし、クライアントが TCP ポートまたは UDP ポート 111 のいずれかに接続できるようにします。
事前定義された Sun Microsystems リモート プロシージャ コール(Sun RPC)サービスには、以下が含まれます。
junos-sun-rpc-tcp
junos-sun-rpc-udp
Sun RPC ALG は、次の方法を使用して適用できます。
ALG デフォルト アプリケーション — ポリシー内の制御およびデータ接続には、以下の事前定義されたアプリケーションのいずれかを使用します。
junos-sun-rpc-any-tcp
junos-sun-rpc-any-udp
junos-sun-rpc-mountd-tcp
junos-sun-rpc-mountd-udp
junos-sun-rpc-nfs-tcp
junos-sun-rpc-nfs-udp
junos-sun-rpc-nlockmgr-tcp
junos-sun-rpc-nlockmgr-udp
junos-sun-rpc-portmap-tcp
junos-sun-rpc-portmap-udp
junos-sun-rpc-rquotad-tcp
junos-sun-rpc-rquotad-udp
junos-sun-rpc-ruserd-tcp
junos-sun-rpc-ruserd-udp
junos-sun-rpc-sadmind-tcp
junos-sun-rpc-sadmind-udp
junos-sun-rpc-sprayd-tcp
junos-sun-rpc-sprayd-udp
junos-sun-rpc-status-tcp
junos-sun-rpc-status-udp
junos-sun-rpc-walld-tcp
junos-sun-rpc-walld-udp
junos-sun-rpc-ypbind-tcp
junos-sun-rpc-ypbind-udp
junos-sun-rpc-ypserv-tcp
junos-sun-rpc-ypserv-udp
デフォルトの制御アプリケーション — 以下を通して事前定義された制御を
junos-sun-rpc
使用します。データ用アプリケーションを作成します(
USER_DEFINED_DATA
)。独自のデータのセットを作成し(例えば)、my_rpc_application_set
ポリシーで使用することができます。ALG デフォルト アプリケーション セット - ポリシーで制御およびカスタマイズされたデータ アプリケーションに、事前定義されたアプリケーション セットを使用します。
junos-sun-rpc
(制御セッション用)junos-sun-rpc-any
junos-sun-rpc-mountd
junos-sun-rpc-nfs
junos-sun-rpc-nfs-access
junos-sun-rpc-nlockmgr
junos-sun-rpc-portmap
(データ セッション用)junos-sun-rpc-rquotad
junos-sun-rpc-ruserd
junos-sun-rpc-sadmind
junos-sun-rpc-sprayd
junos-sun-rpc-status
junos-sun-rpc-walld
junos-sun-rpc-ypbind
junos-sun-rpc-ypserv
カスタムコントロールとカスタムデータアプリケーション - カスタマイズされたアプリケーションを使用します。
制御()とデータ
USER_DEFINED_DATA
(USER_DEFINED_CONTROL
)のアプリケーションを作成します。ポリシーでは、制御およびカスタマイズされたデータ アプリケーションにユーザー定義アプリケーション セットを使用します。
USER_DEFINED_CONTROL
USER_DEFINED_DATA
表 1 は、事前定義された Sun RPC サービス、各サービスに関連付けられたプログラム識別子、および各サービスの説明を示しています。
サービス |
プログラムID |
説明 |
---|---|---|
Portmap |
100000 |
Sun RPC ポートマッパー プロトコルは、TCP または UDP ポート 111 を含む TCP または UDP ポートベースのサービスです。 |
Nfs |
100003 |
Sun RPC ネットワーク ファイル システム |
マウント |
100005 |
Sun RPC マウント プロセス。 |
ファイルビント |
100007 |
Sun RPC イエロー ページ バインド サービスです。 |
ステータス |
100024 |
Sun RPC ステータス。 |
Microsoft RPC ALG について
Microsoft リモート プロシージャ コール(MS-RPC)は、Microsoft による分散コンピューティング環境(DCE)RPC の実装です。Sun RPC と同様に、MS-RPC は、あるホスト上で実行されているプログラムが別のホスト上で実行されているプログラムのプロシージャを呼び出す方法を提供します。RPC サービスの数が多く、ブロードキャストする必要があるため、RPC サービスのトランスポート アドレスは、サービス プログラムの UUID(ユニバーサル一意識別子)に基づいて動的にネゴシエートされます。特定の UUID はトランスポート アドレスにマッピングされます。
Junos OSを実行するJunos OSデバイスは、事前に定義されたサービスとしてMS-RPCをサポートし、設定したポリシーに基づいてトラフィックを許可および拒否します。ALG(アプリケーションレイヤーゲートウェイ)は、MS-RPCの動的トランスポートアドレスネゴシエーションメカニズムを処理し、UUIDベースのセキュリティポリシーを確実に適用する機能をジュニパーネットワークスデバイスに提供します。セキュリティ ポリシーを定義して、RPC のすべての要求を許可または拒否したり、特定の UUID 番号で許可または拒否することができます。ALG は、受信要求と送信要求に対してルート モードと NAT(ネットワーク アドレス変換)モードもサポートしています。
MS-RPC クライアントと MS-RPC サーバーの両方が 64 ビット対応(MS Exchange 2008 など)の場合、ネットワーク通信中に NDR64 転送構文を使用するようにネゴシエートします。NDR64を使用する場合、NDR64のパケット形式はNDR20のパケット形式(32ビットバージョン)とは異なるため、インターフェイスパラメータはNDR64構文に従ってエンコードする必要があります。
MS-RPC には、ISystemActivator(IRemoteSCMActivator とも呼ばれる)と呼ばれる DCOM リモート プロトコルのリモート アクティブ化インターフェイスがあります。Windows 管理インスツルメンテーションコマンド ライン (WMIC)、インターネット インフォメーション サービス (IIS)、および広範囲に使用されるその他の多くのアプリケーションで使用されます。
MS-RPC ALG は、デフォルト サイズ(512 エントリー)を使用する代わりに、新しいマッピング エントリーを動的に割り当てます。また、制御セッションとデータ セッションの両方を含む、関連するアクティブな RPC セッションに影響を与えることなく、マッピング エントリ(自動クリーン)を削除する柔軟な時間ベースの RPC マッピング エントリも提供します。
Junos OS リリース 15.1X49-D10 および Junos OS リリース 17.3R1 以降では、MS-RPC マッピング エントリーのエージングアウト値を定義できます。コマンドを set security alg msrpc map-entry-timeout value
使用します。エージアウト値の範囲は 1 時間から 72 時間で、デフォルト値は 32 時間です。MS-RPC ALG サービスが 72 時間後でも制御ネゴシエーションをトリガーしない場合、最大 MS-RPC ALG マッピングエントリ値はタイムアウトし、サービスへの新しいデータ接続は失敗します。
Microsoft RPC ALG の有効化
MS-RPC ALGはデフォルトで有効になっており、設定は必要ありません。
Microsoft RPC ALG の有効化(CLI 手順)
Microsoft RPC ALG を無効にするには、次のコマンドを入力します。
user@host# set security alg msrpc disable
Microsoft RPC ALG を再びイネーブルにするには、次のコマンドを入力します。
user@host# delete security alg msrpc
Microsoft RPC ALG の設定
Microsoft RPC ALG は、次の 3 つの方法で構成できます。
- 事前定義済みのMicrosoftアプリケーションを使用したMS-RPC ALGの設定
- ワイルドカード UUID を使用した MS-RPC ALG の設定
- 特定の UUID を持つ MS-RPC ALG の設定
事前定義済みのMicrosoftアプリケーションを使用したMS-RPC ALGの設定
事前定義された MS アプリケーションがいくつかあります。CLIから定義済みのMicrosoftアプリケーションを表示するには、 コマンドを show configuration groups junos-defaults
入力します。
user@host> show security policies from-zone trust to-zone untrust { policy p1 { match { source-address any; destination-address any; application junos-ms-rpc-msexchange; } then { permit; } } }
設定をコミットした後、CLIから コマンドを show security alg msrpc object-id-map
入力して出力を表示します。
user@host> show security alg msrpc object-id-map UUID OID 1544f5e0-613c-11d1-93df-00c04fd7bd09 0x80000001 a4f1db00-ca47-1067-b31f-00dd010662da 0x80000002 f5cc5a18-4264-101a-8c59-08002b2f8426 0x80000003
出力では、UUID がポリシーに適用されたことを示しています。
ワイルドカード UUID を使用した MS-RPC ALG の設定
MS RPC アプリケーションの設定を許可するには、 ステートメントを application junos-ms-rpc-any
Permit 設定に追加します。
user@host> show security policies from-zone trust to-zone untrust { policy p1 { match { source-address any; destination-address any; application junos-ms-rpc-any; } then { permit; } } }
設定をコミットした後、CLIから コマンドを show security alg msrpc object-id-map
入力して出力を表示します。
user@host> show security alg msrpc object-id-map UUID OID ffffffff-ffff-ffff-ffff-ffffffffffff 0x80000004
特定の UUID を持つ MS-RPC ALG の設定
事前定義済みでないアプリケーションの場合は、特定の UUID を手動で構成する必要があります。例えば、事前定義されていない NETLOGON アプリケーションを許可するには、許可設定に ステートメントを追加 application msrpc-netlogon
します。
Junos OSリリース15.1X49-D90以前では、 すべての SRX シリーズ デバイスでは、Microsoft リモート プロシージャ コール(MS-RPC)のカスタム アプリケーションユニバーサル一意識別子(UUID)に、先行ゼロと nil UUID(00000-0000-0000-0000-000000000-00000000)はすべての TCP トラフィックと参照されているポリシーに一致する場合があります。これにより、MS-RPC ALG チェックに入る代わりに、すべての TCP トラフィックを許可できます。
Junos OS リリース 15.1X49-D100 および Junos OS リリース 17.3R1 以降、先行ゼロのカスタム アプリケーション UUID は、すべての TCP トラフィックと参照ポリシーに一致せず、MS-RPC ALG チェックに入ります。この新しいアプリケーションでは nil UUID は許可されません。
user@host> show applications application msrpc-netlogon { term t1 protocol tcp uuid 12345678-1234-abcd-ef00-01234567cffb; term t2 protocol udp uuid 12345678-1234-abcd-ef00-01234567cffb; term t3 protocol tcp uuid 12345778-1234-abcd-ef00-0123456789ab; } user@host> show security policies from-zone trust to-zone untrust { match { source-address any; destination-address any; application msrpc-netlogon; } then { permit; } } }
設定をコミットした後、CLI から コマンドを show security alg msrpc object-id-map
入力して、オブジェクト ID(UUID-to-OID)マッピング テーブルに対する Microsoft ユニバーサル一意識別子を確認します。Microsoft RPC ALG は、TCP ポート 135 上のパケットを監視します。
user@host> show security alg msrpc object-id-map UUID OID 12345778-1234-abcd-ef00-0123456789ab 0x80000006 12345678-1234-abcd-ef00-01234567cffb 0x80000005 be617c0-31a5-11cf-a7d8-00805f48a135 0x80000020 e3514235-4b06-11d1-ab04-00c04fc2dcd2 0x80000002 67df7c70-0f04-11ce-b13f-00aa003bac6c 0x80000014
show security alg msrpc object-id-map
CLIコマンドには、出力を特定のノードに制限したり、クラスタ全体にクエリーを実行したりするためのシャーシクラスタノードオプションがあります。show security alg msrpc object-id-map node
CLI コマンド オプションは.<node-id | all | local | primary>
Microsoft RPCサービスについて
MS-RPC は、Microsoft による分散コンピューティング環境(DCE)RPC の実装です。Sun RPC と同様に、MS-RPC は、あるホスト上で実行されているプログラムが別のホストで実行されているプログラムのプロシージャを呼び出す方法を提供します。MS-RPC は、サービス プログラムの UUID(ユニバーサル一意識別子)に基づいて動的にネゴシエートされます。特定の UUID はトランスポート アドレスにマッピングされます。
Junos OSリリース15.1X49-D90以前では、 すべての SRX シリーズ デバイスでは、Microsoft リモート プロシージャ コール(MS-RPC)のカスタム アプリケーションユニバーサル一意識別子(UUID)に、先行ゼロと nil UUID(00000-0000-0000-0000-000000000-00000000)はすべての TCP トラフィックと参照されているポリシーに一致する場合があります。これにより、MS-RPC ALG チェックに入る代わりに、すべての TCP トラフィックを許可できます。
Junos OS リリース 15.1X49-D100 および Junos OS リリース 17.3R1 以降、先行ゼロのカスタム アプリケーション UUID は、すべての TCP トラフィックと参照ポリシーに一致せず、MS-RPC ALG チェックに入ります。この新しいアプリケーションでは nil UUID は許可されません。
事前定義されたMicrosoftリモートプロシージャコール(MS-RPC)サービスには、以下が含まれます。
junos-ms-rpc-epm
junos-ms-rpc-tcp
junos-ms-rpc-udp
MS-RPC アプリケーションのデフォルトには、以下が含まれます。
junos-ms-rpc-iis-com-1
junos-ms-rpc-iis-com-adminbase
junos-ms-rpc-msexchange-directory-nsp
junos-ms-rpc-msexchange-directory-rfr
junos-ms-rpc-msexchange-info-store
junos-ms-rpc-uuid-any-tcp
junos-ms-rpc-uuid-any-udp
junos-ms-rpc-wmic-admin
junos-ms-rpc-wmic-admin2
junos-ms-rpc-wmic-mgmt
junos-ms-rpc-wmic-webm-callresult
junos-ms-rpc-wmic-webm-classobject
junos-ms-rpc-wmic-webm-level1login
junos-ms-rpc-wmic-webm-login-clientid
junos-ms-rpc-wmic-webm-login-helper
junos-ms-rpc-wmic-webm-objectsink
junos-ms-rpc-wmic-webm-refreshing-services
junos-ms-rpc-wmic-webm-remote-refresher
junos-ms-rpc-wmic-webm-services
junos-ms-rpc-wmic-webm-shutdown
MS-RPC アプリケーション セットのデフォルトには、以下が含まれます。
junos-ms-rpc
junos-ms-rpc-any
junos-ms-rpc-iis-com
junos-ms-rpc-msexchange
junos-ms-rpc-wmic
表 2 に、事前定義された MS-RPC サービス、各サービスに関連付けられた UUID 値、および各サービスの説明を示します。
サービス |
Uuid |
説明 |
---|---|---|
Epm |
e1af8308-5d1f-11c9-91a4-08002b14a0fa |
MS-RPC エンドポイント マッパー(EPM)プロトコルは、TCP/UDP ポート 135 を含む TCP/UDP ポートベースのサービスです。 |
EXCHANGE データベース |
1a190310-bb9c-11cd-90f8-00aa00466520 |
Microsoft Exchange Database サービスです。 |
EXCHANGE-DIRECTORY |
f5cc5a18-4264-101a-8c59-08002b2f8426 f5cc5a7c-4264-101a-8c59-08002b2f8426 f5cc59b4-4264-101a-8c59-08002b2f8426 |
Microsoft Exchange Directory サービス。 |
WIN-DNS |
50abc2a4-574d-40b3-9d66-ee4fd5fba076 |
マイクロソフト Windows DNS サーバーです。 |
Wins |
5f52c28-7f9f-101a-b52b-08002b2efabe 811109bf-a4e1-11d1-ab54-00a0c91e9b45 |
Microsoft WINS サービス。 |
WMIC-Webm-Level1Login |
f309ad18-d86a-11d0-a075-00c04fb68820 |
このサービスにより、ユーザーは特定の名前空間の管理サービスインターフェイスに接続できます。 |
Microsoft RPC アプリケーションのカスタマイズ(CLI 手順)
MS-RPC アプリケーションは、SUN RPC アプリケーションと同じ方法でカスタマイズされます。
セキュリティ ポリシーの MS-RPC サービスは次のとおりです。
0e4a0156-dd5d-11d2-8c2f-00c04fb6bcde
1453c42c-0fa6-11d2-a910-00c04f990f3b
10f24e8e-0fa6-11d2-a910-00c04f990f3b
1544f5e0-613c-11d1-93df-00c04fd7bd09
対応する TCP/UDP ポートは動的です。これを許可するには、番号ごとに以下のステートメントを使用します。
set applications application-name term term-name uuid hex-number
ALGは、これらの4つのUIDに基づいてプログラム番号を動的にネゴシエートされたTCP/UDPポートにマッピングし、設定したポリシーに基づいてサービスを許可または拒否します。