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(MS-MPCおよびMS-MICでのDS-liteによるALGのサポートは、Junos OSリリース18.1R1で開始されます) |
|---|---|---|---|---|
基本的なTCP ALG |
はい |
はい |
はい |
はい |
基本的なUPD ALG |
はい |
はい |
はい |
はい |
ブート |
はい |
いいえ |
いいえ |
いいえ |
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以降) |
いいえ |
SIPは、Junos OSリリース18.2R1以降、MS-MPCおよびMS-MIC上のDS-Liteでサポートされています。 |
SNMP |
はい |
いいえ |
いいえ |
いいえ |
SQLネット |
はい |
いいえ |
いいえ |
いいえ |
TFTP |
はい |
はい(Junos OSリリース14.1R1以降) |
いいえ |
はい |
トレースルート |
はい |
はい |
いいえ |
はい |
Unixリモートシェルサービス |
はい |
いいえ |
いいえ |
いいえ |
WINFrame |
はい |
いいえ |
いいえ |
いいえ |
ALGサポートの詳細
このセクションには、ALGに関する詳細が含まれています。これには以下が含まれます。
- 基本的なTCP ALG
- 基本的なUDP ALG
- ブート
- DCE RPCサービス
- DNS
- FTP
- ゲートキーパーRAS
- H323型
- ICMP
- IIOP
- IKEアルゴリズム
- IP
- NetBIOS
- ネットショー
- ONC RPCサービス
- PPTP
- RealAudio
- Sun RPCおよびRPCポートマップサービス
- RTSP
- SIP
- SNMP
- SQLNet
- TFTP
- トレースルート
- UNIXリモートシェルサービス
- WinFrame
基本的なTCP ALG
このALGは、TCPパケットに対して基本的なサニティーチェックを実行します。エラーが見つかった場合は、以下の異常イベントとシステムログメッセージを生成します。
TCP送信元または宛先ポートゼロ
TCPヘッダー長のチェックに失敗しました
TCPシーケンス番号がゼロで、フラグが設定されていません
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サーバーから返される情報を要求するために、一般的なブロードキャストメッセージを送信します。プロトコルの仕様については、 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
ドメインネームシステム(DNS)は通常ポート53で動作し、ドメイン名を検索して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必要があります。
ステートフルファイアウォールとNATサービスをサポートするためには、TCPポート21でFTP ALGを設定して、FTP制御プロトコルを有効にする必要があります。ALGは、以下のタスクを実行します。
動的なデータ接続用に、データポートとファイアウォールの権限を自動的に割り当てます
動的にネゴシエートされたデータ接続用のフローを作成します
アクティブモードとパッシブモードの両方で制御接続を監視します
制御パケットを適切なNATアドレスとポート情報で書き換えます
MS-MPC、MS-MICでは、FTPアプリケーション層ゲートウェイ(ALG)を有効にせずにパッシブFTPが正常に動作するために([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-h323-suite Junosデフォルトのアプリケーションセットには、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-h323-suite Junosデフォルトのアプリケーションセットには、H323 ALGとゲートキーパーRAS ALGが含まれています。
ICMP
インターネット制御メッセージプロトコル(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は、分散コンピューティングに基づくCORBA(Common Object Request Broker Architecture)で使用されます。CORBAおよびIIOPはオブジェクト管理グループ(OMG)標準ですが、IIOPに固定ポートは割り当てられていません。CORBAを実装する各ベンダーは、ポートを選択します。Java 仮想マシンはデフォルトでポート 1975 を使用し、ORBIX はデフォルトでポート 3075 を使用します。
ステートフルファイアウォールとNATでは、Java VM IIOPの場合はTCPポート1975、CORBAアプリケーションの場合は3075にALG IIOPを設定する必要があります。
IKEアルゴリズム
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(Point-to-Point Tunneling Protocol)ALGはTCPベースのALGです。PPTPを使用すると、PPP(Point-to-Point Protocol)をIPネットワークを介してトンネリングできます。PPTP は、クライアント/サーバー アーキテクチャ、PPTP ネットワーク サーバー、PPTP アクセス コンセントレータを定義します。PPTP ALGには、制御接続とデータトンネルが必要です。制御接続は、TCP を使用して PPP セッションの確立と切断を行い、ポート 1723 で実行されます。データトンネルは、IPを介して伝送されるGRE(Generic Routing Encapsulation)パケットで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を参照してください。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 プログラム100021に基づいて |
|
カーネル統計サーバー。詳細は、 |
ベースサポートは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アドレスとポートの書き換えを実行します。
SIP
SIP(セッション開始プロトコル)は、メディアセッションを確立、維持、終了できるアプリケーション層プロトコルです。これは、広く使用されているVoIP(Voice over IP)シグナリングプロトコルです。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
RFC 1350 では、Trivial File Transfer Protocol(TFTP)が規定されています。最初のTFTP要求は、UDP宛先ポート69に送信されます。追加のフローを作成して、個々のファイルを 取得 または 配置 できます。ステートフルファイアウォールとNATサービスをサポートするには、UDP宛先ポート69に対してTFTP ALGを設定する必要があります。
トレースルート
トレースルートは、パケットがネットワークホストにたどるルートを表示するためのツールです。IP TTL(Time-to-live)フィールドを使用して、ルーターまたはゲートウェイからのICMP time-exceeded メッセージをトリガーします。使用されていないと考えられる宛先ポートにUDPデータグラムを送信します。宛先ポートには、次の式を使用して番号が付けられます。+ nホップ - 1。デフォルトのベースポートは33434です。ファイアウォールを介したトレースルートをサポートするには、2種類のトラフィックを通過させる必要があります。
UDPプローブパケット(UDP宛先ポート>33000、IP TTL<30)
ICMP応答パケット(ICMPタイプtime-exceeded)
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のデフォルト設定値を上書きすることはできますが、削除または編集することはできません。設定を削除すると、新しい設定が追加されるとデフォルトが戻されます。
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デフォルトステートメントを参照するには、[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パケットのトラフィックは、より具体的な一致であるため、一致します。
[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まで、MXシリーズルーターでは、uKernel PICでステートフルファイアウォール(SFW)によるネットワークアドレス変換(NAT)を有効にするuKernelサービスと比較して、ICMP ALG、ping ALG、トレースルートALGは完全にサポートされていませんでした。反対方向の既存のフローに一致するICMPエラー応答パケットの処理と、pingパケットのNAT処理によるICMPパケットのNAT処理がサポートされました。
MS-MICとMS-MPCを搭載したMXシリーズルーターでは、ICMPシーケンス番号のみを使用してpingトラフィック状態を追跡する(例えば、対応するシーケンス番号を持つエコー要求が識別された場合にのみエコー応答を転送する)がサポートされています。ICMP アプリケーション層ゲートウェイ(ALG)は、詳細なロギング情報を提供するために強化されています。また、トレースルートALGにより、UDP宛先ポート番号が33000を超え、IP生存時間(TTL)が30秒未満の場合、UDPプローブパケットを処理できます。トレースルートALGは、ICMPタイプが時間超過したICMP応答パケットを処理できるようにし、トレースルートTTLしきい値をサポートします。これは、トレースルーティングのネットワーク浸透の許容レベルを制御します。
[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メッセージを設定し、ステートフルファイアウォールとNATルールの一致条件を定義できます。Junos OSリリース14.1までは、ICMPメッセージに定義できるアプリケーションに対する制限や検証は存在していませんでした。MS-MICとMS-MPCはuKernelサービスと同じように機能し、ICMPシーケンス番号を使用してpingトラフィックをステートフルに追跡します(対応するシーケンス番号を持つエコー要求が一致する場合にのみ、エコー応答が転送されます)。また、MS-MICおよびMS-MPCは、未処理のping要求に制限を課し、制限に達すると後続のping要求を破棄します。
同様に、tracerouteメッセージの場合、[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メッセージの一致条件を定義できます。
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コマンドの出力に表示されます。
変更履歴テーブル
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がお使いのプラットフォームでサポートされているかどうかを確認します。