Citrix ADC

DNS DDoS 攻撃の軽減

DNS サーバーは、ネットワークの最も重要なコンポーネントの 1 つであり、攻撃から保護する必要があります。DNS 攻撃の最も基本的な種類の 1 つは、DDoS 攻撃です。このタイプの攻撃は増加しており、非常に破壊的な可能性があります。DDoS攻撃を軽減するには、ネガティブレコードをフラッシュし、ネガティブレコードの存続時間(TTL)を制限し、DNSキャッシュによって消費されるメモリを制限してCitrix ADCメモリを保持し、DNSレコードをキャッシュに保持し、DNSキャッシュバイパスを有効にします。DNS クエリを 1 つのパケットに制限して、Slowloris 攻撃を防ぐこともできます。

ネガティブ・レコードのフラッシュ

DNS 攻撃は、キャッシュに負のレコード (NXDOMAIN および NODATA) を埋め尽くします。その結果、正当な要求に対する応答はキャッシュされないため、新しい要求は DNS 解決のためにバックエンドサーバーに送信されます。したがって、応答が遅れます。

Citrix ADCアプライアンスのDNSキャッシュからネガティブDNSレコードをフラッシュできるようになりました。

CLI を使用したネガティブ・キャッシュ・レコードのフラッシュ

コマンドプロンプトで、次のように入力します。

flush dns proxyrecords -type (dnsRecordType | negRecType) NXDOMAIN | NODATA

例:

flush dns proxyrecords –negRecType NODATA

GUI を使用したネガティブ・キャッシュ・レコードのフラッシュ

  1. [設定] > [トラフィック管理] > [DNS] > [レコード] に移動します。
  2. 詳細ウィンドウで、[プロキシレコードのフラッシュ] をクリックします。
  3. フラッシュ・タイプ 」ボックスで、「 ネガティブ・レコード 」を選択します。
  4. [ネガティブレコードタイプ] ボックスで、[NXDOMAIN] または [NODATA] のいずれかを選択します。

ランダムなサブドメインおよび NXDOMAIN 攻撃に対する保護

ランダムなサブドメインおよび NXDOMAIN 攻撃を防ぐために、DNS キャッシュメモリを制限し、負のレコードの TTL 値を調整できます。

DNS キャッシュによって消費されるメモリ量を 制限するには 、最大キャッシュサイズ (MB 単位) と、ネガティブレスポンスを格納するためのキャッシュサイズ (MB 単位) を指定します。いずれかの制限に達すると、それ以上のエントリはキャッシュに追加されません。また、syslog メッセージが記録され、SNMP トラップが設定されている場合は SNMP トラップが生成されます。これらの制限が設定されていない場合、システムメモリを使い果たすまでキャッシュが続行されます。

負のレコードの TTL 値を大きくすると、長期間にわたって価値のないレコードが格納される可能性があります。TTL 値が低いほど、バックエンドサーバーに要求が送信されます。

負のレコードの TTL は、TTL 値または SOA レコードの「失効」値の小さい値に設定されます。

  • この制限は、パケットエンジンごとに追加されます。たとえば、maxCacheSize が 5 MB に設定され、アプライアンスに 3 つのパケットエンジンがある場合、合計キャッシュサイズは 15 MB になります。
  • 負のレコードのキャッシュサイズは、最大キャッシュサイズ以下である必要があります。
  • DNSキャッシュメモリの制限をすでにキャッシュされているデータ量よりも小さい値に減らすと、データが期限切れになる(TTL0を超えるかフラッシュされる(flush dns proxyrecords コマンドまたはCitrix ADC GUIでプロキシレコードをフラッシュする)まで、キャッシュサイズは制限を超えたままになります。
  • SNMP トラップを設定するには、SNMPトラップを生成するようにNetScaler を構成するを参照してください。

CLI を使用して DNS キャッシュによって消費されるメモリを制限する

コマンドプロンプトで、次のように入力します。

set dns parameter -maxCacheSize <MBytes> -maxNegativeCacheSize <MBytes>

例:

set dns parameter - maxCacheSize 100 -maxNegativeCacheSize 25

GUI を使用して DNS キャッシュによって消費されるメモリを制限する

[設定] > [トラフィック管理] > [DNS] に移動し、[DNS 設定の変更] をクリックして、次のパラメータを設定します。

  • 最大キャッシュサイズ(MB)
  • 負の最大キャッシュサイズ (MB)

CLI を使用してネガティブレコードの TTL を制限する

コマンドプロンプトで、次のように入力します。

set dns parameter -maxnegcacheTTL <secs>

例:

set dns parameter -maxnegcacheTTL 360

GUI を使用してネガティブレコードの TTL を制限する

  1. [設定] > [トラフィック管理] > [DNS] に移動します。
  2. [DNS 設定の変更] をクリックし、[ネガティブキャッシュの最大TTL (秒)] パラメータを設定します。

DNS レコードをキャッシュに保持する

攻撃により、DNS キャッシュに価値がないエントリがフラッディングされる可能性がありますが、すでにキャッシュされている正当なレコードをフラッシュして新しいエントリのスペースを確保する可能性があります。攻撃が無効なデータをキャッシュに埋め込むのを防ぐために、正規のレコードが TTL 値を超えた後でも保持できます。

cacheNoExpire パラメータを有効にした場合、キャッシュ内の現在のレコードは、パラメータを無効にするまで保持されます。

  • このオプションは、最大キャッシュサイズが指定されている場合にのみ使用できます (maxCacheSize パラメータ)。
  • maxnegcacheTTL が設定されていて、キャッシュNoExpire が有効になっている場合、キャッシュNoExpire が優先されます。

CLI を使用して DNS レコードをキャッシュに保存する

コマンドプロンプトで、次のように入力します。

set dns parameter -cacheNoExpire ( ENABLED | DISABLED)

例:

set dns parameter -cacheNoExpire ENABLED

GUI を使用して DNS レコードをキャッシュに保存する

  1. [設定] > [トラフィック管理] > [DNS] に移動し、[DNS 設定の変更] をクリックします。
  2. [キャッシュの有効期限なし] を選択します。

DNS キャッシュバイパスを有効にする

Citrix ADCアプライアンスに届くDNSリクエストの可視性と制御性を高めるために、cacheHitBypassパラメータを設定して、すべてのリクエストをバックエンドサーバーに転送し、キャッシュを構築して使用しないようにすることができます。キャッシュが構築されたら、パラメータを無効にして、リクエストがキャッシュから送られるようにすることができます。

CLI を使用して DNS キャッシュバイパスを有効にする

コマンドプロンプトで、次のように入力します。

set dns parameter -cacheHitBypass ( ENABLED | DISABLED )

例:

set dns parameter -cacheHitBypass ENABLED

GUI を使用して DNS キャッシュバイパスを有効にする

  1. [設定] > [トラフィック管理] > [DNS] に移動し、[DNS 設定の変更] をクリックします。
  2. [キャッシュヒットバイパス] を選択します。

スローロリスの攻撃を防ぐ

複数のパケットにまたがる DNS クエリは、Slowloris 攻撃の潜在的な脅威を示します。Citrix ADCアプライアンスは、複数のパケットに分割されたDNSクエリをサイレントにドロップできます。

クエリが複数のパケットに分割されている場合は、splitPktQueryProcessing パラメーターを DNS クエリを許可またはドロップに設定できます。

:これは DNS TCP にのみ適用されます。

CLI を使用して DNS クエリを 1 つのパケットに制限する

コマンドプロンプトで、次のように入力します。

set dns parameter -splitPktQueryProcessing ( ALLOW | DROP )

例:

set dns parameter -splitPktQueryProcessing DROP

GUI を使用して DNS クエリを 1 つのパケットに制限する

  1. [設定] > [トラフィック管理] > [DNS] に移動し、[DNS 設定の変更] をクリックします。
  2. [分割パケットクエリ処理] ボックスで、[ALLOW] または [DROP] を選択します。

キャッシュから提供される DNS 応答の統計情報を収集する

キャッシュから提供される DNS 応答の統計情報を収集し、これらの統計情報を使用して、追加の DNS トラフィックがドロップされるしきい値を作成し、帯域幅ベースのポリシーでこのしきい値を適用できます。以前は、キャッシュヒット数が報告されなかったため、DNS 負荷分散仮想サーバーの帯域幅計算は正確ではありませんでした。

プロキシモードでは、要求バイト、応答バイト、合計パケット数 rcvd、および送信パケット数の統計情報が継続的に更新されます。以前は、特に DNS 負荷分散仮想サーバーでは、これらの統計情報が常に更新されるとは限りません。

プロキシモードでは、キャッシュから提供される DNS 応答の数も決定できるようになりました。これらの統計情報を収集するために、stat lb vserver <DNSvirtualServerName> コマンドに次のオプションが追加されました。

  • 要求 — DNS または DNS_TCP 仮想サーバによって受信された要求の総数。バックエンドに転送された要求と、キャッシュから応答された要求が含まれます。
  • Vserver hits:バックエンドに転送された要求の総数。キャッシュヒットの合計数は、リクエストと仮想サーバーヒットの差です。
  • 応答 — この vserver によって送信された応答の総数。たとえば、DNS LB 仮想サーバーが 5 つの DNS 要求を受信し、そのうちの 3 つをバックエンドに転送し、キャッシュから 2 つを提供した場合、これらの統計の対応する値は次のようになります。
    • 仮想サーバーのヒット回数:3
    • リクエスト:5
    • 回答数:5