Palo Altoのゾーンプロテクションは、フラッド攻撃、偵察攻撃、その他のパケットベースの攻撃から保護するセキュリティ機能で、特にインターネットへ接続する場合は、セキュリティ向上のために欠かせない機能となります。本記事では、ゾーンプロテクションの概要と設定方法をわかりやすく解説していきます。
ゾーンプロテクションとは何か
ゾーンプロテクションは、特定のネットワークゾーン(例えば、インターネットなどの外部接続ゾーンなど)に対して、不正アクセスやネットワーク攻撃(フラッド攻撃や偵察攻撃など)から保護するためのセキュリティ機能です。
ゾーンプロテクションでは、主に3つのアクセスに対して防御する設定ができます。
フラッド防御(Flood Protection)
フラッド防御は、ネットワークやサービスを過負荷に陥れることを目的とした大量の不要なトラフィック(洪水攻撃)から保護する機能です。
代表的な洪水攻撃には、SYNフラッド攻撃やUDPフラッド攻撃があります。
偵察行為防御(Reconnaissance Protection)
偵察行為防御は、攻撃者がネットワークの脆弱性や構成情報を収集するために行う偵察活動(スキャンなど)からの保護を目的とします。
ポートスキャンが典型的です。
パケットベースの攻撃保護(Packet-based Attack Protection)
パケットベースの攻撃保護は、不正または異常なパケット構造を利用した攻撃からネットワークを守る機能です。
主に、IPフラグメント攻撃、IPなりすまし、異常なパケットサイズやヘッダーを使用した攻撃などがあります。
基本的な設定手順
今回は、インターネットへ接続されているUntrustゾーンからTrustゾーンである内部ネットワークを保護する設定をします。
ゾーンの定義と基本設定
まず、ファイアウォール上でセキュリティゾーンを作成し、各ゾーンにネットワークインターフェースを割り当てます。その後、各ゾーン間でのトラフィックフローを制御するためにセキュリティポリシーを設定し、保護対象のデバイスに対してPaloaltoを経由した通信が行えるようにします。
今回、UntrustからTrustにあるLinuxサーバへすべての通信を許可する設定がされているものとします。
ゾーンプロテクションプロファイルの作成
「NETWORK」タブから「ゾーンプロテクション」へ移動し、「追加」をクリックします。
下記の画面が表示されます。名前は任意の名前(今回は、Untrust_Protect とします)を設定します。タブを見ると、「フラッド防御」「偵察行為防御」「パケットベースの攻撃保護」などが設定できます。
初期状態では、何も保護はされていません。一旦、何も設定せず、「OK」をクリックします。
下記のとおり登録されます。
ゾーンへの適用
作成したゾーンプロテクションプロファイルは、ゾーンへ適用します。今回は、Untrustゾーンへ適用します。
「NETWORK」タブから「ゾーン」へ移動し、「Untrust」をクリックします。
「ゾーンプロテクション」にて、上で作成した「Untrust_Protect」を選択し、「OK」をクリックします。
下記のとおり登録されます。
「Commit」を実行し、設定を反映します。
これまでの設定では、何も保護をしていないプロファイルをゾーンに適用しただけです。以降では、プロファイルに保護設定を追加して、動作を確認していきます。
フラッド制御の設定と動作確認
フラッド制御として、「SYNフラッド制御」と「UDPフラッド制御」の設定を行い、実際にフラッド通信を発生させてみます。
フラッド制御では、制御対象の通信に対して3つのしきい値を設定する必要があります。
- アラーム発生レート:新しいCPS(コネクション/秒)がこのしきい値を超えるとアラームが発生します。
- アクティベーション:新しいCPS(コネクション/秒)がこのしきい値を超えると、フラッド制御が起動し、新しい接続をドロップ(遮断)し始めます。
- 最大:このレートを超えると入ってくるパケットをドロップしはじめます。
SYNフラッド保護
「ゾーンプロテクションプロファイル」にて、「フラッド防御」タブより「SYN」にチェックを入れます。アクションは「Random Early Drop」と「SYN Cookie」が選択できます。ここでは、「SYN Cookie」を選択します。
「SYNCookie」はサーバーが不正なSYN Flood攻撃から守るための機能です。接続リクエスト(SYN)を受けたサーバーは、通常は状態情報を保持しますが、SYNCookieではこの情報を保持せず、代わりに特別な計算で生成されたシーケンス番号を利用します。この番号を使って、後にクライアントから来る正当な応答(ACK)を確認し、偽のリクエストを排除します。
各しきい値は、今回、検証環境のため、値を小さくしています。この値は実環境に合わせて、チューニングしてください。
Untrustゾーンを経由する通信にSYNフラッドを発生させます。(hping3でSYNフラッドを発生させます)
「MONITOR」タブより「ログ」へ移動し、「脅威」を確認するとTCPフラッド防御が動作していることが確認できます。
コマンドでは、show zone-protection zone <ゾーン名>で、どの制御に対して、どのくらいパケットドロップがあったのかを確認することができます。
admin@PA-VM> show zone-protection zone Untrust ------------------------------------------------------------------------------------------ Number of zones with protection profile: 1 ------------------------------------------------------------------------------------------ Zone Untrust, vsys vsys1, profile Untrust_Protect ------------------------------------------------------------------------------------------ tcp-syn SYN cookie enabled: yes DP alarm rate: 10 cps, activate rate: 10 cps, maximal rate: 40 cps current: 0 packets dropped: 30 packets not TCP SYN: 0 packets not TCP SYN ACK: 0 packets ------------------------------------------------------------------------------------------ IPv(4/6) Filter: tcp-reject-non-syn: enabled: yes, (global), packet dropped: 0 discard-tcp-syn-with-data: enabled: yes, packet dropped: 0 discard-tcp-synack-with-data: enabled: yes, packet dropped: 0 IPv4 packet filter: IPv6 packet filter: routing-header-0: enabled: yes, packet dropped: 0 routing-header-1: enabled: yes, packet dropped: 0 routing-header-4-252: enabled: yes, packet dropped: 0 routing-header-255: enabled: yes, packet dropped: 0 ------------------------------------------------------------------------------------------
UDPフラッド制御
「ゾーンプロテクションプロファイル」にて、「フラッド防御」タブより「UDP」にチェックを入れます。各しきい値は、今回、検証環境のため、値を小さくしています。この値は実環境に合わせて、チューニングしてください。
Untrustゾーンを経由する通信にUDPフラッドを発生させます。(hping3でUDPフラッドを発生させます)
「MONITOR」タブより「ログ」へ移動し、「脅威」を確認するとUDPフラッド制御が動作していることが確認できます。
コマンド show zone-protection zone <ゾーン名>もあわせて確認します。
admin@PA-VM> show zone-protection zone Untrust ------------------------------------------------------------------------------------------ Number of zones with protection profile: 1 ------------------------------------------------------------------------------------------ Zone Untrust, vsys vsys1, profile Untrust_Protect ------------------------------------------------------------------------------------------ udp RED enabled: yes DP alarm rate: 10 cps, activate rate: 10 cps, maximal rate: 40 cps current: 0 packets dropped: 898 packets ------------------------------------------------------------------------------------------ IPv(4/6) Filter: tcp-reject-non-syn: enabled: yes, (global), packet dropped: 0 discard-tcp-syn-with-data: enabled: yes, packet dropped: 0 discard-tcp-synack-with-data: enabled: yes, packet dropped: 0 IPv4 packet filter: IPv6 packet filter: routing-header-0: enabled: yes, packet dropped: 0 routing-header-1: enabled: yes, packet dropped: 0 routing-header-4-252: enabled: yes, packet dropped: 0 routing-header-255: enabled: yes, packet dropped: 0 ------------------------------------------------------------------------------------------
その他防御の設定と動作確認
偵察行為防御(TCPポートスキャン)
「偵察行為防御」として、「TCPポートスキャン」の設定を行い、実際にスキャン通信を発生させてみます。
「ゾーンプロテクションプロファイル」にて、「偵察行為防御」タブより「TCPポートスキャン」の「有効化」にチェックを入れ、アクションを「block」にします。
アクションは下記4パターンより選択できます。
- allow(許可):偵察活動を許可します。攻撃が検出されても、ファイアウォールは介入せず、そのまま通信を継続させます。
- alert(警告):攻撃が設定されたしきい値に一致した場合、ファイアウォールはアラートを生成します。これはデフォルトのアクションであり、管理者に偵察活動を通知するために使用されます。
- block(ブロック):攻撃源から特定の宛先へのすべての後続のパケットを、設定された時間間隔の残りの期間にわたってドロップ(遮断)します。このアクションは、特定の宛先への通信に焦点を当てています。
- block-ip(IPブロック):攻撃源からのすべてのパケットを、設定された期間(1秒から3,600秒)にわたってドロップします。このアクションは、「Track By」の設定に応じて、攻撃源のみ、または攻撃源と特定の宛先の両方のトラフィックをブロックすることができます。
「block」はより限定的なアプローチで、特定の宛先への通信のみをターゲットにします。一方、「block-ip」は攻撃源のすべての通信を対象とすることができます。下記は、block-ip の画面例です。
Untrustゾーンを経由する通信にTCPポートスキャンを発生させます。(nmapでスキャンを実行します)
「MONITOR」タブより「ログ」へ移動し、「脅威」を確認すると偵察行為防御が動作していることが確認できます。
パケットベースの攻撃保護(ICMP 大型パケット)
パケットベースの攻撃保護として、「ICMP 大型パケット」のドロップ設定を行い、実際にサイズの大きいICMP通信を発生させてみます。
「ゾーンプロテクションプロファイル」にて、「パケットベースの攻撃保護」タブより「ICMPドロップ」タブの「ICMP大型パケット(>1024)」にチェックを入れます。
Untrustゾーンを経由する通信に1024バイトより大きいPingを実行すると応答がありません。
コマンド show zone-protection zone <ゾーン名>で確認すると、大型ICMPパケットがドロップしていることが確認できます。
admin@PA-VM> show zone-protection zone Untrust ------------------------------------------------------------------------------------------ Number of zones with protection profile: 1 ------------------------------------------------------------------------------------------ Zone Untrust, vsys vsys1, profile Untrust_Protect ------------------------------------------------------------------------------------------ IPv(4/6) Filter: discard-ip-frag: enabled: yes, packet dropped: 0 tcp-reject-non-syn: enabled: yes, (global), packet dropped: 0 discard-tcp-syn-with-data: enabled: yes, packet dropped: 0 discard-tcp-synack-with-data: enabled: yes, packet dropped: 0 IPv4 packet filter: discard-icmp-large-packet: enabled: yes, packet dropped: 521 IPv6 packet filter: routing-header-0: enabled: yes, packet dropped: 0 routing-header-1: enabled: yes, packet dropped: 0 routing-header-4-252: enabled: yes, packet dropped: 0 routing-header-255: enabled: yes, packet dropped: 0 ------------------------------------------------------------------------------------------
コメント