PAN-OS: パケット処理 PAN-OS のパケットフローシーケンス パロアルトネットワークス合同会社 www.paloaltonetworks.jp
目次 概要... 3 入力ステージ (Ingress stage)... 3 パケット構文解析 (Packet Parsing)... 5 トンネルのカプセル解除 (Tunnel Decapsulation)... 6 IP フラグメント解除 (IP Defragmentation)... 6 ファイアウォールセッション検索 (Firewall Session Lookup)... 6 ファイアウォールセッション確立... 7 フラッディングとパケット異常の検知... 7 TCP 状態確認... 7 フォワーディングセットアップ... 8 NAT ポリシー検索... 8 User ID... 8 セキュリティポリシー検索 (Security policy lookup)... 8 ポートスキャン / アドレススイープ防御... 9 セッション割当 (Session allocation)... 9 ファイアウォールセッション ファストパス... 9 アプリケーション識別 (App-ID)... 9 まとめ... 10 2010 Palo Alto Networks Page 2
概要 本ドキュメントでは PAN-OS デバイス内部でのパケット処理シーケンスを説明します 入力 および 転送 / 出力 ステージにてネットワーク機能が処理され パケット毎にパケット転送を行うか決定されます それ以外のステージは App-ID や Content-ID に代表されるフローベースのセキュリティモジュールです この分離は アプリケーションレイヤにおけるステートレスなセキュリティ機能 障害復旧しやすいパケット単位の転送 柔軟な導入トポロジを提供します 不明アプリケーションから既知アプリケーションへ またはトンネリングアプリケーションからトンネルされたアプリケーションへ といったアプリケーション変化があったときはいつでもセキュリティポリシーが評価されます 入力ステージ (Ingress stage) 入力ステージはネットワークインタフェースからパケットを受信し パケット構文解析を行い パケットがファイアウォール処理されるかどうか決定します パケットがファイアウォール処理される場合 ファイアウォールセッション検索を続け セキュリティ処理ステージ (security processing stage) へ進みます そうでない場合はパケットが転送されます 注意 : パケット処理中 プロトコル違反によってパケットが破棄される場合があります ファイアウォールの攻撃防御機能などでは このようなパケットはエンドホストによって最終的に破棄されるため 設定不可能なオプションにより破棄されることがあります 2010 Palo Alto Networks Page 3
2010 Palo Alto Networks Page 4
パケット構文解析 (Packet Parsing) パケット構文解析はインタフェースから受信したパケットのレイヤ 2 ヘッダから始まります レイヤ 2: 入力ポート 802.1q タグ 宛先 MAC アドレスが入力論理インタフェースの検索キーに使われます インタフェースが見つからない場合 パケットは破棄され ハードウェアインタフェースカウンタの receive error とグローバルカウンタ flow_rcv_dot1q_tag_err がカウントアップされます レイヤ 3: IP ヘッダが解析されます IPv4: 以下のいずれかの理由によりパケットは破棄されます Ethernet タイプと IP バージョンの不一致 IP ヘッダが途中で切り捨てられている IP プロトコル番号が 0 TTL が 0 Land 攻撃 Ping of death Martian IP address (127.0.0.0/8, 255.255.255.255/32 など IANA で予約されたアドレス ) IPv6: 以下のいずれかの理由によりパケットは破棄されます Ethernet タイプと IP バージョンの不一致 IPv6 ヘッダが途中で切り捨てられている IP パケットが途中で切り捨てられている (IP ペイロードバッファ長が IP ペイロードフィールドより短いもの ) JumboGram 拡張 (RFC 2675) 拡張ヘッダが途中で切り捨てられている レイヤ 4: TCP: 以下の場合パケットは破棄されます TCP ヘッダが途中で切り捨てられている data-offset フィールドが 5 より小さい チェックサムエラー ポート番号が 0 TCP フラグの組み合わせ異常 UDP: 以下の場合パケットは破棄されます UDP ヘッダが途中で切り捨てられている UDP ペイロードが途中で切り捨てられている (IP フラグメント以外 ) UDP buffer length が UDP length フィールドより小さい チェックサムエラー 2010 Palo Alto Networks Page 5
トンネルのカプセル解除 (Tunnel Decapsulation) トンネルのカプセル解除や復号化も構文解析ステージで実施されます 解析後 パケットがトンネル (IPSec SSL 通信での SSL-VPN) に一致することが判明すると 以下のシーケンスが実行されます 最初にパケットがカプセル解除され エラーがあれば破棄されます トンネルに関連付けられたトンネルインタフェースが新規入力インタフェースとしてパケットに割り当てられ パケットはトンネル種別で定義されたパケットヘッダから構文解析するプロセスに戻ります 現在サポートされるトンネル種別はすべて IP レイヤのトンネリングであるためトンネルされたパケットに対するパケット構文解析は IP ヘッダから始まります IP フラグメント解除 (IP Defragmentation) IP フラグメントは構文解析され フラグメント解除プロセスにより再構成 ( リアセンブリ ) され IP ヘッダから構文解析が再開始されます フラグメントは tear-drop 攻撃 ( フラグメントの重複 ) により破棄される場合もあります ファイアウォールセッション検索 (Firewall Session Lookup) パケット種別やインタフェースモードによってパケットはファイアウォール処理されるか決まります 以下の表に各インタフェース動作モードとパケット種別に対するパケット処理動作の要約を示します パケット種別 IPv4 ユニキャスト IP limited broadcast IP directed broadcast Martian address レイヤ 3 レイヤ 2 インタフェース動作モード バーチャルワイヤ デフォルト マルチキャ IPv6 ファイ ストフォワー アウォール ディング =ON =ON 検査と転送検査と転送検査と転送検査と転送検査と転送検査と破棄 破棄 破棄 転送 ( フラッディング ) 転送 ( フラッディング ) Tap 転送検査と転送転送破棄 転送検査と転送転送破棄 破棄破棄破棄破棄破棄破棄 IPv6 破棄転送転送 Non-IP 可能であれば処理 IPv6 ファイアウォール =ON であれば検査 検査と転送 破棄 転送転送転送転送破棄 パケットがファイアウォール検査を受ける場合 パケットのフロー検索が実施されます ファイアウォールセッションはそれぞれ 6 つの要素キーで識別される 2 つの単方向フローで構成されます PAN-OS の実装では フローは 6 つの要素キーを使ってそれぞれ識別されます 送信元と宛先アドレス : IP パケットから得られる IP アドレスです 2010 Palo Alto Networks Page 6
送信元と宛先ポート : TCP/UDP プロトコルヘッダから得られるポート番号 TCP/UDP 以外の場合 プロトコルの他のフィールドが使用される ICMP の場合は ICMP 識別子とシーケンス番号 IPSec の場合は SPI PPTP の場合は GRE call ID がフロー識別に使われます プロトコル : IP ヘッダの IP プロトコル番号がフローキーを得るのに使われます セキュリティゾーン : このフィールドはパケットが到達した入力インタフェースから得られます アクティブフローはフロー検索テーブルに保持されます パケットがファイアウォール検査対象であると判断された場合 6 つの要素のフローキーがパケットから導き出され 既存フローと当該パケットを一致させるフロー検索が実施されます 各フローにはクライアントとサーバ要素があり ファイアウォールから見てセッションの最初のパケットの送信者がクライアントであり その最初のパケットの受信者がサーバになります 注意 : クライアントとサーバの分類はファイアウォールの視点からであり エンドホストの観点からは同じになることも異なることもあり得ます 上記のクライアントとサーバの分類を基に C2S (client-to-server) フローと S2C (server-to-client) フローに分けられます すべてのクライアントからサーバへのパケットは同じ C2S フローのキーを持ち 同様にサーバからクライアントへのパケットは同じ S2C フローのキーを持ちます ファイアウォールセッション確立 以下の手順によりファイアウォールセッションの確立が行われます フラッディングとパケット異常の検知 ファイアウォールインタフェースにパケットが到達すると 入力インタフェース情報が入力ゾーン特定に使われます そのゾーンにゾーンプロテクションプロファイルが設定されている場合 ゾーンプロテクションプロファイル内に設定された評価が行われます TCP 状態確認 SYN ビット設定の無い最初の TCP パケットは破棄されます ゾーンプロテクションプロファイルで SYN flood 設定が行われている場合 指定した閾値に SYN の数が到達すると TCP SYN cookie がトリガされます SYN cookie は以下のような実装で動作します データプレーンがブートアップしたタイミングで cookie をエンコードするシードが乱数生成器により生成されます クライアントから受信した ACK パケットが cookie エンコードと一致しない場合 パケットは non- SYN であると見なされ パケットを破棄します SYN cookie 処理が実施されたセッションは TCP 3 ウェイハンドシェイクでプロキシとして機能するファイアウォールとして TCP シーケンス番号変換が行われることがあります 注意 : 1. SYN ビット設定の無い最初の TCP パケットをファイアウォールに許可するよう設定することができます これは推奨されない設定ですが 非対称フローの場合はこれが必要となります 2. SYN cookie が有効な場合 TCP non-syn を破棄する設定をファイアウォールに行うことを推奨します 2010 Palo Alto Networks Page 7
フォワーディングセットアップ このステージではパケットのフォワーディングパスを決定します パケットフォワーディングはファイアウォールインタフェースがどのように設定されているかに依存します 以下の表にパケットフォワーディング動作をまとめます インタフェースモード Tap バーチャルワイヤレイヤ 2 レイヤ 3 フォワーディング動作出力インタフェース / ゾーンは入力インタフェース / ゾーンと同じです パケットは破棄されます 出力インタフェースはバーチャルワイヤ設定のピア ( もう一方の ) インタフェースになります 宛先 MAC に対する出力インタフェースは MAC テーブルによって得られます この情報が無い場合 入力インタフェースを除く VLAN 内のすべてのインタフェースへフレームがフラッディングされます ネクストホップの決定にはルートテーブル検索が使われます NAT ポリシー検索 レイヤ 3 モードでのみ適用されます このステージでは入力ゾーンと出力ゾーン情報が利用できます NAT ルールはオリジナルパケットに対して適用されます 宛先 NAT では 出力インタフェースを決定するために変換アドレスに対する 2 回目のルート検索が実施されます 送信元 NAT では 出力インタフェース経由でパケットが送出されるときに IP アドレスが変換されます 注意 : NAT に関する詳細は NAT の TechNote を参照してください User ID IP アドレスに対してユーザ情報が利用できない場合で パケットの宛先が TCP 80 番ポートの場合 キャプティブポータルルール検索が行われ パケットがキャプティブポータル認証の対象となるか確認されます キャプティブポータルが適用される場合 パケットはキャプティブポータルデーモンへリダイレクトされます (PAN-OS 4.0 からは 80 番以外のポートも指定可能 ) セキュリティポリシー検索 (Security policy lookup) このステージでは入力ゾーンと出力ゾーン情報が利用されます セキュリティポリシーのアクションがパケットを許可する場合 パケットは出力インタフェース経由で送出されます ポリシーのアクションが deny の場合 パケットはドロップされます セキュリティルールに一致しないトラフィックは拒否されます デフォルトでは ゾーン間トラフィックは許可されます 注意 : NAT ルールが設定されている場合でも セキュリティルールはオリジナルパケットの内容に対して適用されます 2010 Palo Alto Networks Page 8
ポートスキャン / アドレススイープ防御 入力ゾーンにてゾーンプロテクションプロファイルが設定されている場合 ポートスキャン (port scan) とアドレススイープ (address sweep) 防御が実施されます セッション割当 (Session allocation) 上記すべての手順が正常に完了すると 新規セッションエントリがフリープールから割り当てられます このとき以下のリソース制限によりセッション割当エラーが起きえます VSYS セッション最大値に到達した 利用可能なすべてのセッションが割り当てられた セッション割当が成功すると 以下が実施されます セッション内容がパケットとフォワーディングポリシーの結果から展開されたフローキーとともに記録される セッション状態が INIT ( 割り当て前 ) から OPENING ( 割り当て後 ) に変わる アプリケーションが識別されない場合 トランスポート層プロトコルのデフォルト値にセッションタイムアウト値が設定される ファイアウォールセッション ファストパス 既存セッションと一致したパケットはファストパス (fast path) へ進みます このステージはレイヤ 2 からレイヤ 4 のファイアウォール処理から始まります セッションが破棄状態の場合 パケットは破棄されます ポリシーのアクションが deny に変更されるか 脅威が検知された場合 セッションは破棄状態としてマークされ得ます セッションがアクティブな場合 セッションタイムアウトがリフレッシュされます パケットが TCP FIN/RST の場合 セッションタイムアウトは timeout-tcpwait 値に書き換えられます NAT が適用される場合 必要に応じて L3/L4 ヘッダを変換します 以下の条件のいずれかに一致する場合 既存セッションと一致したパケットはレイヤ 7 処理を行おうとします パケットが TCP/UDP データを持つか TCP/UDP 以外のパケットの場合 セッションアプリケーションがまだ検知されない場合 アプリケーション識別が実施されます アプリケーション自体にコンテンツ検査を必要とする場合 ALG が関係する場合 アプリケーションがトンネルされたアプリケーションの場合 関連するセキュリティプロファイルをセキュリティルールが持つ場合 アプリケーション識別されたセッションはコンテンツ検査の対象となります アプリケーションがトランスポート層に TCP を使う場合 ストリームデータがレイヤ 7 モジュールへ送られる前に TCP リアセンブリモジュールによって処理されます TCP リアセンブリモジュールはウインドウチェック 順序の異なるデータのバッファ TCP 再送の省略も行われます アプリケーション識別 (App-ID) アプリケーション識別には 2 つのケースがあります a) セッションアプリケーションが未定 (undecided) から定義済みのものへと識別される場合 b) 定義済みのあるアプリケーションから 別のものへと識別される場合最初にアプリケーションオーバライド (application-override) ポリシー検索が行われ一致するルールが無いか確認されます ルールがあれば アプリケーションが決定されます ルールが無ければ アプ 2010 Palo Alto Networks Page 9
リケーションシグネチャを使ってアプリケーションが識別されます アプリケーションが一致すると 可能であれば以降の検索を高速化するため アプリケーションを識別する宛先 IP アドレス 宛先ポート プロトコルが App-ID キャッシュへ保存されます アプリケーションがあるものから別のものへと変更されるのは コンテンツ検査のプロトコルデコーディングによって行われます セッションアプリケーションが識別されると アクセス制御 コンテンツ検査 トラフィック管理 ロギングが設定に従って開始されます セキュリティポリシー検索 : 一致するルールを検出するキーとして 識別されたアプリケーションとともに セッションの IP ポート プロトコル ゾーン ユーザが使われます セキュリティポリシーのロギングがセッションスタートで有効な場合 トラフィックログが生成されます セキュリティポリシーがコンテンツ検査の対象となるプロファイルやアプリケーションを持つ場合 コンテンツ検査セッションをセットアップします セキュリティポリシーのアクションが allow の場合 QoS ポリシー検索を行い 一致する QoS クラスを割り当てます セキュリティポリシーのアクションが allow でアプリケーションが SSL の場合 SSL decryption ポリシー検索を行い 一致する復号化ルールがあればプロキシコンテキストをセットアップします まとめ パロアルトネットワークスの次世代ファイアウォールは独自のシングルパスパラレルプロセッシング (SP3) アーキテクチャをベースに 前例のない機能や技術を取り入れながら 高スループットで低遅延なネットワークセキュリティを実現します パロアルトネットワークスは シングルパスソフトウェアとパラレルプロセッシングハードウェアという 2 つ補完的コンポーネントを一体化した SP3 アーキテクチャを用いて今日のセキュリティインフラストラクチャを悩ませるパフォーマンス問題を解決します これにより今日のハイパフォーマンスネットワークの要件であるスループット トランザクション処理 ネットワークセキュリティを完全に統合します 2010 Palo Alto Networks Page 10