サービス拒否の攻撃とは、コンピュータまたはコンピュータ上の特定のサービスをネットワーク ユーザーが利用できないようにすることを目的とするネットワーク攻撃です。サービス拒否の攻撃は防御が困難な場合がありますが、次のいずれかまたは両方の対策を使用すると攻撃を防ぐのに役立ちます。
-
使用しているコンピュータを、常に最新のセキュリティ更新プログラムで更新された状態に保ちます。セキュリティ更新プログラムは、以下のマイクロソフト Web サイトにあります。
-
Windows 2000 ベースのワークステーションおよびサーバーで、TCP/IP (Transmission Control Protocol/Internet Protocol) プロトコル スタックを強化します。デフォルトの TCP/IP スタックの構成は、通常のイントラネット トラフィックを処理するようにチューニングされています。コンピュータを直接インターネットに接続する場合には、サービス拒否の攻撃に対する TCP/IP スタックを強化することをお勧めします。
TCP/IP スタックを強化する TCP/IP のレジストリ値
警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリ エディタの誤用により発生した問題に関しては、一切責任を負わないものとします。レジストリ エディタは、自己の責任においてご使用ください。
以下に示す TCP/IP 関連のレジストリ値は、インターネットに直接接続されたコンピュータ上で TCP/IP スタックを強化するのに使用できます。これらの値はすべて次のレジストリ キーの下にあります。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
注 : 特に明記されている場合を除き、値はすべて 16 進数です。
-
値の名前 : SynAttackProtect
キー : Tcpip\Parameters
データ型 : REG_DWORD
有効な範囲 : 0、1、2
デフォルト値 : 0
このレジストリ値によって、TCP (Transmission Control Protocol) が SYN-ACKS の再転送を調整します。この値を設定すると、SYN 攻撃 (サービス拒否攻撃の一種) が発生したときに接続応答のタイムアウトが早くなります。
以下に、このレジストリ値で使用できるパラメータについて説明します。
- 0 (デフォルト値) : SYN 攻撃に対して一般的な保護を行う場合は、SynAttackProtect 値を 0 に設定します。
- 1 : SYN 攻撃に対する保護を強化する場合は、SynAttackProtect 値を 1 に設定します。このパラメータを設定すると、TCP は SYN-ACK の再転送を調整します。SynAttackProtect 値を 1 に設定した場合、SYN 攻撃が行われていることが表示されると、接続応答のタイムアウト時間が短くなります。Windows では以下の値を使用して、攻撃が行われているかどうかを判断します。
-
TcpMaxPortsExhausted
-
TCPMaxHalfOpen
-
TCPMaxHalfOpenRetried
- 2 : SYN 攻撃に対する保護を最強にする場合は、SynAttackProtect を 2 に設定します。この値によって、接続指示がさらに遅延され、SYN 攻撃が進行中の場合には TCP 接続要求が短時間でタイムアウトします。このパラメータに設定することを推奨します。
注 : SynAttackProtect の値を 2 に設定すると、以下のソケット オプションはソケットの種類にかかわらず動作しなくなります。
-
スケーラブル ウィンドウ
-
各アダプタ上で構成された TCP パラメータ (初期 RTT およびウィンドウ サイズを含む)
-
値の名前 : EnableDeadGWDetect
キー : Tcpip\Parameters
データ型 : REG_DWORD
有効な範囲 : 0、1 (False、True)
デフォルト値 : 1 (True)
以下に、このレジストリ値で使用できるパラメータについて説明します。
- 1 : EnableDeadGWDetect 値を 1 に設定した場合、TCP は停止しているゲートウェイの検出を実行できます。停止しているゲートウェイの検出を有効にすると、多数の接続で障害が発生している場合、TCP は、IP (Internet Protocol) に対してバックアップ ゲートウェイへの切り替えを要求できます。バックアップ ゲートウェイは、コントロール パネルの [ネットワーク接続] にある [インターネット プロトコル (TCP/IP)のプロパティ] ダイアログ ボックスの [詳細設定] で定義されています。
- 0 : EnableDeadGWDetect は 0 に設定することを推奨します。この値を 0 に設定しないと、攻撃によってサーバーのゲートウェイが強制的に変更され、意図しないゲートウェイに切り替えられる可能性があります。
-
値の名前 : EnablePMTUDiscovery
キー : Tcpip\Parameters
データ型 : REG_DWORD
有効な範囲 : 0、1 (False、True)
デフォルト値 : 1 (True)
以下に、このレジストリ値で使用できるパラメータについて説明します。
- 1 : EnablePMTUDiscovery 値を 1 に設定した場合、TCP では、リモート ホストへのパス上の MTU (Maximum Transmission Unit) または最大パケット サイズのいずれかの検出を試みます。パスの MTU を検出して TCP セグメントをこのサイズに制限することによって、パス上にある、MTU の異なるネットワークを接続しているルーターで断片化が発生することを防止できます。断片化は、TCP のスループットに悪影響を及ぼします。
- 0 : EnablePMTUDiscovery 値は 0 に設定することをお勧めします。この値を 0 に設定した場合、ローカル サブネット上のホスト以外のすべての接続に対して 576 バイトの MTU が使用されます。この値を 0 に設定しない場合、攻撃者によって MTU の値が強制的に非常に小さな値に設定され、スタックに過度の負荷がかかることがあります。
重要 : EnablePMTUDiscovery 値を 0 に設定すると、TCP/IP のパフォーマンスとスループットに影響が出ます。マイクロソフトではこの設定をお勧めしますが、このパフォーマンスの損失について十分理解しない限りこの設定を使用しないようにしてください。
-
値の名前 : KeepAliveTime
キー : Tcpip\Parameters
値の種類 : REG_DWORD - 時間 (ミリ秒)
有効な範囲 : 1 〜 0xFFFFFFFF
デフォルト値 : 7,200,000 (2 時間)
この値は、TCP が keep-alive パケットを送信し、アイドル状態の接続がまだ保持されていることを確認する頻度を制御します。接続先のリモート コンピュータがまだアクセス可能な状態にあれば、keep-alive パケットが受信確認されます。keep-alive パケットは、デフォルトでは送信されません。この値は、プログラムを使用して接続上で構成することができます。推奨値は 300,000 (5 分) です。
-
値の名前 : NoNameReleaseOnDemand
キー : Netbt\Parameters
データ型 : REG_DWORD
有効な範囲 : 0、1 (False、True)
デフォルト値 : 0 (False)
この値は、コンピュータが名前解放要求を受信したときに、NetBIOS 名を解放するかどうかを決定します。この値は、管理者が、悪意のある名前解放攻撃からコンピュータを保護できるようにするために追加されました。NoNameReleaseOnDemand 値を 1 (デフォルト値) に設定することをお勧めします。
注 : NoNameReleaseOnDemand 値を使用するためには、Windows 2000 Service Pack 2 (SP2) 以降が必要です。
トラブルシューティング
TCP/IP のレジストリ値を変更すると、Windows 2000 ベースのコンピュータ上で実行されているプログラムおよびサービスに影響する場合があります。これらの設定については、運用環境にないワークステーションおよびサーバー上でテストを行い、ビジネス環境との互換性を確認することをお勧めします。
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID
315669?
(http://support.microsoft.com/kb/315669/EN-US/
)
(最終更新日 2005-07-20) を基に作成したものです。