Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

ALG の概要

アプリケーション層ゲートウェイ (ALG) を使用すると、ゲートウェイはアプリケーション層のペイロードを解析し、アプリケーションサーバーへのトラフィックを許可するか拒否するかを決定できます。ALG は、転送プロトコル (FTP) や、アプリケーション層ペイロードを使用して、アプリケーションがデータ接続を開く動的伝送制御プロトコル (TCP) ポートまたはユーザーデータグラム プロトコル (UDP) ポートを通信するさまざまな IP プロトコルなどのアプリケーションをサポートします。

ALG の概要

アプリケーション層ゲートウェイ(ALG)は、Junos OSを実行するジュニパーネットワークスのデバイス上で、SIP(Session Initiation Protocol)やFTPなどの特定のプロトコルを管理するために設計されたソフトウェアコンポーネントです。ALGモジュールは、スイッチ上のアプリケーション層認識パケット処理を担当します。

ALG 機能は、セキュリティ ポリシーで構成されたサービスまたはアプリケーションによってトリガーできます。

  • サービスとは、アプリケーション サービス(Telnet、FTP、SMTP など)のレイヤー 4 情報(標準および受け入れられている TCP および UDP ポート番号など)を使用してアプリケーション プロトコルを識別するオブジェクトです。

  • アプリケーションは、レイヤー 4 サービスにマップされるレイヤー 7 アプリケーションを指定します。

定義済みサービスには、すでにレイヤー 7 アプリケーションへのマッピングがあります。ただし、カスタムサービスの場合、特にポリシーでALGを適用する場合は、サービスをアプリケーションに明示的にリンクする必要があります。

ウェルノウン ポート宛てのパケットの ALG は、サービス タイプによってトリガーされます。ALG は、指定されたトラフィックを傍受して分析し、リソースを割り当て、動的ポリシーを定義して、トラフィックがデバイスを安全に通過できるようにします。

  1. パケットがデバイスに到着すると、フロー モジュールはポリシーで設定されたセキュリティ ルールに従ってパケットを転送します。

  2. パケットを許可するポリシーが見つかった場合、関連するサービスタイプまたはアプリケーションタイプが割り当てられ、このタイプのトラフィックのセッションが作成されます。

  3. パケットのセッションが見つかった場合、ポリシー ルールの一致は必要ありません。ALG モジュールは、その特定のサービスまたはアプリケーションの種類がサポートされている ALG 処理を必要とする場合にトリガーされます。

また、ALG はパケット ペイロードに埋め込まれた IP アドレスとポート情報がないかパケットを検査し、必要に応じてネットワーク アドレス変換(NAT)処理を実行します。メッセージ バッファーは、パケットを処理する準備ができた場合にのみ割り当てられます。バッファーは、ペイロードの変更、NAT の実行、クライアントとサーバー間の新規接続用のピンホールの開放、ジュニパーネットワークスのデバイスの反対側にあるクライアントとサーバー間のデータ転送などの ALG 処理をパケットが完了した後に解放されます

jbuf の最大サイズは 9 KB です。メッセージ バッファー サイズが 9 KB を超える場合、メッセージ全体を ALG パケット ハンドラーに転送できません。これにより、セッション内の後続のパケットがALG処理をバイパスし、トランザクションエラーが発生します。ALG メッセージ バッファーの最適化が強化され、高いメモリ消費量が削減されました。

また、ALGは、制御セッションとデータセッションのデータ交換を可能にするために、IPアドレスとポート番号のゲートを開きます。制御セッションとデータ・セッションは、結合して同じタイムアウト値にすることも、独立させることもできます。

ALGはシャーシクラスターでサポートされています。

カスタムALGサービスを理解する

デフォルトでは、ALGは事前定義されたサービスにバインドされています。例えば、FTP ALGはjunos-ftpにバインドされ、RTSP ALGはjunos-rtspにバインドされます、という具合です。

定義済みサービスには、すでにレイヤー 7 アプリケーションへのマッピングがあります。ただし、カスタムサービスの場合、特にポリシーでALGを適用する場合は、サービスをアプリケーションに明示的にリンクする必要があります。

事前定義されたサービスをポリシーに適用すると、そのサービスに一致するトラフィックは、さらなる処理のために対応するALGに送信されます。ただし、状況によっては、次のことを実現するためにカスタム サービスを定義する必要がある場合があります。

  • ALGハンドラを使用して、お客様が指定したプロトコルや宛先ポートなどの特殊なトラフィックを処理します。

  • トラフィックが ALG にバインドする事前定義されたサービスと一致する場合、トラフィックを許可しますが、ALG 処理をバイパスします。

  • 現在のALGのアプリケーションセットにアプリケーションを追加します。

次の例では、設定階層のいくつかのレベルに移動する必要があります。その方法の詳細については、 CLIユーザー ガイド設定モードでのCLIエディターの使用を参照してください。

カスタム サービスの 3 つの使用法を、MS-RPC ALG を例に、以下に説明します。

  • Utilize the ALG handler to process special traffic:

    TCP 宛先ポート 6000 のトラフィックは、さらなる処理のために MS-RPC ALG に送信されます。

  • Permit traffic but bypass ALG processing:

    すべての ALG は、TCP 宛先ポート 135 のトラフィックで無視されます。

  • Add more applications to an ALG’s application set- MS-RPC や Sun RPC サービスなど、デバイスに事前定義されていないアプリケーションを追加するには、以下を行います。

    TCP(uuid e3514235-4b06-11d1-ab04-00c04fc2dcd2)を使用したMS-RPCデータトラフィックは、カスタムMSRPCが他の事前定義されたjunos-ms-rpc**アプリケーションとともにポリシーに適用される場合に許可されます。

ルーティング、NAT、および NAT-PT 向けの IPv6 DNS ALG について

ドメイン ネーム システム (DNS) は、DNS トラフィックを処理し、DNS クエリと応答パケットを監視し、DNS フラグがパケットが応答メッセージであることを示している場合はセッションを閉じる ALG の一部です。

DNS ALG は、Junos OS リリース 10.0 以前のリリースのルート モードで IPv4 をサポートします。Junos OS リリース 10.4 では、この機能はルーティング、ネットワーク アドレス変換(NAT)、ネットワーク アドレス変換プロトコル変換(NAT-PT)のために DNS ALG に IPv6 サポートを実装します。

DNS ALG が DNS クライアントから DNS クエリを受信すると、DNS パケットのセキュリティ チェックが実行されます。DNS ALG が DNS サーバーから DNS 応答を受信すると、同様のセキュリティ チェックが実行され、DNS トラフィックのセッションが閉じられます。

NAT モードでの IPv6 DNS ALG トラフィック

IPv6 NAT は、IPv4 と IPv6 アドレスのネットワーク デバイス間のアドレス変換を提供します。また、IPv6 ホスト間のアドレス変換も行います。IPv6 ホスト間の NAT は、IPv4 NAT と同様の方法で、同様の目的で実行されます。

DNS トラフィックが NAT モードで動作する場合、DNS ALG は、DNS クライアントがプライベート ネットワーク上にある場合は DNS 応答のパブリック アドレスをプライベート アドレスに変換し、同様に、DNS クライアントがパブリック ネットワーク上にある場合はプライベート アドレスをパブリック アドレスに変換します。

Junos OS リリース 10.4 では、IPv6 NAT は以下をサポートします。

  • ソースNAT翻訳

  • 宛先 NAT マッピング

  • 静的 NAT マッピング

メモ:

IPv6 DNS ALG NAT は、静的 NAT マッピングのみをサポートします。

NAT-PTモードのIPv6 DNS ALGトラフィック

IPv6 NAT-PT は、IPv4 と IPv6 アドレスのネットワーク デバイス間のアドレス割り当てとプロトコル変換を提供します。変換プロセスは、ステートレスIP/ICMP変換(SIIT)方式に基づいています。ただし、各通信の状態とコンテキストは、セッションの有効期間中は保持されます。IPv6 NAT-PT は、ICMP(Internet Control Message Protocol)、TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)パケットをサポートします。

IPv6 NAT-PT は、以下のタイプの NAT-PT をサポートします。

  • 従来の NAT-PT

  • 双方向 NAT-PT

DNS ベースのメカニズムは、IPv6 アドレスを IPv4 専用サーバーに動的にマッピングします。NAT-PT は、DNS ALG を使用して透過的に変換を行います。

たとえば、内部 IPv6 ネットワークを使用している企業は、IPv6 アドレスを持たない外部 IPv4 サーバーと通信できる必要があります。

動的アドレス バインドをサポートするには、名前解決に DNS を使用する必要があります。IPv4 ホストは、ローカルに設定された IPv4 DNS サーバーで IPv6 ノードの名前を検索し、NAT-PT を使用してデバイスを介して IPv6 DNS サーバーにクエリを渡します。

DNS トラフィックが NAT-PT モードで動作する場合、DNS クライアントが IPv6 ネットワーク内にあり、サーバーが IPv4 ネットワーク内にある場合、DNS ALG は DNS 応答パケット内の IP アドレスを IPv4 アドレスと IPv6 アドレスの間で変換し、その逆も同様です。

メモ:

NAT-PT モードでは、IPV4 から IPV6 へのアドレス変換のみが DNS ALG でサポートされます。DNS ALG で NAT-PT モードをサポートするには、NAT モジュールが NAT-PT をサポートする必要があります。

DNS ALG が DNS クライアントから DNS クエリを受信すると、DNS ALG は DNS パケットに対して次のセキュリティとサニティ チェックを実行します。

  • DNS メッセージの最大長を強制します (既定値は 512 バイト、最大長は 8 KB です)。

  • ドメイン名の長さを 255 バイト、ラベルの長さを 63 バイトに強制します。

  • DNS メッセージで圧縮ポインターが検出された場合に、ポインターが参照するドメイン名の整合性を検証します。

  • 圧縮ポインター ループが存在するかどうかを確認します

DNS ALG が DNS サーバーから DNS 応答を受信したときにも同様のサニティ チェックが実行され、その後、この DNS トラフィックのセッションが閉じられます。

FTP ALG における IPv6 サポートについて

ファイル転送プロトコル (FTP) は、FTP トラフィックを処理する ALG の一部です。FTP での PORT/PASV 要求および対応する 200/227 応答は、ホストが FTP データ接続のためにリッスンする TCP ポートを通知するために使用されます。

これらの要求および応答には、EPRT/EPSV/229 コマンドが使用されます。FTP ALG はすでに EPRT/EPSV/229 をサポートしていますが、IPv4 アドレスに対してのみサポートしています。

Junos OS リリース 10.4 では、EPRT/EPSV/229 コマンドが更新され、IPv4 アドレスと IPv6 アドレスの両方がサポートされるようになりました。

FTP ALG は、事前に割り当てられた objcache を使用してセッション Cookie を格納します。FTP ALG で IPv4 アドレスと IPv6 アドレスの両方がサポートされている場合、セッション Cookie 構造は IPv6 アドレスを格納するために 256 ビット (32 バイト) 拡大します。

IPv6 に対する FTP ALG のサポート

FTP ALG は、FTP 制御チャネル上のコマンドと応答の構文の正確性を監視し、対応するピンホールを開いてデータ チャネル接続を確立できるようにします。Junos OS リリース 10.4 では、FTP ALG は IPv4 ルーティング、IPv6 ルーティング、および NAT モードのみをサポートしていました。Junos OS リリース 11.2 以降のリリースでは、FTP ALG は IPv6 NAT および NAT-PT モードもサポートします。

EPRTモード

EPRT コマンドを使用すると、データ接続用の拡張アドレスを指定することができます。拡張アドレスは、ネットワーク プロトコル、およびネットワーク アドレスとトランスポート アドレスで構成されている必要があります。

EPRT の形式は次のとおりです。

EPRT<space><d><net-prt><d><net-addr><d><tcp-port><d>

  • <net-prt>: IANA によって定義されたアドレス ファミリー番号

  • <net-addr>: ネットワーク アドレスのプロトコル固有の文字列

  • <tcp-port>: TCP ポート番号

以下は、IPv6 の EPRT コマンドの例です。

EPRT |2|1080::8:800:200C:417A|5282|

このモードでは、FTP ALG は EPRT コマンドのみにフォーカスします。EPRT コマンドから IPv6 アドレスとポートを抽出し、ピンホールを開きます。

EPSVモード

EPSV コマンドは、サーバーがデータ・ポートで listen し、接続を待機していることを要求します。このコマンドへの応答には、リッスンしている接続の TCP ポート番号のみが含まれます。

応答文字列の例を次に示します。

メモ:

拡張アドレスを使用してパッシブ モードに入るための応答コードは 229 である必要があります。229ペイロードのTCPポートを抽出し、それを使用してピンホールを開く必要があります。

ALG の TAP モード サポートについて

ターミナルアクセスポイント(TAP)モードは、スイッチを介してミラーリングされたトラフィックをチェックするスタンバイデバイスです。TAPモードは、ALGの有効または無効のステータスに依存しません。ALG 構成は、非 TAP モードと同じままです。

SRXシリーズファイアウォールがTAPモードで動作するように設定すると、デバイスはセキュリティログ情報を生成し、検知された脅威、アプリケーションの使用状況、およびユーザーの詳細に関する情報を表示します。デバイスが TAP モードで動作するように設定されている場合、デバイスは設定された TAP インターフェイスからのみパケットを受信します。設定されたTAPインターフェイスを除き、他のインターフェイスは、管理インターフェイスとして使用されるか、外部サーバに接続されている通常のインターフェイスに設定されます。SRXシリーズファイアウォールは、受信トラフィックに応じてセキュリティレポートまたはログを生成します。

ALGはペイロードNATなどのアプリケーションをサポートし、そのデータトラフィックを動的に許可します。

メモ:

デバイスを TAP モードで操作する場合、設定できる TAP インターフェイスは 1 つだけです。

TAP モードでの ALG の有効化と無効化

このトピックでは、TAP モードで ALG ステータスを有効または無効にする方法について説明します。

始める前に:

  • TAPモードのALGサポートについては、 ALGのTAPモードサポートについて お読みください。

    • SRX300、SRX320、SRX340、SRX345、SRX380、および SRX550M デバイスのデフォルトの ALG ステータスは次のとおりです。

    • SRX4100デバイスのデフォルトのALGステータスは次のとおりです。

  • 既定で無効になっている ALG を有効にするには、次のコマンドを使用します。

    有効な ALG を既定の状態に戻すには、次のコマンドを使用します。

  • 既定で有効になっている ALG を無効にするには、次のコマンドを使用します。

    無効になっている ALG を既定の状態に戻すには、次のコマンドを使用します。

  • IKE ALG を有効にするには、次のコマンドを使用します。

    有効なIKE ALGをデフォルトの状態に戻すには、次のコマンドを使用します。