Palo Alto Networks Firewallのセッションについて

Printer Friendly Page

※この記事は以下の記事の日本語訳です。

Palo Alto Networks Firewall Session Overview

https://live.paloaltonetworks.com/t5/Learning-Articles/Palo-Alto-Networks-Firewall-Session-Overview/...

 

概要

Palo Alto Networks firewall上では、 セッションというのは6つの要素キー (6要素: 送信元アドレス、宛先アドレス、送信元ポート、宛先ポート、プロトコル、そしてセキュリティーゾーン) で識別された2つの単方向フロー(クライアント -> サーバーとサーバー -> クライアント方法)で構成されています。

 

6つの要素キーの他にも識別される要素があります:

    • エンドホスト - 送信元IPアドレスと宛先IPアドレスはクライアント(送信元IP) とサーバー(宛先IP)として定義されます。
    • フロー方向 - ファイアウォール から見てセッションの最初のパケットフローがClient-to-Server(C2S)であり、その反対方向のパケットフローが Server-to-Client(S2C)になります。

 

Show Session コマンド

セッション情報を表示したい場合は > show session コマンドを 希望のoptionで実行します。

    • > show session allはコマンドを実行した時点でfirewallに処理されているセッションを表示します。
    • 注意:  > show session all で表示できるセッション数には上限があります。上限はセッションのbyte sizeによって異なります。(セッションのbyte sizeは変更できません)詳細についてはこのドキュメントを参照して下さい:   Can the Whole Session Log be Exported?
    • > show session id [ID]入力したSessionIDのセッション情報を表示します。
    • > show session infoはセッション管理の設定とその現在の統計情報を表示します。
    • > show session meterは仮想システム機能のあるfirewall上では各V-sysの最大セッション数を表示します。

 

以下は> show session id コマンドの出力の例です:

 

コマンド出力には以下の情報が表示されます:

    • Session ID – この例のセッションでは, session IDは524342です。
    • c2s flow and s2c flow - Client to Server (c2s)とServer to Client (s2c)の両方のフローの情報を表示します.
    • Source and dst (destination) address with zone – 各フローの送信元と送信先のIPアドレスを表示します。この例では、s2cフローの送信先IPとc2sフローの送信元IPはDynamic-IP-and-port source NATの使用により一致しません。
    • Source (sport) and destination port (dport) – セッションの各フローのポート番号を表示します. この例では, NAT policyによりc2sとs2cのポート番号は一致しません。
    • src userand dst user – ファイアウォール上でUserID機能を設定していた場合、 ユーザー情報が表示されます。
    • state–セッションの状態を表示します。 詳細は次のセクションで説明します。
    • type– セッションにはFLOWとPREDICTという二種類のタイプがあります詳細は次のセクションで説明します。

 

セッションタイプ、状態 (state)、flag

Palo Alto Networksのファイアウォールでは セッションは二種類のタイプがあります:

  • Flow- c2sとs2c間の普通のセッション (例: HTTP, Telnet, SSH).
  • Predict– このタイプのセッションはLayer7アプリケーションレイヤーゲートウェイ (ALG) が必要な時に使われます。 アプリケーションが識別され、追加のセキュリティールール無しに 新しく別のセッションをファイアウォール上で許可させる必要があります(FTP active/passive, voice protocols h323/sip など)。このセッションは許可された当初は送信元/宛先 IP/portが0と表示される時もあります。Predict セッションに一致するパケットはFlowセッションに変わります。

Predict (PRED) セッションの情報を表示するには、> show session all filter type predict コマンドを使用します。Predictセッションは一致する1つめのパケットが来た時点でFlowセッションに変わるので、このコマンド実行の時点で、一致するパケットを待っているPredictセッションしか表示しません。

注意:  各アプリケーションのpredictセッションには独自のタイムアウト設定があります

以下の例はFTP Active mode用に作成されたPredictセッションを表示してます。

 

この例では送信されたパケット数が0で、predict セッションがclientから開始された事がわかります。

 

セッションには常に特定の状態(state)があり、セッションtableで頻繁に表示されるのがStable状態と呼ばれる次の3つの状態があります:

  • INIT– すべてのセッションは最初このINIT stateから始まります。 Init stateのセッションはいつでもフリープールから割り当てられる事ができ、前に使用されていたセッションも使用後はフリープールに戻されます。
  • ACTIVE– データフローが割り当てられ、検知と転送処理がされている状態です。
  • DISCARD- データフローが割り当てられたが、セキュリティーポリシーや脆弱性検知などでDenyされた状態です。

他にも Opening, Closing, Closedと Freeと呼ばれる状態(state)があります。これらは 一時移行中stateと呼ばれます。一時移行中statesであるセッションはすぐstableに変わってしまうので表示するのは難しいです。

通常、セッションの状態は: Init > Opening > Active > Discard/Closing > Closed > Freeのサイクルで回ります。 Free stateからinitial session state(INIT)に戻り、 また最初から始まります。次の図がセッション状態のライフサイクルを表してます:

                                           

 

一番重要なのが Active stateであって、次の条件で Active stateからDiscard stateかClosing stateに変わります:

  • セッションがtimeoutに達した場合はClosing stateに変わります。
  • trafficがsecurity ruleでdenyされた、またはthreatが検知された (actionはdropに設定されている), 場合はDiscard stateに変わります。

 

> show session all で表示されるセッションにはflag値という物があります。 flag値には以下の物があります:

  • NS– セッションにはSource NATが適用されてます。
  • ND - セッションにはDestination NATが適用されてます。
  • NB -セッションにはSource + Destination NATの両方が適用されてます。
  • No flag - セッションにはNATが適用されていません。

 

セッションのタイムアウト

セッションにはアプリケーション別にファイアウォールで設定できるタイムアウト値があります。セッションのタイムアウト値の詳細は > show session id コマンドで表示する事ができます。以下の例はファイアウォールを通ってるDNSセッションを表示してます。

 

 

タイムアウト関連の情報は以下の物があります:

  • Timeout– セッションのアプリケーションに設定されたタイムアウト.
  • Time to live– セッションがタイムアウトするまでの残り時間です。この例では、セッションの有効期限が切れてstateが変わるまであと2秒あります。
  • Session in session ager– セッションにはflow agerがあり、セッションのtime to liveをカウントしています。セッションがactive stateでtime to liveが切れない限り session in session ager はTrueであり続けます。

 

以下の例のセッションでは、一致する通信が見つからずタイムアウトになりました。

 

session stateがClosedになり、session in session agerがFalseになったのが分かります。

 

HA構成のセッション管理

FirewallがHA構成の場合、ローカルのファイアウォールでは作成されていないセッションもあるのでHA Peer間でセッションを同期(synchronize)する必要があります。 同期する事によって、切替わりの際は Active sessionsが消える事なく通信はもう片方のファイアウォールで動き続けます(Active/Passive構成の場合はactive)。HA構成が関連するシナリオについては Admin GuideのHA 構成のセクションを参照してください。

 

セッションがローカルのファイアウォールで作成されたのかは>show session id コマンドのsession synced from HA peer で確認する事ができます。ローカルのファイアウォールで作成されたsessionは値がFalse、セッションが同期されたリモートのファイアウォールでは値がTrueになります。

 

追記:

> show session id コマンドは高度なトラブルシューティングによく使われ、特に以下の情報はよく使われます。

  • Session to be logged at the end- セキュリティールール 設定の際、logging方法については2つのオプションがあります。セッション終了時でのlogging設定でTrue、セッション作成時でのlogging設定ではfalseが表示されます。
    上の例ではセッション終了時にloggingされることが分かります。
  • Offload yes- 通信がアプリケーション識別され、ハードウェアで処理がされていることがわかります。
  • Layer7 processing– enabledの場合、セッションに対しアプリケーション識別がされてます。Completedの場合はアプリケーション識別が完了された状態です。