ALG の概要
ALG の説明
このトピックでは、Junos OS でサポートされているアプリケーション層ゲートウェイ (ALG) について説明します。ALG のサポートには、サポートされている ALG のピンホールと親子関係の管理が含まれます。
サポートされているALG
表 1 は、Junos OS でサポートされている ALG の一覧です。MS-DPC、MS-MPC、MS-MIC でサポートされている ALGについては、 Junos OS Address Aware NATで利用可能なALGを参照してください。
サポートされるALG |
v4 - v4 |
v6 - v4 |
v6 - v6 |
DS-Lite(Junos OSリリース18.1R1から、MS-MPCおよびMS-MICでのDS-liteを使用したALGのサポートが開始されます) |
---|---|---|---|---|
基本的なTCP ALG |
はい |
はい |
はい |
はい |
ベーシックUPD ALG |
はい |
はい |
はい |
はい |
Bootp |
はい |
いいえ |
いいえ |
いいえ |
DCE RPC サービス |
はい |
いいえ |
いいえ |
いいえ |
Dns |
はい |
はい |
いいえ |
はい |
Ftp |
はい |
○(Junos OSリリース14.1R1以降) |
いいえ |
はい |
ゲートキーパーRAS |
○(Junos OSリリース17.1R1以降) |
○(Junos OSリリース17.2R1以降) |
いいえ |
いいえ |
H323 |
はい |
○(Junos OSリリース17.2R1以降) |
いいえ |
いいえ |
Icmp |
はい |
はい |
はい |
はい |
IKE ALG(Junos OSリリース14.2R7、15.1R5、16.1R2、17.1R1以降) |
はい |
はい |
いいえ |
いいえ |
Iiop |
はい |
いいえ |
いいえ |
いいえ |
Ip |
はい |
いいえ |
いいえ |
いいえ |
Netbios |
はい |
いいえ |
いいえ |
いいえ |
ネットショー |
はい |
いいえ |
いいえ |
いいえ |
Pptp |
はい |
○(Junos OSリリース14.1R1以降) |
いいえ |
はい |
リアルオーディオ |
はい |
いいえ |
いいえ |
いいえ |
Sun RPCおよびRPCポートマップサービス |
はい |
いいえ |
いいえ |
いいえ |
Rtsp |
はい |
○(Junos OSリリース14.1R1以降) |
いいえ |
はい |
Sip |
はい |
○(Junos OSリリース14.1R1以降) |
いいえ |
Junos OS Release 18.2R1以降、MS-MPCおよびMS-MIC上のDS-LiteでサポートされるSIP。 |
Snmp |
はい |
いいえ |
いいえ |
いいえ |
ティッカー |
はい |
いいえ |
いいえ |
いいえ |
Tftp |
はい |
○(Junos OSリリース14.1R1以降) |
いいえ |
はい |
Traceroute |
はい |
はい |
いいえ |
はい |
Unix リモート シェル サービス |
はい |
いいえ |
いいえ |
いいえ |
ウィンフレーム |
はい |
いいえ |
いいえ |
いいえ |
ALG サポートの詳細
このセクションでは、ALG の詳細について説明します。これには次のものが含まれます。
- 基本的なTCP ALG
- 基本的な UDP ALG
- Bootp
- DCE RPC サービス
- Dns
- Ftp
- ゲートキーパーRAS
- H323
- Icmp
- Iiop
- IKE ALG
- Ip
- Netbios
- ネットショー
- ONC RPCサービス
- Pptp
- リアルオーディオ
- Sun RPC および RPC ポートマップ サービス
- Rtsp
- Sip
- Snmp
- SQLNet
- Tftp
- Traceroute
- UNIX リモートシェルサービス
- ウィンフレーム
基本的なTCP ALG
この ALG は、TCP パケットの基本的なサニティ チェックを実行します。エラーが検出されると、次の異常イベントとシステムログメッセージが生成されます。
TCP 送信元または宛先ポート 0
TCP ヘッダー長のチェックに失敗しました
TCP シーケンス番号が 0 で、フラグが設定されていない
TCP シーケンス番号 0 と FIN/PSH/RST フラグが設定されている
TCP FIN/RST または SYN(URG|フィン|RST) フラグが設定されます
TCP ALG は、次の手順を実行します。
ルーターが SYN パケットを受信すると、ALG は TCP の順方向および逆方向のフローを作成し、 カンバセーション内でグループ化します。TCP スリーウェイ ハンドシェイクを追跡します。
SYN 防御メカニズムは、TCP 接続の確立状態を追跡します。TCP セッションは、短い時間間隔 (現在は 4 秒) 内に確立されることを想定しています。その時間内にTCPスリーウェイハンドシェイクが確立されない場合、セッションは終了します。
キープアライブ メカニズムは、応答しないエンドポイントとの TCP セッションを検出します。
ICMP エラーは、フローが ICMP データで指定されたセレクター情報と一致する場合にのみ許可されます。
基本的な UDP ALG
この ALG は、UDP ヘッダーの基本的なサニティ チェックを実行します。エラーが検出されると、次の異常イベントとシステムログメッセージが生成されます。
UDP 送信元または宛先ポート 0
UDP ヘッダー長のチェックに失敗しました
UDP ALG は以下のステップを実行します。
最初のパケットを受信すると、ALGは双方向フローを作成し、UDPセッションの正方向および逆方向のセッショントラフィックを受け入れます。
最大許容アイドル時間(デフォルトは 30 秒)を超えてセッションがアイドル状態になると、フローが削除されます。
ICMP エラーは、フローが ICMP データで指定されたセレクター情報と一致する場合にのみ許可されます。
Bootp
ブートストラップ プロトコル (BOOTP) クライアントは、ネットワーク経由でサーバーからネットワーク情報を取得します。一般的なブロードキャスト メッセージを送信して、BOOTP サーバーから返される情報を要求します。プロトコルの仕様については、を参照してください ftp://ftp.isi.edu/in-notes/rfc951.txt
。
ステートフルファイアウォールをサポートするには、UDP サーバーポート67およびクライアントポート68でBOOTP ALGを構成する必要があります。クライアントがブロードキャスト メッセージを送信する場合は、サービス ルールの from
ステートメントでブロードキャスト アドレスを構成する必要があります。NAT ルールがトラフィックと一致しても、BOOTP トラフィックではネットワーク アドレス変換(NAT)は実行されません。ルータで BOOTP リレー機能が有効化されている場合、リモート BOOTP サーバは NAT 変換によってマスクされたクライアントにアドレスを割り当てると見なされます。
DCE RPC サービス
分散コンピューティング環境 (DCE) リモート プロシージャ コール (RPC) サービスは、主にマイクロソフトのアプリケーションによって使用されます。ALG は、ポート マッピング サービスに既知の TCP ポート 135 を使用し、プログラム番号の代わりにユニバーサル一意識別子 (UUID) を使用してプロトコルを識別します。主なアプリケーション ベースの DCE RPC は、Microsoft Exchange プロトコルです。
ステートフル ファイアウォールと NAT サービスをサポートするには、TCP ポート 135 で DCE RPC ポートマップ ALG を構成する必要があります。DCE RPC ALG は、アプリケーション固有の UUID で TCP プロトコルを使用します。
Dns
通常、ポート 53 で実行されるドメイン ネーム システム (DNS) は、ドメイン名の検索と IP アドレスへの変換に関連するデータを処理します。MX シリーズ DNS ALG は、DNS クエリーと応答パケットを監視し、UDP と TCP DNS トラフィックを個別にサポートします。DNS ALGはNATのペイロード変換をサポートしていませんが、オペレーターはこれを使用して、DNSサーバーが応答を送信した後、NATまたはステートフルファイアウォールDNSセッションをメモリから効率的に削除できます。DNS ALG は、応答を受信した場合、またはアイドル タイムアウトに達した場合にのみセッションを閉じます。
DNS トラフィックが標準の要求および応答の種類だけではない場合、TCP-DNS-ALG を使用すると、TCP DNS トラフィックに問題がある可能性があります。たとえば、TCP-DNS-ALG は、DNS レプリケーションやゾーン転送など、TCP を使用する DNS サーバー間通信を中断する可能性があります。TCPハンドシェイクが完了し、各サーバーが1つのパケットをもう1つのパケットに送信した後にTCP-DNS-ALGがセッションを閉じるため、このタイプのトラフィックはNATまたはステートフルファイアウォールプラグインによってドロップされる可能性があります。このような場合は、TCP-DNS-ALG を使用しないでください。
TCP-DNS-ALG は、MS-DPC サービス カードではサポートされていません。
Ftp
FTP は、RFC 959 で指定されたファイル転送プロトコルです。メインの制御接続に加えて、クライアントとサーバー間のデータ転送に対してもデータ接続が行われます。ホスト、ポート、および方向は、制御チャネルを介してネゴシエートされます。
非パッシブモードFTPの場合、Junos OSステートフルファイアウォールサービスは、クライアントがクライアントからサーバーへのアプリケーションデータをスキャンして、サーバーが接続するIPアドレスとポート番号を提供するPORTコマンドを探します。パッシブモードFTPの場合、Junos OSステートフルファイアウォールサービスは、PASVコマンドのクライアントからサーバーへのアプリケーションデータをスキャンし、次にサーバーからクライアントへの応答をスキャンして、クライアントが接続するIPアドレスとポート番号を含む227応答を探します。
さらに複雑な問題があります:FTPはこれらのアドレスとポート番号をASCIIで表します。その結果、アドレスとポートが書き換えられると、TCP シーケンス番号が変更される可能性があり、その後、NAT サービスは、後続のすべてのパケットに対してシーケンス NAT を実行することによって、SEQ 番号と ACK 番号のこのデルタを維持する必要があります。
ステートフル ファイアウォールと NAT サービスをサポートするためには、TCP ポート 21 で FTP ALG を構成して FTP 制御プロトコルを有効にする必要があります。ALG は次のタスクを実行します。
動的データ接続用のデータポートとファイアウォール権限を自動的に割り当てます
動的にネゴシエートされたデータ接続のフローを作成します。
アクティブモードとパッシブモードの両方で制御接続を監視します
制御パケットを適切なNATアドレスとポート情報で書き換えます。
MS-MPC、MS-MIC では、FTP アプリケーション層ゲートウェイ(ALG)を有効にせずに(および [edit services nat rule rule-name term term-name from]
階層レベルで ステートメントを指定しapplication junos-ftp
ないことによって)パッシブ FTP が正しく動作するためには、アドレス プーリング ペア(APP)機能を有効にする必要があります(階層レベルで ステートメント[edit services stateful-firewall rule rule-name term term-name from]
[edit services nat rule rule-name term term-name then translated]
を含めるaddress-pooling
ことによって)。このような構成では、データ FTP セッションと制御 FTP セッションが同じ NAT アドレスを受信します。
ゲートキーパーRAS
Junos OS リリース 17.1R1 以降、ゲートキーパーの登録、管理、ステータス(RAS)ALG により、H.323 コールのゲートキーパー モードを完全にサポートできるようになりました。エンドポイントはゲートキーパーに登録し、その管理を要求します。コールを発信する前に、エンドポイントはゲートキーパーにコールの発信許可を求めます。登録フェーズと承認フェーズの両方で、RAS チャネルが使用されます。IPv4 および IPv6 ステートフルファイアウォールルールまたは NAPT-44 ルールでは、ゲートキーパー RAS ALG および H323 ALG を使用します。Junos OS リリース 17.2R1 以降では、NAT-64 ルールもサポートされます。Junosのデフォルトアプリケーションセット junos-h323-suite
には、H323 ALGとゲートキーパーRAS ALGが含まれています。
H323
H323は、音声およびビデオ会議およびコラボレーションアプリケーション向けのITUプロトコルスイートです。H323は、H.225コールシグナリングプロトコルとメディア通信用のH.245制御プロトコルで構成されています。H.225 ネゴシエーション中に、エンドポイントは制御チャネルでコール シグナリング メッセージを交換してコールを作成し、H.245 の新しい制御チャネルをネゴシエートします。H.245 メッセージに対して新しい制御接続が作成されます。メッセージは H.245 制御チャネルで交換され、メディア チャネルを開きます。
ステートフルファイアウォールは、H.225制御チャネルを監視して、H.245制御チャネルを開きます。H.245 チャネルが作成されると、ステートフル ファイアウォールはこのチャネルのメディア チャネル情報も監視し、メディア トラフィックがファイアウォールを通過できるようにします。
H323 ALG は、H.225 および H.245 メッセージ内の適切なアドレスとポートを書き換えることにより、静的宛先、静的、動的送信元 NAT をサポートします。
H.323 コールのゲートキーパー モードをサポートするには、IPv4 および IPv6 ステートフル ファイアウォール ルールまたは NAPT-44 ルールで H323 ALG とゲートキーパー RAS ALG を使用します。Junos OS リリース 17.2R1 以降では、NAT-64 ルールもサポートされます。Junosのデフォルトアプリケーションセット junos-h323-suite
には、H323 ALGとゲートキーパーRAS ALGが含まれています。
Icmp
Internet Control Message Protocol(ICMP)は、RFC 792で定義されています。Junos OSステートフルファイアウォールサービスでは、ICMPメッセージを特定のタイプまたは特定のタイプコード値でフィルタリングできます。特別に設定されたタイプとコードがない ICMP エラー パケットは、反対方向の既存のフローと照合され、エラー パケットの正当性が確認されます。フィルター一致を通過した ICMP エラー パケットは、NAT 変換の対象となります。
ICMP ALGは、ICMPシーケンス番号を使用して、常にpingトラフィックをステートフルに追跡します。各エコー応答は、対応するシーケンス番号を持つエコー要求がある場合にのみ転送されます。どの ping フローでも、エコー応答を受信せずに転送できるエコー要求は 20 個のみです。ダイナミックNATを設定すると、NATプール内の他のホストが同じ識別子を使用できるように、PINGパケット識別子が変換されます。
ステートフル ファイアウォールと NAT サービスをサポートするためには、プロトコルが必要な場合は ICMP ALG を設定する必要があります。追加のフィルタリング用に ICMP タイプとコードを設定できます。
Iiop
Oracle Application Server Name Server Internet Inter-ORB Protocol(IIOP)。この ALG は、分散コンピューティングに基づく共通オブジェクト リクエスト ブローカー アーキテクチャ (CORBA) で使用されます。CORBA および IIOP はオブジェクト管理グループ (OMG) 標準ですが、IIOP には固定ポートが割り当てられていません。CORBA を実装する各ベンダーがポートを選択します。Java仮想マシンはデフォルトでポート1975を使用しますが、ORBIXはデフォルトでポート3075を使用します。
ステートフルファイアウォールとNATを使用するには、Java VM IIOP用のTCPポート1975と、Iona TechnologiesのCORBAフレームワークであるORBIX用のTCPポート1975用にALG IIOPを設定する必要があります。
IKE ALG
Junos OS リリース 17.4R1 以前は、MX シリーズ ルーターの Junos VPN Site Secure IPsec 機能スイートでは、ネットワーク アドレス変換トラバーサル(NAT-T)はサポートされていません。Junos OS Release 14.2R7、15.1R5、16.1R2、17.1R1以降、IKE ALGでは、NAT-Tに準拠していないIPsecピア間で、NAPT-44およびNAT64ルールを介してIKEv1およびIPsecパケットを渡すことができます。この ALG は、ESP トンネル モードのみをサポートします。
この ALG を NAT ルールで使用し、UDP プロトコルとポート 500 を指定します。
この ALG は、次の処理を実行します。
IKEv1 接続開始要求を追跡して、NAT 処理が必要かどうかを判断します。
IKEv1 の送受信要求に対して NAT 変換を実行し、IKE セッションを作成します。
確立された IKE セッションに関連する IPsec パケットを識別し、ピア間にセキュリティ アソシエーションを確立します。
IPsec パケットの NAT 変換を実行します。
Ip
IP ALGは、単方向フローの作成にのみ使用されます。TCPトラフィックの場合、3ウェイハンドシェイクプロセスはチェックされません。この ALG は、ステートフル ファイアウォールのみのサービス セットで、トラフィックが一方向にのみ流れるようにする場合に便利です。と組み合わせて match-direction input-output
構成すると、リターントラフィックがステートフルファイアウォールも通過できるようになります。一般的なシナリオとしては、静的 NAT、宛先 NAT、または非対称ルーティングが存在する場合にトラフィックがステートフル ファイアウォールを通過することが予想されるシナリオが挙げられます。Junos IP ALGは、ドロップフローの作成によって一致するトラフィックが破棄されるNAPTでの使用を目的としていません。
Netbios
NetBIOS ALG は、NAT の使用時に NetBIOS の IP アドレスとポート番号を変換します。
NetBIOS は、TCP および UDP トランスポート プロトコルをサポートしています。ステートフル ファイアウォールと NAT サービスをサポートするには、UDP ポート 138 および TCP ポート 139 で NetBIOS ALG を構成する必要があります。
ネットショー
Microsoftプロトコルms-streaming は、MicrosoftのメディアサーバーであるNetShowで使用されています。このプロトコルは、TCP、UDP、および HTTP という複数のトランスポート プロトコルをサポートしています。クライアントはポート 1755 で TCP 接続を開始し、PORT コマンドをサーバーに送信します。次に、サーバーはそのポートでクライアントに対してUDPを開始します。ステートフルファイアウォールとNATサービスをサポートするためには、UDPポート1755でNetShow ALGを設定する必要があります。
ONC RPCサービス
オープン ネットワーク コンピューティング(ONC)RPC サービスは、DCE RCP サービスと同様に機能します。ただし、ONC RPC ALG はポート マッピング サービスに TCP/UDP ポート 111 を使用し、UUID ではなくプログラム番号を使用してプロトコルを識別します。
ステートフル ファイアウォールと NAT サービスをサポートするには、TCP ポート 111 で ONC RPC ポートマップ ALG を構成する必要があります。ONC RPC ALG は、アプリケーション固有のプログラム番号を持つ TCP プロトコルを使用します。
Pptp
ポイントツーポイントトンネリングプロトコル(PPTP)ALGは、TCPベースのALGです。PPTPを使用すると、ポイントツーポイントプロトコル(PPP)をIPネットワークを介してトンネリングできます。PPTP は、クライアント サーバー アーキテクチャ、PPTP ネットワーク サーバー、および PPTP アクセス コンセントレータを定義します。PPTP ALG には、制御接続とデータ トンネルが必要です。制御接続は、TCP を使用して PPP セッションを確立および切断し、ポート 1723 で実行されます。データトンネルは、IP上で伝送される汎用ルーティングカプセル化(GRE)パケットでPPPトラフィックを伝送します。
リアルオーディオ
Real Networks PNA プロトコル RealVideo は独立したサービスではありません。これはRealPlayerの一部であり、ほとんどの場合、ビデオに別のチャネルを使用します。RealPlayer バージョン G2、7、および 8 では、PNA と RTSP が使用されています。このバージョンが機能するためには、ALG は PNA(7070) と RTSP(554) の両方を許可する必要があります。メディアの場合、サーバーは UDP ポート (6970 から 7170)、TCP ポート 7071、または HTTP の範囲から選択します。クライアントは、特定のポートを使用するように構成できます。RealPlayer バージョン 4.0 および 5.0 では、コントロール チャネル 7070 メディア UDP ポート 6970 から 7170、TCP ポート 7071、または HTTP を使用します。RealAudio プレーヤー バージョン 3.0 は、コントロール チャネル 7070 メディア、UDP ポート 6770-7170、または TCP ポート 7071 を使用します。
実際の製品では、 表 2 に示すポートとポート範囲を使用します。
実際の製品 |
ポート使用量 |
---|---|
4.0および5.0サーバー/プレーヤー |
TCPポート7070の制御チャネル(双方向)。TCPポート7070またはUDPポート6970-7170でのサーバーからプレーヤーへのデータチャネル。 |
4.0および5.0サーバー/エンコーダ |
TCPポート7070の制御チャネル(双方向)。TCPポート7070上のエンコーダーまたはサーバーからのデータチャネル。 |
G2サーバー/プレイヤー |
TCPポート80、554、7070、または8080の制御チャネル(双方向)。TCPポート80、554、7070、8080またはUDPポート6970-32,000でのサーバーからプレーヤーへのデータチャネル。 |
G2 サーバー/3.1、および 5.x エンコーダー |
TCPポート7070の制御チャネル(双方向)。TCPポート7070上のエンコーダーからサーバーへのデータチャネル。 |
G2サーバー/G2プロデューサー |
TCPポート4040の制御チャネル(双方向)。TCPポート4040およびUDPポート6970-32,000のエンコーダーからサーバーへのデータチャネル。 |
2 サーバー/G2 プロデューサー (TCP のみ) |
TCP ポート 4040 上の制御チャネル (双方向) TCP ポート 4040 上のエンコーダーからサーバーへのデータ チャネル。注: TCP ONLY オプションは、バージョン 6.1 以降で使用できます。 |
RealAudioはRealPlayersによるオリジナルのプロトコルでした。新しいバージョンの RealPlayer では RTSP が使用されています。ステートフルファイアウォールとNATを使用するには、TCPポート7070でALGリアルオーディオをプログラムする必要があります。
Sun RPC および RPC ポートマップ サービス
リモート プロシージャ コール (RPC) ALG は、ポート マッピングに既知のポート TCP 111 と UDP 111 を使用し、RPC サービス用にポートを動的に割り当てて開きます。RPC ポートマップ ALG は、ポート要求を追跡し、これらの要求されたポートのファイアウォールを動的に開きます。RPC ALG は、許可されたプログラム番号を指定することで、RPC プロトコルをさらに制限できます。
ALG には、 表 3 に示す RPC サービスが含まれています。
名前 |
説明 |
コメント |
---|---|---|
|
ネットワーク・ファイル・サーバー (NFS) マウント・デーモン。詳細については、 の UNIX のマニュアルページ |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。 |
|
NFS の一部として使用されます。詳細については、RFC 1094 を参照してください。NFS v3 の RFC1813 も参照してください。 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。 |
|
NISを置き換えるために設計されたネットワーク情報サービスプラス(NIS+)。これは Sun Solaris のデフォルトのネーミングサービスであり、古い NIS とは関係ありません。プロトコル情報はありません。 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。 |
|
ネットワーク ロック マネージャー。 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが作成されると、 |
|
カーネル統計サーバー。詳細については、 および |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが構築されたら、 |
|
ユーザーにメッセージを書き込むために使用されます。詳細については、 の UNIX のマニュアルページ |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが作成されると、 |
|
NIS バインド プロセス。詳細については、 の UNIX のマニュアルページ |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが作成されると、 |
|
NIS パスワード サーバー。詳細については、 の UNIX のマニュアルページ |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが作成されると、 |
|
NIS サーバー。詳細については、 の UNIX のマニュアルページ |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが構築されたら、 |
|
ネットワーク更新ツール。 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが作成されると、 |
|
NIS マップ転送サーバー。詳細については、 の UNIX のマニュアルページ |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが作成されると、 |
ポート マッピングを使用するステートフル ファイアウォールと NAT サービスをサポートするためには、TCP/UDP 宛先ポート 111 で RPC ポートマップ ALG を構成し、TCP と UDP の両方に対して RPC ALG を構成する必要があります。1 つ以上の rpc-program-number
値を指定して、許可される RPC プロトコルをさらに制限できます。
Rtsp
リアルタイム ストリーミング プロトコル (RTSP) は、オーディオやビデオなどのリアルタイム プロパティを使用してデータの配信を制御します。RTSP によって制御されるストリームは RTP を使用できますが、必須ではありません。メディアは、同じ RTSP 制御ストリームで送信できます。これはHTTPのようなテキストベースのプロトコルですが、クライアントとサーバーはセッション情報を保持します。セッションは、SETUP メッセージを使用して確立され、TEARDOWN メッセージを使用して終了します。トランスポート(メディア プロトコル、アドレス、およびポート番号)は、セットアップとセットアップ応答でネゴシエートされます。
ステートフル ファイアウォールと NAT サービスをサポートするには、TCP ポート 554 用に RTSP ALG を構成する必要があります。
ALG は制御接続を監視し、メディア(RTP/RTSP)ストリームのフローを動的に開き、NAT アドレスとポートの書き換えを実行します。
Sip
セッション開始プロトコル (SIP) は、メディア セッションを確立、維持、および終了できるアプリケーション層プロトコルです。これは、広く使用されているボイスオーバーIP(VoIP)シグナリングプロトコルです。SIP ALGはSIPトラフィックを監視し、シグナリングパスとメディアパスにピンホールを動的に作成および管理します。ALG は、適切なパーミッションを持つパケットのみを許可します。SIP ALG は、次の機能も実行します。
親子セッション関係を管理します。
セキュリティ ポリシーを適用します。
VoIPトラフィックのピンホールを管理します。
SIP ALG は、次の機能をサポートしています。
ステートフルファイアウォール
静的ソース NAT
動的アドレスのみの送信元 NAT
ネットワーク アドレス ポート変換 (NAPT)
SIP セッションは、MS-MIC および MS-MPC インターフェイス カードでの NAT 処理に 12 時間(720 分)に制限されています。MS-DPC の SIP セッションには時間制限はありません。
Snmp
SNMP は、個々のネットワーク デバイスと集約デバイスの両方を含む TCP/IP ネットワークを管理するための通信プロトコルです。プロトコルは RFC 1157 で定義されています。SNMP は UDP 上で実行されます。
Junos OSステートフルファイアウォールサービスは、SNMP ALGを実装してSNMPタイプを検査します。SNMP はステートフル フローを強制しません。各SNMPタイプは、特に有効にする必要があります。ステートフル ファイアウォール サービスを完全に SNMP サポートするには、UDP ポート 161 で SNMP ALG を構成する必要があります。これにより、SNMP とget-next
コマンド、およびそれらの応答トラフィックが逆方向で有効になります: UDP ポート 161 は SNMP get
get-response
コマンドを有効にします。SNMPトラップが許可されている場合は、UDPポート162でSNMPtrap
コマンドを有効にして設定できます。
SQLNet
SQLNet プロトコルは、ロード バランシングやアプリケーション固有のサービスなど、クライアントから SQL コマンドを実行するために Oracle SQL サーバーによって使用されます。
ステートフル ファイアウォールと NAT サービスをサポートするには、TCP ポート 1521 用に SQLNet ALG を構成する必要があります。
ALG は制御パケットを監視し、データ トラフィックのフローを動的に開放し、NAT アドレスとポートの書き換えを実行します。
Tftp
Trivial File Transfer Protocol(TFTP)は、RFC 1350で規定されています。最初の TFTP 要求は、UDP 宛先ポート 69 に送信されます。追加のフローを作成して、個々のファイル を取得 または 配置 できます。ステートフル ファイアウォールと NAT サービスをサポートするには、UDP 宛先ポート 69 の TFTP ALG を設定する必要があります。
Traceroute
traceroute は、パケットがネットワーク ホストに移動するルートを表示するためのツールです。IP TTL(Time-to-live)フィールドを使用して、ルーターまたはゲートウェイから ICMP time-exceeded メッセージをトリガーします。使用されていないと思われる宛先ポートにUDPデータグラムを送信します。宛先ポートには、+ nホップ – 1 の式を使用して番号が付けられます。デフォルトのベースポートは33434です。ファイアウォールを通過するトレースルートをサポートするには、次の 2 種類のトラフィックを通過する必要があります。
UDP プローブ パケット(UDP 宛先ポート > 33000、IP TTL < 30)
ICMP 応答パケット(ICMP タイプの時間超過)
NAT が適用される場合は、ICMP エラー パケット内の IP アドレスとポートも変更する必要があります。
ステートフル ファイアウォールと NAT サービスをサポートするためには、UDP 宛先ポート 33434 から 33450 のトレースルート ALG を設定する必要があります。さらに、TTL しきい値を構成して、大きな TTL 値による UDP フラッド攻撃を防ぐことができます。
UNIX リモートシェルサービス
3つのプロトコルがUNIXリモートシェルサービスの基礎を形成します。
Exec:リモート コマンド実行。クライアント・システム上のユーザーがリモート・システム上でコマンドを実行できるようにします。クライアント () からサーバー (
rcmd
rshd
) への最初のコマンドは、既知の TCP ポート 512 を使用します。2 番目の TCP 接続は、 のrcmd
要求に応じて開くことができます。2 番目の接続のクライアント ポート番号は、ASCII 文字列としてサーバーに送信されます。ログイン - よく知られている
rlogin
; は、既知の TCP ポート 513 を使用します。詳細については、RFC 1282 を参照してください。特別なファイアウォール処理は必要ありません。シェル:リモートコマンド実行。クライアント・システム上のユーザーがリモート・システム上でコマンドを実行できるようにします。クライアント () からサーバー (
rcmd
rshd
) への最初のコマンドは、既知の TCP ポート 514 を使用します。2 番目の TCP 接続は、 のrcmd
要求に応じて開くことができます。2 番目の接続のクライアント ポート番号は、ASCII 文字列としてサーバーに送信されます。
ステートフルファイアウォールサービスをサポートするには、TCP ポート 512 で Exec ALG、TCP ポート 513 でログイン ALG、TCP ポート 514 でシェル ALG を設定する必要があります。NAT リモートシェルサービスでは、割り当てられる動的送信元ポートがポート範囲 512 〜 1023 内にある必要があります。NAT プールを設定する場合、このポート範囲はリモート シェル アプリケーション専用に予約されます。
ウィンフレーム
WinFrameアプリケーションサーバーソフトウェアは、あらゆる種類のクライアントへのあらゆるタイプのネットワーク接続を介して、事実上すべてのWindowsアプリケーションへのアクセスを提供します。
このプロトコルは、主にCitrix Windowsアプリケーションで使用されます。
ステートフル ファイアウォールと NAT を使用するには、TCP 宛先ポート 1494 および UDP ポート 1604 で ALG Winframe を構成する必要があります。
ジュニパーネットワークスのデフォルト
Junos OS には、ルーターの設定に自動的に適用される と呼ばれる junos-defaults
デフォルトの非表示の設定グループが用意されています。この junos-defaults
グループには、一般的なアプリケーション用に事前定義された値を含む事前設定されたステートメントが含まれています。一部のステートメントは、FTP や Telnet などのアプリケーションなど、有効にするために参照する必要があります。端末設定などの他のステートメントも自動的に適用されます。事前設定されたステートメントはすべて、予約名 junos-
で始まります。
Junos OS のデフォルト設定値は上書きできますが、削除や編集はできません。コンフィギュレーションを削除した場合、新しいコンフィギュレーションが追加されたときにデフォルト に戻ります。
Junos OS defaults グループで ステートメントを使用することはできません apply-groups
。
Junos OSのデフォルトグループから利用可能なプリセットステートメントの全セットを表示するには、 設定モードコマンドを発行します show groups junos-defaults
。以下の例では、ALG(アプリケーション プロトコル)を使用する Junos OS デフォルト グループのリストを表示します。
user@host# show groups junos-defaults applications { # # File Transfer Protocol # application junos-ftp { application-protocol ftp; protocol tcp; destination-port 21; } # # Trivial File Transfer Protocol # application junos-tftp { application-protocol tftp; protocol udp; destination-port 69; } # # RPC portmapper on TCP # application junos-rpc-portmap-tcp { application-protocol rpc-portmap; protocol tcp; destination-port 111; } # # RPC portmapper on UDP # application junos-rpc-portmap-udp { application-protocol rpc-portmap; protocol udp; destination-port 111; } # # SNMP get # application junos-snmp-get { application-protocol snmp; protocol udp; destination-port 161; snmp-command get; } # # SNMP get next # application junos-snmp-get-next { application-protocol snmp; protocol udp; destination-port 161; snmp-command get-next; } # # SNMP response # application junos-snmp-response { application-protocol snmp; protocol udp; source-port 161; snmp-command get-response; } # # SNMP trap # application junos-snmp-trap { application-protocol snmp; protocol udp; destination-port 162; snmp-command trap; } # # remote exec # application junos-rexec { application-protocol exec; protocol tcp; destination-port 512; } # # remote login # application junos-rlogin { application-protocol shell; protocol tcp; destination-port 513; } # # remote shell # application junos-rsh { application-protocol shell; protocol tcp; destination-port 514; } # # Real Time Streaming Protocol # application junos-rtsp { application-protocol rtsp; protocol tcp; destination-port 554; } # # Citrix windows application server protocol # windows applications remotely on windows/non-windows clients # # citrix needs udp 1604 to be open # application junos-citrix-winframe { application-protocol winframe; protocol tcp; destination-port 1494; } application junos-citrix-winframe-udp { protocol udp; destination-port 1604; } # # Oracle SQL servers use this protocol to execute sql commands # from clients, load balance, use application-specific servers, etc # application junos-sqlnet { application-protocol sqlnet; protocol tcp; destination-port 1521; } # # H.323 Protocol for audio/video conferencing # application junos-h323 { application-protocol h323; protocol tcp; destination-port 1720; } application junos-h323-ras { application-protocol ras; protocol udp; destination-port 1719; } # # Internet Inter-ORB Protocol - used for CORBA applications # The ORB protocol in Java virtual machines uses port 1975 as default # application junos-iiop-java { application-protocol iiop; protocol tcp; destination-port 1975; } # # Internet Inter-ORB Protocol - used for CORBA applications # ORBIX is a CORBA framework from Iona Technologies that uses port # 3075 as default # application junos-iiop-orbix { application-protocol iiop; protocol tcp; destination-port 3075; } # # Real players use this protocol for real time streaming # This was the original protocol for real players. # RTSP is more widely used by real players # but they still support realaudio. # application junos-realaudio { application-protocol realaudio; protocol tcp; destination-port 7070; } # # traceroute application. # application junos-traceroute { application-protocol traceroute; protocol udp; destination-port 33435-33450; ttl-threshold 30; } # # The full range of known RPC programs using UDP # The program numbers can be more specific to certain applications. # application junos-rpc-services-udp { application-protocol rpc; protocol udp; rpc-program-number 100000-400000; } # # The full range of known RPC programs using TCP # The program numbers can be more specific to certain applications. # application junos-rpc-services-tcp { application-protocol rpc; protocol tcp; rpc-program-number 100000-400000; } # # All ICMP traffic # This can be made to be more restrictive by specifying ICMP type # and code. # application junos-icmp-all { application-protocol icmp; } # # Protocol used by Windows media server and windows media player # application junos-netshow { application-protocol netshow; protocol tcp; destination-port 1755; } # # NetBIOS - networking protocol used on # Windows networks name service port, both UDP and TCP # application junos-netbios-name-udp { application-protocol netbios; protocol udp; destination-port 137; } application junos-netbios-name-tcp { protocol tcp; destination-port 137; } # # NetBIOS - networking protocol used on # Windows networks datagram service port # application junos-netbios-datagram { application-protocol netbios; protocol udp; destination-port 138; } # # NetBIOS - networking protocol used on # Windows networks session service port # application junos-netbios-session { protocol tcp; destination-port 139; } # # DCE-RPC portmapper on TCP # application junos-dce-rpc-portmap { application-protocol dce-rpc-portmap; protocol tcp; destination-port 135; } # # DCE-RPC application on TCP sample UUID # This application requires user to specify the UUID value # # application junos-dcerpc { # application-protocol dce-rpc; # protocol tcp; # # # UUID also needs to be defined as shown below # UUID 11223344 22334455 33445566 44556677; # # } # # ms-exchange needs these 3 UUIDs # application junos-dcerpc-endpoint-mapper-service { application-protocol dce-rpc; protocol tcp; uuid e1af8308-5d1f-11c9-91a4-08002b14a0fa; } application junos-dcerpc-msexchange-directory-rfr { application-protocol dce-rpc; protocol tcp; uuid 1544f5e0-613c-11d1-93df-00c04fd7bd09; } application junos-dcerpc-msexchange-information-store { application-protocol dce-rpc; protocol tcp; uuid a4f1db00-ca47-1067-b31f-00dd010662da; } application junos-ssh { protocol tcp; destination-port 22; } application junos-telnet { protocol tcp; destination-port 23; } application junos-smtp { protocol tcp; destination-port 25; } application junos-dns-udp { protocol udp; destination-port 53; } application junos-dns-tcp { protocol tcp; destination-port 53; } application junos-tacacs { protocol tcp; destination-port 49; } # TACACS Database Service application junos-tacacs-ds { protocol tcp; destination-port 65; } application junos-dhcp-client { protocol udp; destination-port 68; } application junos-dhcp-server { protocol udp; destination-port 67; } application junos-bootpc { protocol udp; destination-port 68; } application junos-bootps { protocol udp; destination-port 67; } application junos-finger { protocol tcp; destination-port 79; } application junos-http { protocol tcp; destination-port 80; } application junos-https { protocol tcp; destination-port 443; } application junos-pop3 { protocol tcp; destination-port 110; } application junos-ident { protocol tcp; destination-port 113; } application junos-nntp { protocol tcp; destination-port 119; } application junos-ntp { protocol udp; destination-port 123; } application junos-imap { protocol tcp; destination-port 143; } application junos-imaps { protocol tcp; destination-port 993; } application junos-bgp { protocol tcp; destination-port 179; } application junos-ldap { protocol tcp; destination-port 389; } application junos-snpp { protocol tcp; destination-port 444; } application junos-biff { protocol udp; destination-port 512; } # UNIX who application junos-who { protocol udp; destination-port 513; } application junos-syslog { protocol udp; destination-port 514; } # line printer daemon, printer, spooler application junos-printer { protocol tcp; destination-port 515; } # UNIX talk application junos-talk-tcp { protocol tcp; destination-port 517; } application junos-talk-udp { protocol udp; destination-port 517; } application junos-ntalk { protocol udp; destination-port 518; } application junos-rip { protocol udp; destination-port 520; } # INA sanctioned RADIUS port numbers application junos-radius { protocol udp; destination-port 1812; } application junos-radacct { protocol udp; destination-port 1813; } application junos-nfsd-tcp { protocol tcp; destination-port 2049; } application junos-nfsd-udp { protocol udp; destination-port 2049; } application junos-cvspserver { protocol tcp; destination-port 2401; } # # Label Distribution Protocol # application junos-ldp-tcp { protocol tcp; destination-port 646; } application junos-ldp-udp { protocol udp; destination-port 646; } # # JUNOScript and JUNOScope management # application junos-xnm-ssl { protocol tcp; destination-port 3220; } application junos-xnm-clear-text { protocol tcp; destination-port 3221; } # # IPsec tunnel # application junos-ipsec-esp { protocol esp; } # #IKE application for IPSec VPN # application junos-ike { application-protocol ike-esp-nat; protocol udp; destination-port 500; } # # 'junos-algs-outbound' defines a set of all applications # requiring an ALG. Useful for defining rule to the the public # internet allowing private network users to use all JUNOS OS # supported ALGs initiated from the private network. # # NOTE: the contents of this set might grow in future JUNOS OS versions. # application-set junos-algs-outbound { application junos-ftp; application junos-tftp; application junos-rpc-portmap-tcp; application junos-rpc-portmap-udp; application junos-snmp-get; application junos-snmp-get-next; application junos-snmp-response; application junos-snmp-trap; application junos-rexec; application junos-rlogin; application junos-rsh; application junos-rtsp; application junos-citrix-winframe; application junos-citrix-winframe-udp; application junos-sqlnet; application junos-h323; application junos-iiop-java; application junos-iiop-orbix; application junos-realaudio; application junos-traceroute; application junos-rpc-services-udp; application junos-rpc-services-tcp; application junos-icmp-all; application junos-netshow; application junos-netbios-name-udp; application junos-netbios-datagram; application junos-dcerpc-endpoint-mapper-service; application junos-dcerpc-msexchange-directory-rfr; application junos-dcerpc-msexchange-information-store; } # # 'junos-management-inbound' represents the group of applications # that might need access the router from public network for # for management purposes. # # Set is intended for a UI to display management choices. # # NOTE: It is not recommended the user to use the entire set # directly in a firewall rule and open up firewall to all # of these applications. Also, the user should always # specify the source and destination prefixes when using # each application. # # NOTE: the contents of this set may grow in future JUNOS versions. # application-set junos-management-inbound { application junos-snmp-get; application junos-snmp-get-next; application junos-snmp-response; application junos-snmp-trap; application junos-ssh; application junos-telnet; application junos-http; application junos-https; application junos-xnm-ssl; application junos-xnm-clear-text; } # # 'junos-routing-inbound' represents routing protocols that might # need to access the router from public network. # # Set is intended for a UI to display routing involvement choices. # # NOTE: It is not recommended the user to use the entire set # directly in a firewall rule and open up firewall to all # of these applications. Also, the user should always # specify the source and destination prefixes when using # each application. # # NOTE: the contents of this set might grow in future JUNOS OS versions. # application-set junos-routing-inbound { application junos-bgp; application junos-rip; application junos-ldp-tcp; application junos-ldp-udp; } application-set junos-h323-suite { application junos-h323-ras, application junos-h323; } }
グループから junos-defaults
使用可能なステートメントを参照するには、選択した junos-default-name
ステートメントを該当する階層レベルで含めます。アプリケーション プロトコルを構成するには、「 アプリケーションのプロパティの構成」を参照してください。特定のプロトコルの詳細については、「 ALG の説明」を参照してください。
例:Junos OS デフォルト グループからのプリセット ステートメントの参照
次の例は、ステートフルファイアウォールでFTPに使用できるJunos OSデフォルトグループのプリセットステートメントです。
[edit] groups { junos-defaults { applications { application junos-ftp { # Use FTP default configuration application-protocol ftp; protocol tcp; destination-port 21; } } }
Junos OSデフォルトグループからプリセットされたJunos OSデフォルトステートメントを参照するには、該当する階層レベルにステートメントを含め junos-default-name
ます。例えば、ステートフルファイアウォールでFTP向けのJunos OSデフォルトステートメントを参照するには、階層レベルでステートメント junos-ftp
を含めます [edit services stateful-firewall rule rule-name term term-name from applications]
。
[edit] services { stateful-firewall { rule my-rule { term my-term { from { applications junos-ftp; #Reference predefined statement, junos-ftp, } } } } }
以下の例は、デフォルトの Junos IP ALG の設定を示しています。
[edit] services { stateful-firewall { rule r1 { match-direction input; term t1 { from { applications junos-ip; } then { accept; syslog; } } } } }
ステートフルファイアウォールルールでIP ALGを設定すると、すべてのIPトラフィックと一致しますが、他のより具体的なアプリケーションが同じトラフィックに一致する場合、IP ALGは一致しません。例えば、以下の設定では、ICMP ALGとIP ALGの両方が設定されていますが、ICMPパケットの方がより具体的に一致するため、トラフィックは一致します。
[edit] services { stateful-firewall { rule r1 { match-direction input; term t1 { from { applications [ junos-ip junos-icmp-all ]; } then { accept; syslog; } } } } }
関連項目
MS-MIC および MS-MPC 向けの ICMP、Ping、トレースルート ALG
Junos OS リリース 14.2 以降、MS-MIC および MS-MPC に事前インストールおよび事前設定された Junos OS 拡張プロバイダ パッケージは、uKernel サービスが提供するサポートと同等の一貫した方法で ping、traceroute、ICMP ALG をサポートします。これらのALGに対して、MS-MIC/MS-MPC と uKernel サービス間でパリティとサポートの統一性が確立されます。Junos OS リリース 14.1 までは、ICMP ALG、PING ALG、およびトレースルート ALG は、uKernel PIC 上のステートフルファイアウォール(SFW)によるネットワークアドレス変換(NAT)を有効にする uKernel サービスと比較して、MS-MIC および MS-MPC を備えた MX シリーズルーターで完全にはサポートされていませんでした。既存のフローと逆方向のフローに一致するICMPエラーレスポンスパケットの処理や、pingパケットのNAT処理によるICMPパケットのNAT処理をサポートしました。
MS-MICとMS-MPCを搭載したMXシリーズルーターでは、ICMPシーケンス番号を使用したpingトラフィック状態の追跡(たとえば、対応するシーケンス番号を持つエコーリクエストが特定された場合にのみエコー応答を転送する)がサポートされています。ICMP アプリケーション レイヤー ゲートウェイ(ALG)が拡張され、詳細なロギング情報が得られるようになりました。また、トレースルートALGを使用すると、UDP 宛先ポート番号が 33000 より大きく、IP TTL(Time-to-live)が 30 秒未満の UDP プローブ パケットを処理できます。トレースルートALGは、ICMPタイプが時間超過したICMP応答パケットの処理を可能にし、トレースルーティングのネットワーク浸透の許容レベルを制御するtraceroute TTLしきい値をサポートします。
ICMP および ping メッセージを 、 、 および 階層レベルでステートメントapplication junos-icmp-all
で設定し、[edit services stateful-firewall rule rule-name term term-name from]
application junos-icmp-ping
application icmp-code
[edit services nat rule rule-name term term-name from]
ステートフルファイアウォールとNATルールの一致条件を定義することができます。Junos OS リリース 14.1 までは、ICMP メッセージに対して定義できるアプリケーションの制限や検証はありませんでした。MS-MIC と MS-MPC は uKernel サービスと同じように機能し、ICMP シーケンス番号を使用して ping トラフィックがステートフルに追跡されます(エコー応答は、対応するシーケンス番号を持つエコーリクエストが一致する場合にのみ転送されます)。また、MS-MIC および MS-MPC は、未処理の ping 要求に制限を課し、上限に達すると後続の ping 要求をドロップします。
同様に、トレースルート メッセージの場合、 および 階層レベルで および ステートメント[edit services stateful-firewall rule rule-name term term-name from]
を構成し[edit services nat rule rule-name term term-name from]
て、application junos-traceroute
ステートフル ファイアウォールおよび application junos-traceroute-ttl-1
NAT ルールのトレースルート メッセージの一致条件を定義できます。
トレースルートと ICMP メッセージは、IPv4 パケットと IPv6 パケットの両方でサポートされます。トレースルート機能が機能するために必要なのは、ユーザー定義アプリケーションが非アクティブ・タイムアウト期間で期待通りに動作していること、および TTL しきい値が 階層レベルの ステートメント[edit services application-identification application application-name]
を使用してsession-timeout seconds
構成したものと同じ期間に設定されていることを確認することだけです。ICMP メッセージのロギング中は、uKernel ロギングの場合と同様に、ping および ICMP ユーティリティの ALG 情報が、 や などのshow sessions
show conversations
関連する show コマンドの出力に表示されます。
変更履歴テーブル
機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。