このページの目次
攻撃者回避テクニック
攻撃者は、SYN フラグと FIN フラグを使用して攻撃を開始する可能性があります。挿入図は、これらのプローブをブロックするように設計された画面オプションの構成も示しています。 詳細については、次のトピックを参照してください。
攻撃者回避テクニックを理解する
情報を収集する場合でも、攻撃を開始する場合でも、攻撃者は一般的に検出を回避することが期待されます。一部のIPアドレスとポートのスキャンは露骨で簡単に検出できますが、より巧妙な攻撃者はさまざまな手段を使用してアクティビティを隠します。SYNスキャンの代わりにFINスキャンを使用するなどの手法(攻撃者は、ほとんどのファイアウォールと侵入検知プログラムが検出することを知っている)は、検出を回避してタスクを正常に達成するための偵察およびエクスプロイト技術の進化を示しています。
FIN スキャンについて
FIN スキャンは、応答を発生させるために FIN フラグが設定された TCP セグメント (RST フラグが設定された TCP セグメント) を送信し、それによってホスト上のアクティブ・ホストまたはアクティブ・ポートを検出しようとします。攻撃者は、多くのファイアウォールが通常、後者の 2 つのアプローチに対して防御するが、必ずしも FIN セグメントに対しては保護しないため、ICMP エコー要求でアドレス スイープを実行したり、SYN セグメントでアドレス スキャンを実行したりするのではなく、このアプローチを使用する可能性があります。FINフラグが設定されたTCPセグメントを使用すると、検出を回避できるため、攻撃者の偵察作業の成功に役立つ可能性があります。
FINスキャンの阻止
FIN スキャンを阻止するには、次のいずれかまたは両方のアクションを実行します。
FINフラグが設定されているTCPセグメントを具体的にブロックするが、TCPセグメントでは異常であるACKフラグはブロックしない画面オプションを有効にします。
user@host#set security screen fin-no-ack tcp fin-no-ack user@host#set security zones security-zone name screen fin-no-ack
ここで
name
は、この画面オプションを適用するゾーンの名前です。既存のセッションに属していない非 SYN パケットをすべて拒否するようにパケット処理動作を変更します。SYN チェック フラグがデフォルトとして設定されています。
メモ:既存のセッションに属していないパケットに SYN フラグが設定されていることを確認するようにパケット フローを変更すると、null スキャン(TCP フラグが設定されていない場合)などの他のタイプの非 SYN スキャンも阻止されます。
TCP SYNチェックについて
デフォルトでは、Junos OSはセッションの最初のパケットでSYNフラグを確認し、非SYNフラグを持つTCPセグメントがセッションを開始しようとする場合は拒否します。このパケットフローをそのままにしておくか、セッションを作成する前にJunos OSがSYNフラグチェックを強制しないように変更することができます。 図 1 は、SYN フラグ チェックを有効にした場合と無効にした場合のパケット フロー シーケンスを示しています。
SYNフラグチェックが有効になっているJunos OSは、既存のセッションに属していない非SYN TCPセグメントを受信すると、パケットをドロップします。デフォルトでは、Junos OSは、非SYNセグメントを受信しても、送信元ホストにTCP RSTを送信しません。コマンドを使用することで set security zones security-zone trust tcp-rst
、TCP RSTを送信元ホストに送信するようにデバイスを設定できます。最初の非SYN TCPパケットのコードビットがRSTの場合、デバイスはTCP-RSTを送信しません。
最初のパケットでSYNフラグをチェックしないことには、次の利点があります。
非対称ルーティングを使用する NSRP—動的ルーティング環境のアクティブ/アクティブ NSRP 構成では、ホストは SYN フラグが設定された最初の TCP セグメントを一方のデバイス(デバイス A)に送信しますが、SYN/ACK はクラスタ内のもう一方のデバイス(デバイス B)にルーティングされる場合があります。この非対称ルーティングが、デバイス A がデバイス B とセッションを同期した後に発生した場合、すべては順調です。一方、デバイス A がセッションを同期し、SYN チェックが有効になる前に、SYN/ACK 応答がデバイス B に到達した場合、デバイス B は SYN/ACK を拒否し、セッションを確立できません。SYNチェックを無効にすると、デバイスBは、属する既存のセッションがなくてもSYN/ACK応答を受け入れ、新しいセッションテーブルエントリを作成します。
中断のないセッション:デバイスをリセットしたり、ポリシーのコアセクションのコンポーネントを変更したりして、SYNチェックが有効になっている場合、既存のすべてのセッションまたはポリシー変更が適用されるセッションが中断され、再起動する必要があります。SYNチェックを無効にすると、ネットワークトラフィックフローのこのような中断を回避できます。
メモ:このシナリオの解決策は、最初にSYNチェックを無効にしてデバイスをインストールすることです。次に、数時間後(確立されたセッションがデバイスを介して実行されているとき)、SYNチェックを有効にします。ポリシーのコアセクションには、送信元ゾーンと宛先ゾーン、送信元と宛先のアドレス、1 つ以上のサービス、およびアクションの主要コンポーネントが含まれています。
ただし、前述の利点により、次のセキュリティが犠牲になります。
偵察ホール:ACK、URG、RST、FIN などの非 SYN フラグを持つ最初の TCP セグメントが閉じたポートに到着すると、多くのオペレーティング システム(Windows など)は RST フラグが設定された TCP セグメントで応答します。ポートが開いている場合、受信者は応答を生成しません。
これらの対応または応答の欠如を分析することで、情報収集者は保護されたネットワークとJunos OSポリシーセットで偵察を行うことができます。TCP セグメントが非 SYN フラグを設定して送信され、ポリシーで許可されている場合、そのようなセグメントを受信する宛先ホストはそれをドロップし、RST フラグが設定された TCP セグメントで応答する可能性があります。このような応答は、特定のアドレスにアクティブなホストが存在すること、およびターゲットポート番号が閉じられていることを加害者に通知します。インテリジェンス収集者は、ファイアウォールポリシーがそのホスト上のそのポート番号へのアクセスを許可していることも学習します。
SYNフラグチェックを有効にすると、Junos OSは、既存のセッションに属していない場合、SYNフラグのないTCPセグメントをドロップします。TCP RST セグメントは返されません。その結果、スキャナーは、ポリシー・セットに関係なく、またはターゲット・ホストでポートが開いているか閉じているかに関係なく、応答を受け取りません。
セッションテーブルのフラッド—SYNチェックが無効になっている場合、攻撃者は、非SYNフラグが設定されたTCPセグメントの集中砲火で保護されたネットワークをフラッディングすることで、Junos OSのSYNフラッド防御機能をバイパスできます。ターゲットとなるホストはパケットを破棄し、場合によってはTCP RSTセグメントを応答として送信しますが、このようなフラッディングによってジュニパーネットワークスのデバイスのセッションテーブルがいっぱいになる可能性があります。セッション テーブルがいっぱいになると、デバイスは正当なトラフィックの新しいセッションを処理できません。
SYNチェックとSYNフラッド保護を有効にすることで、この種の攻撃を阻止できます。セッションの最初のパケットに SYN フラグが設定されていることをチェックすると、すべての新しいセッションが、SYN フラグが設定された TCP セグメントで強制的に開始されます。SYNフラッド保護は、セッションテーブルが過負荷にならないように、1秒あたりのTCP SYNセグメントの数を制限します。
SYNチェックを無効にする必要がない場合は、有効にすることを強くお勧めします(Junos OSの初期インストールのデフォルト状態)。コマンドで set flow tcp-syn-check
有効にできます。SYNチェックを有効にすると、デバイスは、確立されたセッションに属していない限り、非SYNフラグが設定されたTCPセグメントを拒否します。
TCP SYNチェックの設定
SYNチェックを有効にすると、デバイスは、確立されたセッションに属していない限り、非SYNフラグが設定されたTCPセグメントを拒否します。SYN チェックを有効にすると、攻撃者の偵察とセッション テーブルのフラッディングを防ぐのに役立ちます。TCP SYN チェックはデフォルトで有効になっています。
SYNチェックを無効にするには:
user@host#set security flow tcp-session no-syn-check
TCP 厳密な SYN チェックの設定
厳密な SYN チェックを有効にすると、デバイスは TCP セッションの厳密な 3 ウェイ ハンドシェイク チェックを有効にします。3ウェイハンドシェイクが完了する前にデータパケットをドロップすることで、セキュリティを強化します。TCP 厳密な SYN チェックは、デフォルトでは無効になっています。
または no-syn-check-in-tunnel
が有効になっている場合no-syn-check
、strict-syn-check
オプションは有効にできません。
SYN を有効にすると strict-syn-check
、データを伝送するパケットがドロップされます。
厳密な SYN チェックを有効にするには:
user@host#set security flow tcp-session strict-syn-check
IP スプーフィングについて
ネットワークの制限されたエリアへのアクセスを試みる 1 つの方法は、パケット ヘッダーに偽の送信元アドレスを挿入して、パケットが信頼できる送信元から送信されたように見せることです。この手法は、IP スプーフィングと呼ばれます。IP スプーフィングを検出するメカニズムは、ルート テーブルのエントリに依存します。例えば、送信元IPアドレス10.1.1.6のパケットがge-0/0/1に到着しても、Junos OSがge-0/0/0を経由する10.1.1.0/24へのルートを持っている場合、IPスプーフィングチェックにより、このアドレスがルートテーブルで定義されている無効なインターフェイスに到着したことが検出されます。10.1.1.6 からの有効なパケットは、ge-0/0/1 ではなく、ge-0/0/0 経由でのみ到着できます。そのため、Junos OSは、パケットに偽装された送信元IPアドレスがあると判断し、破棄します。Junos OSは、IPv4とIPv6の両方のなりすましパケットを検知してドロップします。
制限
IP スプーフィングには、次のような制限事項があります。
-
セキュアトンネルインターフェイス(st0)または/31 IPアドレスを持つポイントツーポイントインターフェイスを設定すると、BFDセッションがダウンします。/31 IPアドレスはサブネットブロードキャストアドレスとみなされるため、Junos OSはパケットにスプーフィングされたIPアドレスがあると判断し、それを破棄します。
例:IP スプーフィングのブロック
この例では、IP スプーフィング攻撃をブロックする画面を構成する方法を示します。
要件
始める前に、IP スプーフィングのしくみを理解してください。 IPスプーフィングについてを参照してください。
概要
ネットワークの制限されたエリアへのアクセスを試みる 1 つの方法は、パケット ヘッダーに偽の送信元アドレスを挿入して、パケットが信頼できる送信元から送信されたように見せることです。この手法は、IP スプーフィングと呼ばれます。
この例では、screen-1 という画面を設定して IP スプーフィング攻撃をブロックし、zone-1 セキュリティ ゾーンでその画面を有効にします。
構成
手順
手順
IPスプーフィングをブロックするには:
画面を設定します。
[edit ] user@host# set security screen ids-option screen-1 ip spoofing
セキュリティゾーンで画面を有効にします。
[edit] user@host# set security zone security-zone zone-1 screen screen-1
デバイスの設定が完了したら、設定をコミットします。
[edit] user@host# commit
検証
設定が正常に機能していることを確認します。
セキュリティゾーンの画面の検証
目的
セキュリティ ゾーンで画面が有効になっていることを確認します。
アクション
動作モードから コマンド show security zones
を入力します。
[edit] user@host> show security zones Security zone: zone-1 Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: screen-1 Interfaces bound: 1 Interfaces: ge-1/0/0.0
セキュリティデバイス上のレイヤー2透過モードでのIPスプーフィングについて
IPスプーフィング攻撃では、攻撃者はネットワークの制限された領域にアクセスし、パケットヘッダーに偽の送信元アドレスを挿入して、パケットが信頼できる送信元から送信されたように見せかけます。IPスプーフィングは、サービス拒否(DoS)攻撃で最も頻繁に使用されます。SRXシリーズファイアウォールが透過モードで動作している場合、IPスプーフィングチェックメカニズムはアドレス帳エントリーを利用します。アドレス帳はルーティングエンジンにのみ存在します。レイヤー2透過モードでのIPスプーフィングは、パケット転送エンジンで実行されます。パケット転送エンジンがパケットを受信するたびに、ルーティングエンジンからアドレス帳情報を取得することはできません。そのため、レイヤー2ゾーンに接続されたアドレス帳は、パケット転送エンジンにプッシュする必要があります。
レイヤー2透過モードでのIPスプーフィングは、DNSおよびワイルドカードアドレスをサポートしていません。
パケット転送エンジンがパケットを受信すると、パケットの送信元IPアドレスがチェックされ、着信ゾーンのアドレス帳にあるかどうかが確認されます。パケットの送信元 IP アドレスが着信ゾーンのアドレス帳にある場合、この IP アドレスはインターフェイスで許可され、トラフィックが渡されます。
送信元 IP アドレスが受信ゾーンのアドレス帳には存在せず、他のゾーンには存在する場合、その IP アドレスはスプーフィングされた IP と見なされます。したがって、画面構成に応じて、ドロップやロギングなどのアクションを実行できます(ドロップなしのアラーム)。
alarm-without-drop
オプションが設定されている場合、レイヤ 2 およびレイヤ 3 のスプーフィング パケットはアラーム メッセージをトリガーするだけで、パケットはドロップされません。
パケットの送信元IPアドレスが着信ゾーンのアドレス帳または他のゾーンに存在しない場合、IPがスプーフィングされているかどうかを判断できません。このような場合、パケットは渡されます。
Junos OSは、アドレス帳で送信元IPアドレスを検索する際に、以下の一致条件を考慮します。
Host-match- アドレス帳で見つかった IP アドレスの一致は、プレフィックスのないアドレスです。
Prefix-match- アドレス帳で見つかった IP アドレスの一致は、プレフィックスが付いたアドレスです。
Any-match- アドレス帳で見つかった IP アドレスの一致は、「any」、「any-IPv4」、または「any-IPv6」です。
No-match- 一致する IP アドレスが見つかりません。
セキュリティデバイス上のレイヤー2透過モードでのIPスプーフィングの設定
IP スプーフィング チェック メカニズムを構成して、IP がスプーフィングされているかどうかを判断できます。
レイヤー2透過モードでIPスプーフィングを設定するには:
alarm-without-drop
オプションが設定されている場合、レイヤー2スプーフィングパケットはアラームメッセージをトリガーするだけで、パケットはドロップされません。
IP ソース ルート オプションについて
ソースルーティングは、IPパケット伝送の送信元にいるユーザーが、IPパケットが宛先に向かうパスに沿って、デバイスのIPアドレス(「ホップ」とも呼ばれる)を指定できるように設計されています。IPソースルートオプションの当初の目的は、診断分析を支援するルーティング制御ツールを提供することでした。例えば、特定の宛先へのパケットの送信が不規則に成功した場合、最初にレコードルートまたはタイムスタンプIPオプションのいずれかを使用して、パケットが通るパスに沿ったデバイスのアドレスを検出することができます。その後、ルーズ ルート オプションまたはストリクト ソース ルート オプションのいずれかを使用して、レコード ルートまたはタイムスタンプ オプションが生成した結果から学習したアドレスを使用して、トラフィックを特定のパスに誘導できます。デバイスアドレスを変更してパスを変更し、異なるパスに沿って複数のパケットを送信することで、成功率を向上または低下させる変更に気づくことができます。分析と排除のプロセスを通じて、問題がどこにあるかを推測できる場合があります。 図2を参照してください。
IPソースルートオプションの使用はもともと無害でしたが、攻撃者はそれらをより不正な用途に使うことを学びました。また、IPソースルートオプションを使用して、別のパスを指定することで、実際のアドレスを非表示にして、ネットワークの制限されたエリアにアクセスすることができます。攻撃者が両方の欺瞞を利用する方法を示す例として、 図 3 に示すような次のシナリオを考えてみます。
Junos OS は、トラフィック 2.2.2.0/24 が ethernet1(zone_external にバインドされたインターフェイス)を経由する場合のみ許可します。デバイス 3 および 4 はアクセス制御を適用しますが、デバイス 1 および 2 は適用しません。さらに、デバイス 2 は IP スプーフィングをチェックしません。攻撃者は送信元アドレスをスプーフィングし、ルーズ ソース ルート オプションを使用して、パケットをデバイス 2 を経由して 2.2.2.0/24 ネットワークに誘導し、そこからデバイス 1 に送信します。デバイス1からデバイス3に転送され、デバイス3からジュニパーネットワークスデバイスに転送されます。パケットは 2.2.2.0/24 サブネットから送信され、そのサブネットからの送信元アドレスを持っているため、有効であるように見えます。ただし、以前のチカニーの残骸の1つが残っています:緩いソースルートオプション。この例では、zone_externalの拒否IPソースルート画面オプションを有効にしました。パケットが ethernet3 に到着すると、デバイスはそれを拒否します。
ルーズ ルート オプションまたはストリクト ソース ルート オプションが設定されているパケットをデバイスでブロックするか、そのようなパケットを検出して、イングレス インターフェイスのカウンター リストにイベントを記録することができます。画面オプションは次のとおりです。
[拒否 IP ソース ルート オプション(Deny IP Source Route Option)]:ルーズ またはストリクト ソース ルート オプションを採用するすべての IP トラフィックをブロックするには、このオプションを有効にします。送信元ルートオプションにより、攻撃者が偽のIPアドレスでネットワークに侵入する可能性があります。
IP ルーズ ソース ルート オプションの検出—デバイスは、IP オプションが 3(ルーズ ソース ルーティング)のパケットを検出し、イングレス インターフェイスのスクリーン カウンター リストにイベントを記録します。このオプションは、パケットが送信元から送信先に移動するための部分的なルート リストを指定します。パケットは指定されたアドレスの順序で進む必要がありますが、指定されたアドレスの間にある他のデバイスを通過することは許可されています。
IP Strict Source Route Option—デバイスは、IPオプションが9(Strict Source Routing)のパケットを検出し、イングレスインターフェイスのスクリーンカウンターリストにイベントを記録します。このオプションは、パケットが送信元から宛先に移動するための完全なルート リストを指定します。リストの最後のアドレスが、宛先フィールドのアドレスを置き換えます。現在、この画面オプションは IPv4 にのみ適用されます。
例:ルーズ ルートまたはストリクト ソース ルートのオプション セットを使用したパケットのブロック
この例では、ルーズ ルート オプション セットまたはストリクト ソース ルート オプション セットでパケットをブロックする方法を示しています。
要件
開始する前に、IPソースルートオプションの仕組みを理解しておいてください。 IPソースルートオプションについてを参照してください。
概要
ソースルーティングを使用すると、IPパケット転送の送信元にいるユーザーは、IPパケットが宛先に向かうパスに沿って、デバイスのIPアドレス(「ホップ」とも呼ばれます)を指定できます。IPソースルートオプションの当初の目的は、診断分析を支援するルーティング制御ツールを提供することでした。
ルーズ ルート オプションまたはストリクト ソース ルート オプションが設定されているパケットをデバイスでブロックするか、そのようなパケットを検出して、イングレス インターフェイスのカウンター リストにイベントを記録することができます。
この例では、screen-1 という画面を作成して、ルーズ ルート オプションまたはストリクト送信元ルート オプション セットでパケットをブロックし、zone-1 セキュリティ ゾーンでその画面を有効にします。
構成
手順
手順
ルーズ ルートまたはストリクト ソース ルート オプション セットでパケットをブロックするには:
画面を設定します。
[edit ] user@host# set security screen ids-option screen-1 ip source-route-option
セキュリティゾーンで画面を有効にします。
[edit ] user@host# set security zones security-zone zone-1 screen screen-1
デバイスの設定が完了したら、設定をコミットします。
[edit] user@host# commit
検証
設定が正常に機能していることを確認します。
セキュリティゾーンの画面の検証
目的
セキュリティ ゾーンで画面が有効になっていることを確認します。
アクション
動作モードから コマンド show security zones
を入力します。
[edit] user@host> show security zones Security zone: zone-1 Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: screen-1 Interfaces bound: 1 Interfaces: ge-1/0/0.0
例:ルーズ ルートまたはストリクト ソース ルートのオプション セットを使用したパケットの検出
この例では、ルーズ ルート オプションまたはストリクト ソース ルート オプション セットを使用してパケットを検出する方法を示します。
要件
開始する前に、IPソースルートオプションの仕組みを理解しておいてください。 IPソースルートオプションについてを参照してください。
概要
ソースルーティングを使用すると、IPパケット転送の送信元にいるユーザーは、IPパケットが宛先に向かうパスに沿って、デバイスのIPアドレス(「ホップ」とも呼ばれます)を指定できます。IPソースルートオプションの当初の目的は、診断分析を支援するルーティング制御ツールを提供することでした。
ルーズ ルート オプションまたはストリクト ソース ルート オプションが設定されているパケットをデバイスでブロックするか、そのようなパケットを検出して、イングレス インターフェイスのカウンター リストにイベントを記録することができます。
この例では、screen-1 と screen-2 という 2 つの画面を作成し、ルーズまたはストリクト送信元ルートのオプションが設定されたパケットを検出して記録するが、ブロックはしないようにし、ゾーン ゾーン 1 とゾーン 2 の画面を有効にします。
構成
手順
手順
ルーズまたはストリクトのソース ルート オプション セットがあるパケットを検出して記録するが、ブロックはしない場合。
ルーズソース画面を設定します。
[edit] user@host# set security screen ids-option screen-1 ip loose-source-route-option
厳密なソースルート画面を設定します。
[edit] user@host# set security screen ids-option screen-2 ip strict-source-route-option
メモ:現在、この画面オプションは IPv4 のみをサポートしています。
セキュリティゾーンの画面を有効にします。
[edit] user@host# set security zones security-zone zone-1 screen screen-1 user@host# set security zones security-zone zone-2 screen screen-2
デバイスの設定が完了したら、設定をコミットします。
[edit] user@host# commit
検証
設定が正常に機能していることを確認します。
セキュリティゾーンの画面の検証
目的
セキュリティ ゾーンで画面が有効になっていることを確認します。
アクション
動作モードから コマンド show security zones
を入力します。
[edit] user@host> show security zones Security zone: zone-1 Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: screen-1 Interfaces bound: 1 Interfaces: ge-1/0/0.0 Security zone: zone-2 Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: screen-2 Interfaces bound: 1 Interfaces: ge-2/0/0.0
セキュリティ画面の設定の確認
目的
セキュリティ画面の設定情報を表示します。
アクション
動作モードから コマンド show security screen ids-option screen-name
を入力します。
[edit] user@host> show security screen ids-option screen-1 Screen object status: Screen object status: Name Value IP loose source route option enabled
[edit] user@host> show security screen ids-option screen-2 Screen object status: Screen object status: Name Value IP strict source route option enabled