オペレーティングシステム識別プローブ
攻撃者は、エクスプロイトを開始する前に、標的となるホストを調査し、そのオペレーティングシステムを学習しようとする可能性があります。さまざまなオペレーティングシステムがTCPの異常にさまざまな方法で反応します。その知識があれば、攻撃者は、デバイス、ネットワーク、またはその両方に、どちらのさらなる攻撃がより大きな損害を与える可能性があるかを判断できます。 詳細については、次のトピックを参照してください。
オペレーティングシステム識別プローブについて
攻撃者は、エクスプロイトを開始する前に、標的となるホストを調査して、そのオペレーティングシステム(OS)を学習しようとする可能性があります。その知識があれば、どの攻撃を開始し、どの脆弱性を悪用するかをより適切に決定できます。Junos OSは、OSタイプに関する情報を収集するために一般的に使用される偵察プローブをブロックできます。
ドメイン ネーム システムの解決について
Junos OS リリース 12.1X47 以前までは、DNS 解決はトランスポートとして UDP のみを使用して実行されていました。UDP によって伝送されるメッセージは 512 バイトに制限されています。これより長いメッセージは切り捨てられ、トラフィック クラス(TC)ビットがヘッダーに設定されます。UDP DNS 応答メッセージの最大長は 512 バイトですが、TCP DNS 応答メッセージの最大長は 65,535 バイトです。DNS リゾルバーは、ヘッダーに TC ビットが設定されている場合、応答が完了したかどうかを認識します。したがって、TCP DNS 応答は、UDP DNS 応答よりも多くの情報を伝送できます。
DNS 解決の動作には、次の 3 種類があります。
UDP DNS解決
TCP DNS解決
UDP/TCP DNS 解決
ポリシーは、UDP/TCP DNS 解決を使用して IP アドレスを解決します。UDP/TCP DNS 解決では、UDP DNS 解決が最初に使用され、切り捨てられると TCP DNS 解決が使用されます。
ルーティングエンジンポリシーは、PFEに送信できる最大1024のIPv4アドレスプレフィックスと256のIPv6アドレスプレフィックスをサポートします。IPv4 または IPv6 アドレス プレフィックスの最大数が制限を超えた場合、制限を超えるアドレスは PFE に送信されず、syslog メッセージが生成されます。TCP DNS 応答のアドレスの最大数は、IPv4 アドレスの場合は 4094、IPv6 アドレスの場合は 2340 ですが、PFE にロードされるのは 1024 個の IPv4 アドレスと 256 個の IPv6 アドレスのみです。
SYN フラグと FIN フラグが設定された TCP ヘッダーについて
通常、SYN と FIN の両方の制御フラグは、同じ TCP セグメント ヘッダーに設定されません。SYN フラグは、シーケンス番号を同期して TCP 接続を開始します。FIN フラグは、TCP 接続を終了するためのデータ転送の終了を示します。それらの目的は相互に排他的です。SYNフラグとFINフラグが設定されたTCPヘッダーは、異常なTCP動作であり、OSによって受信者からさまざまな応答が発生します。 図1を参照してください。

攻撃者は、両方のフラグが設定されたセグメントを送信して、返されるシステム応答の種類を確認し、受信側にあるOSの種類を判断できます。その後、攻撃者は既知のシステムの脆弱性を使用して、さらに攻撃を行うことができます。
この画面オプションを有効にすると、Junos OSは、TCPヘッダーにSYNフラグとFINフラグが設定されているかどうかを確認します。そのようなヘッダーを検出すると、パケットをドロップします。
Junos OSは、IPv4とIPv6の両方のトラフィックに対して、SYNおよびFINフラグセット保護を備えたTCPヘッダーをサポートしています。
例:SYN および FIN フラグが設定されたパケットのブロック
この例では、SYN フラグと FIN フラグが設定されたパケットをブロックする画面を作成する方法を示します。
要件
開始する前に、SYN フラグと FIN フラグを持つ TCP ヘッダーのしくみを理解してください。 SYNおよびFINフラグが設定されたTCPヘッダーについてを参照してください。
概要
SYN フラグと FIN フラグが設定された TCP ヘッダーは、実行している OS に応じて、ターゲット デバイスからの応答が異なります。セキュリティ ゾーンで syn-fin 画面が有効になります。
この例では、セキュリティ ゾーンに screen-1 という画面を作成し、SYN フラグと FIN フラグが設定されたパケットをブロックします。
トポロジ
構成
手順
手順
SYN フラグと FIN フラグの両方が設定されたパケットをブロックするには:
画面を設定します。
[edit] user@host# set security screen ids-option screen-1 tcp syn-fin
セキュリティゾーンで画面を有効にします。
[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
FIN フラグが設定されている TCP ヘッダーと ACK フラグが設定されていない TCP ヘッダーについて
図 2 は、(セッションの終了を通知し、接続を終了するために) FIN 制御フラグが設定された TCP セグメントを示しています。通常、FIN フラグが設定された TCP セグメントには、(受信した前のパケットを確認するために) ACK フラグも設定されます。FIN フラグが設定され、ACK フラグが設定されていない TCP ヘッダーは異常な TCP 動作であるため、これに対する統一された応答はありません。OS は、RST フラグが設定された TCP セグメントを送信することで応答する場合があります。別の人はそれを完全に無視するかもしれません。被害者の応答は、攻撃者にそのOSに関する手がかりを提供することができます(FINフラグが設定されたTCPセグメントを送信する他の目的は、アドレスとポートのスキャンを実行している間の検出を回避することと、代わりにFINフラッドを実行することによってSYNフラッドに対する防御を回避することです)。
ベンダーは、TCP/IP実装を設計する際に、RFC 793伝送 制御プロトコルをさまざまに解釈してきました。TCP セグメントが FIN フラグが設定されているが ACK フラグが設定されていない状態で到着した場合、RST セグメントを送信する実装もあれば、RST を送信せずにパケットをドロップする実装もあります。

この画面オプションを有効にすると、Junos OSはFINフラグが設定されているかどうかをチェックしますが、TCPヘッダーのACKフラグは設定しません。このようなヘッダーを持つパケットを検出すると、そのパケットをドロップします。
Junos OSは、IPv4とIPv6の両方のトラフィックに対して、SYNおよびFINフラグセット保護を備えたTCPヘッダーをサポートしています。
例:FIN フラグが設定されているパケットと ACK フラグが設定されていないパケットのブロック
この例では、FIN フラグは設定されているが ACK フラグが設定されていないパケットをブロックする画面を作成する方法を示します。
要件
始める前に、TCPヘッダーがどのように機能するかを理解してください。 FINフラグが設定されているTCPヘッダーとACKフラグが設定されていないTCPヘッダーについてを参照してください。
概要
FIN フラグが設定された TCP セグメントには、受信した前回のパケットを確認するための ACK フラグも設定されています。FIN フラグが設定されていても ACK フラグが設定されていない TCP ヘッダーは異常な TCP 動作であるため、これに対する統一された応答はありません。fin-no-ack スクリーンオプションを有効にすると、Junos OS は TCP ヘッダーで FIN フラグが設定されているかどうかをチェックしますが、ACK フラグは設定しません。このようなヘッダーを持つパケットを検出すると、そのパケットをドロップします。
この例では、screen-1 という画面を作成して、FIN フラグは設定されているが ACK フラグが設定されていないパケットをブロックします。
構成
手順
手順
FIN フラグが設定されていて、ACK フラグが設定されていないパケットをブロックするには:
画面を設定します。
[edit ] user@host# set security screen ids-option screen-1 tcp fin-no-ack
デバイスの設定が完了したら、設定をコミットします。
[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
フラグが設定されていない TCP ヘッダーについて
通常の TCP セグメント ヘッダーには、少なくとも 1 つのフラグ コントロール セットがあります。制御フラグが設定されていない TCP セグメントは異常イベントです。オペレーティングシステムが異なれば、このような異常に対する応答も異なるため、ターゲットデバイスからの応答(または応答の欠如)は、実行しているOSの種類に関する手がかりを提供できます。 図3を参照してください。

フラグが設定されていない状態でデバイスがTCPセグメントヘッダーを検出できるようにすると、デバイスはフラグフィールドがないか形式が正しくないすべてのTCPパケットをドロップします。
Junos OSは、IPv4とIPv6の両方のトラフィックに対してフラグセット保護のないTCPヘッダーをサポートしています。
例:フラグが設定されていないパケットのブロック
この例では、フラグが設定されていないパケットをブロックする画面を作成する方法を示しています。
要件
開始する前に、フラグが設定されていないTCPヘッダーがどのように機能するかを理解してください。 フラグが設定されていない TCP ヘッダーについてを参照してください。
概要
通常の TCP セグメント ヘッダーには、少なくとも 1 つのフラグ コントロール セットがあります。制御フラグが設定されていない TCP セグメントは異常イベントです。オペレーティングシステムが異なれば、このような異常に対する応答も異なるため、ターゲットデバイスからの応答(または応答の欠如)は、実行しているOSの種類に関する手がかりを提供できます。
フラグが設定されていない状態でデバイスがTCPセグメントヘッダーを検出できるようにすると、デバイスはフラグフィールドがないか形式が正しくないすべてのTCPパケットをドロップします。
この例では、screen-1 という画面を作成して、フラグが設定されていないパケットをブロックします。
構成
手順
手順
フラグが設定されていないパケットをブロックするには:
画面を設定します。
[edit ] user@host# set security screen ids-option screen-1 tcp tcp-no-flag
セキュリティゾーンで画面を有効にします。
[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