ALG の概要
ALG の説明
このトピックでは、Junos OSでサポートされているアプリケーション層ゲートウェイ(ALG)について説明します。 ALGサポートには、サポートされているALGのピンホールと親子関係の管理が含まれます。
サポートされる ALG
表1 は、Junos OSでサポートされているALGを示しています。MS-DPC、MS-MPC、MS-MICで サポートされているALGの詳細については、Junos OSアドレス認識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-J |
はい |
○(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 以降) |
いいえ |
はい |
一口 |
はい |
○(Junos OS リリース 14.1R1 以降) |
いいえ |
SIP は、Junos OS リリース 18.2R1 以降、MS-MPC および MS-MIC 上の DS-Lite でサポートされています。 |
SNMP |
はい |
いいえ |
いいえ |
いいえ |
SQLNETの |
はい |
いいえ |
いいえ |
いいえ |
TFTP |
はい |
○(Junos OS リリース 14.1R1 以降) |
いいえ |
はい |
トレースルート |
はい |
はい |
いいえ |
はい |
Unix リモート シェル サービス |
はい |
いいえ |
いいえ |
いいえ |
WINフレーム |
はい |
いいえ |
いいえ |
いいえ |
ALGサポートの詳細
このセクションでは、ALG について詳しく説明します。これには、次のものが含まれます。
- 基本的なTCP ALG
- 基本的な UDP ALG
- BOOTP
- DCE RPC サービス
- DNS
- FTP
- ゲートキーパーRAS
- H323-J
- ICMP
- IIOPの
- IKE ALG
- IP
- NetBIOS
- ネットショー
- ONC RPCサービス
- PPTPの
- RealAudio(リアルオーディオ)
- Sun RPC および RPC ポートマップサービス
- RTSP
- 一口
- SNMP
- SQLNetの
- TFTP
- トレースルート
- UNIXリモートシェルサービス
- WinFrame(ウィンフレーム)
基本的な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 の 3 ウェイ ハンドシェイクを追跡します。
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)は、NAT ルールがトラフィックと一致していても、BOOTP トラフィックでは実行されません。ルーターで BOOTP リレー機能がアクティブになっている場合、リモート BOOTP サーバーは、NAT 変換によってマスクされたクライアントのアドレスを割り当てると見なされます。
DCE RPC サービス
分散コンピューティング環境 (DCE) リモート プロシージャ コール (RPC) サービスは、主に Microsoft アプリケーションによって使用されます。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つのパケットを他のサーバーに送信した後、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が正しく動作するためには、FTPアプリケーション層ゲートウェイ(ALG)を有効にせずに([edit services stateful-firewall rule rule-name term term-name from]および[edit services nat rule rule-name term term-name from]階層レベルでapplication junos-ftpステートメントを指定しないことで)、アドレスプーリングペア(APP)機能を有効にする必要があります([edit services nat rule rule-name term term-name then translated]階層レベルでaddress-poolingステートメントを含めることで)。このような設定では、データおよび制御 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-J
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 を構成すると、PING パケット識別子が変換され、NAT プール内の追加のホストで同じ識別子を使用できるようになります。
ステートフルファイアウォールとNATサービスをサポートするには、プロトコルが必要な場合にICMP ALGを設定する必要があります。追加のフィルタリング用に、ICMPタイプとコードを設定できます。
IIOPの
Oracle Application Serverネーム・サーバー・インターネットORB間プロトコル(IIOP)。このALGは、分散コンピューティングに基づくCommon Object Request Broker Architecture(CORBA)で使用されます。CORBAとIIOPはObject Management Group (OMG)標準ですが、IIOPには固定ポートは割り当てられていません。CORBAを実装する各ベンダーは、ポートを選択します。Java仮想マシンはデフォルトでポート1975を使用しますが、ORBIXはデフォルトとしてポート3075を使用します。
ステートフルファイアウォールとNATでは、Java VM IIOPの場合はTCPポート1975、Iona TechnologiesのCORBAフレームワークであるORBIXの場合は3075を設定する必要があります。
IKE ALG
Junos OS リリース 17.4R1より前では、MXシリーズルーターのIPsec機能のJunos VPN Site Secureスイートでは、ネットワークアドレス変換トラバーサル(NAT-T)はサポートされていません。Junos OS リリース 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サービス
Open Networks Computing (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トラフィックを伝送します。
RealAudio(リアルオーディオ)
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 Server/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 RealAudioをプログラムする必要があります。
Sun RPC および RPC ポートマップサービス
リモートプロシージャコール(RPC)ALGは、ポートマッピングに既知のポートTCP 111およびUDP 111を使用し、RPCサービスのポートを動的に割り当てて開きます。RPC ポートマップ ALG はポート要求を追跡し、これらの要求されたポートのファイアウォールを動的に開きます。RPC ALG は、許可されたプログラム番号を指定することで、RPC プロトコルをさらに制限できます。
ALG には、 表 3 に示す RPC サービスが含まれています。
名前 |
形容 |
コメント |
|---|---|---|
|
ネットワークファイルサーバー(NFS)マウントデーモン。詳細は、 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。 |
|
NFS の一部として使用されます。詳細については、RFC 1094 を参照してください。RFC1813 for NFS v3 も参照してください。 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。 |
|
Network Information Service Plus(NIS+)、NISを置き換えるように設計されています。これは Sun Solaris のデフォルトのネームサービスであり、古い NIS とは関係ありません。プロトコル情報はありません。 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。 |
|
ネットワーク ロック マネージャー。 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが構築されると、RPC プログラム 100021に基づいて |
|
カーネル統計サーバー。詳細については、UNIX の man ページの |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが構築されると、RPC プログラム 150001に基づいて |
|
ユーザーにメッセージを書き込むために使用されます。詳細は、 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが構築されると、RPC プログラム 150008に基づいて |
|
NIS 製本プロセス。詳細については、 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが構築されると、RPC プログラム 100007に基づいて |
|
NIS パスワード サーバー。詳細については、 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが構築されると、RPC プログラム 100009に基づいて |
|
NISサーバ。詳細については、 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが構築されると、RPC プログラム 100004に基づいて |
|
ネットワーク更新ツール。 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが作成されると、RPC プログラム100028に基づいて |
|
NIS マップ転送サーバー。詳細については、 |
基本サポートは、RPC v2 とポート 111 のポート マッパー サービスです (RFC 1050 を参照)。RPC プログラム テーブルが構築されると、RPC プログラム100069に基づいて |
ポートマッピングを使用するステートフルファイアウォールと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 アドレスとポートの書き換えを実行します。
一口
Session Initiation Protocol(SIP)は、メディアセッションを確立、維持、および終了できるアプリケーション層のプロトコルです。これは、広く使用されているVoice over 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 コマンドと get-next コマンド、およびそれらの逆方向の応答トラフィックが有効になります。 UDP ポート 161 は、SNMP get-response コマンドを有効にします。SNMPトラップが許可されている場合は、UDPポート162でトラップを設定し、SNMP trap コマンドを有効にすることができます。
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 は、パケットがネットワーク ホストにたどるルートを表示するためのツールです。IP Time-to-live(TTL)フィールドを使用して、ルーターまたはゲートウェイからのICMP時間超過メッセージをトリガーします。使用されていないと思われる宛先ポートにUDPデータグラムを送信します。宛先ポートには、+ nホップ – 1 という式で番号が付けられます。デフォルトのベース ポートは 33434 です。ファイアウォールを通過する traceroute をサポートするには、次の 2 種類のトラフィックを通過する必要があります。
UDPプローブパケット(UDP宛先ポート> 33000、IP TTL < 30)
ICMP 応答パケット(ICMPタイプ時間超過)
NATが適用される場合は、ICMPエラーパケット内のIPアドレスとポートも変更する必要があります。
ステートフルファイアウォールとNATサービスをサポートするには、UDP宛先ポート33434から33450のトレースルートALGを設定する必要があります。さらに、TTL閾値を設定して、大きなTTL値でのUDPフラッド攻撃を防止できます。
UNIXリモートシェルサービス
UNIX リモート・シェル・サービスの基礎となるプロトコルは 3 つあります。
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(ウィンフレーム)
WinFrameアプリケーションサーバーソフトウェアは、あらゆる種類のクライアントへのあらゆるネットワーク接続にわたって、事実上すべてのWindowsアプリケーションへのアクセスを提供します。
このプロトコルは、主にCitrix Windowsアプリケーションで使用されます。
ステートフルファイアウォールとNATでは、TCP宛先ポート1494とUDPポート1604でALG Winframeを設定する必要があります。
ジュニパーネットワークスのデフォルト
Junos OSには、 junos-defaults と呼ばれるデフォルトの非表示の設定グループがあり、ルーターの設定に自動的に適用されます。 junos-defaults グループには、一般的なアプリケーション向けに事前定義された値を含む事前設定済みステートメントが含まれています。ステートメントの一部は、FTP や Telnet などのアプリケーションのように、有効にするために参照する必要があります。端末設定など、その他のステートメントは自動的に適用されます。すべての事前設定済みステートメントは、予約名 junos- で始まります。
Junos OS のデフォルトの設定値は上書きできますが、削除や編集はできません。コンフィギュレーションを削除すると、新しいコンフィギュレーションが追加されたときにデフォルトが戻ります。
apply-groups ステートメントを Junos OS defaults グループで使用することはできません。
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 defaultステートメントを参照するには、該当する階層レベルにjunos-default-nameステートメントを含めます。例えば、ステートフルファイアウォールでFTPのJunos OSデフォルトステートメントを参照するには、[edit services stateful-firewall rule rule-name term term-name from applications]階層レベルでjunos-ftpステートメントを記述します。
[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パケットの方がより具体的な一致であるため、トラフィックは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、Traceroute 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までは、MS-MICとMS-MPCを搭載したMXシリーズルーターでは、uKernel PIC上でステートフルファイアウォール(SFW)によるネットワークアドレス変換(NAT)を可能にするuKernelサービスと比較して、ICMP ALG、ping ALG、traceroute ALGは完全にはサポートされていませんでした。逆方向の既存のフローと一致するICMPエラー応答パケットの処理と、ICMPパケットのNAT処理とpingパケットのNAT処理をサポートしました。
MS-MICおよびMS-MPCを搭載したMXシリーズルーターでは、ICMPシーケンス番号のみを使用したpingトラフィック状態の追跡(例えば、対応するシーケンス番号を持つエコー要求が特定された場合にのみエコー応答を転送する)がサポートされています。ICMP アプリケーション層ゲートウェイ(ALG)が強化され、詳細なロギング情報が提供されるようになりました。また、トレースルートALGを使用すると、UDP宛先ポート番号が33000を超え、IP生存時間(TTL)が30秒未満のUDPプローブパケットを処理できます。トレースルートALGは、ICMPタイプが時間を超えたICMPレスポンスパケットの処理を可能にし、トレースルーティングのネットワーク侵入の許容レベルを制御するtraceroute TTL閾値をサポートします。
ステートフルファイアウォールとNATルールの一致条件を定義するために、[edit services stateful-firewall rule rule-name term term-name from]および[edit services nat rule rule-name term term-name from]階層レベルでapplication junos-icmp-all、application junos-icmp-ping、およびapplication icmp-codeステートメントを使用してICMPおよびpingメッセージを設定できます。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 ルールのトレースルート メッセージの一致条件を定義できます。
traceroute および ICMP メッセージは、IPv4 パケットと IPv6 パケットの両方でサポートされています。トレースルート機能を動作させるには、ユーザー定義アプリケーションが非アクティブ タイムアウト期間で期待どおりに動作し、TTLしきい値が[edit services application-identification application application-name]階層レベルでsession-timeout seconds ステートメントを使用して設定されたのと同じ期間に設定されていることを確認するだけで済みます。ICMPメッセージのロギング中、pingおよびICMPユーティリティのALG情報は、uKernelロギングの場合に表示されるのと同じ方法で、show sessionsやshow conversationsなどの関連するshowコマンドの出力に表示されます。
変更履歴
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer を使用します。