Citrix ADC

DNS ログを構成する

Citrix ADCアプライアンスは、処理するDNS要求と応答を記録するように構成できます。アプライアンスは、DNS 要求と応答を SYSLOG 形式で記録します。DNS 要求または DNS 応答、またはその両方をログに記録し、syslog メッセージをリモートログサーバに送信できます。ログメッセージは、次の目的で使用できます。

  • クライアントに対する DNS 応答を監査します。
  • DNS クライアントを監査する
  • DNS 攻撃の検出と防止
  • トラブルシューティング

Citrix ADCアプライアンスは、構成に基づいて、DNS要求または応答の次のセクションを記録できます。

  • ヘッダーセクション
  • 質問セクション
  • 回答セクション
  • 権限セクション
  • 追加セクション

DNS プロファイル

DNS プロファイルを使用して、DNS エンドポイントを DNS トラフィックに適用するさまざまな DNS パラメータを設定できます。プロファイルでは、ロギング、キャッシュ、およびネガティブキャッシュを有効にできます。

重要:NetScaler 11.0リリースから、グローバルDNSパラメーターを使用したDNSキャッシュの有効化は廃止されました。DNS プロファイルを使用して DNS キャッシュを有効または無効にできます。DNS プロファイルで DNS キャッシュを有効にし、DNS プロファイルを個々の仮想サーバーに設定することで、個々の仮想サーバーの DNS キャッシュを有効にできるようになりました。

DNS プロファイルは、次のタイプの DNS ロギングをサポートします。

  • DNS クエリロギング
  • DNS 応答セクションのロギング
  • DNS 拡張ロギング
  • DNS エラーロギング

DNS クエリロギング

Citrix ADCアプライアンスは、アプライアンスのDNSエンドポイントによって受信されたDNSクエリのみをログに記録するように構成できます。

:クエリの処理中にエラーが発生した場合、DNS プロファイルでこのオプションを設定すると、エラーがログに記録されます。

次に、クエリログメッセージの例を示します。

DNS DNS_QUERY 143 0 : U:10.102.27.70#61297:10.102.27.73#53/22142/Q/ (RD)/NO/1/0/0/0#test.com./1# 

DNS 応答セクションのロギング

Citrix ADCアプライアンスは、アプライアンスがクライアントに送信するDNS応答のすべての回答セクションを記録するように構成できます。DNS応答セクションのログは、Citrix ADCがDNSリゾルバーとして構成されている場合、またはGLSBのユースケースで役立ちます。

次に、DNS 応答セクションログの例を示します。

DNS DNS_RESPONSE 6678 0 : U:100.100.100.210#32776:100.100.100.10# 53/61373/Q/(RD,AA,RA,R)/NO/1/1/2/4#n1.citrix.com1./ 28#ANS#AAAA/120/1111:2345:6789:ffab:abcd:effa:1234:3212## 

DNS 拡張ロギング

DNS応答の権限セクションと追加セクションをログに記録するようにCitrixADCアプライアンスを構成するには、応答セクションログを使用して拡張ログを有効にします。

:クエリまたは応答の処理中にエラーが発生した場合、DNS プロファイルでこのオプションが設定されていれば、エラーがログに記録されます。

次に、キャッシュルックアップが完了し、応答がパケットに埋め込まれたときにログに記録されるメッセージの例を示します。

DNS DNS_RESPONSE 2252 0 : T:100.100.100.118#21411:100.100.100.10 #53/48537/Q/(RD,AA,CD,RA,R)/NO/1/1/2/6#a1.citrix.com1./1#ANS#A/ 120/1.1.1.1##AUTH#citrix.com1/NS/120/n2.citrix.com1#n1.citrix.com1##ADD#n1.citrix.com1 /A/120/1.1.1.1#1.1.1.2##n1.citrix.com1/AAAA/120/ 1111:2345:6789:ffab:abcd:effa:1234:3212##n2.citrix.com1/A/120/2.1.1.2 ##n2.citrix.com1/AAAA/120/2222:faff:3212:8976:123:1241:64:ff9b##OPT/0/1280/DO## 

DNS エラーロギング

Citrix ADCアプライアンスは、DNSクエリまたは応答を処理するときに発生するエラーまたは障害をログに記録するように構成できます。これらのエラーの場合、アプライアンスは DNS ヘッダー、質問セクション、および OPT レコードを記録します。

次に、DNS 要求または応答の処理中にエラーが発生したときに記録されるメッセージの例を示します。

DNS DNS_ERROR 149 0 : U:10.102.27.70#27832:10.102.27.73#53/61153/Q/ (RD)/NO/1/0/0/0#test.com./1140#Packet Dropped 

ポリシーベースのロギング

DNSポリシーのLogAction,書き換え,またはレスポンダーポリシーを構成することにより,DNS 式に基づいてカスタムログを構成できます。特定の DNS ポリシーが true と評価された場合にのみロギングが行われるように指定できます。詳細については、「DNS のポリシーベースのログを構成する」を参照してください。

Citrix ADC Syslog ログメッセージの形式を理解する

Citrix ADCアプライアンスは、次のSyslog形式でDNS要求と応答を記録します。

 :#:# :  /opcode/header flags/rcode/question section count/answer section count / auth section count / additional section count # /#... 
  • \ :
    • T = TCP
    • U = UDP
  • \ #\: DNS < client ephemeral port\ > クライアントの IP アドレスとポート番号

  • \ #\: Citrix ADC DNSエンドポイントのIPアドレスとポート番号

  • \: クエリ ID

  • \: オペレーションコード。サポートされる値:

    • Q: クエリ
    • I: 逆クエリ
    • S: ステータス
    • X0: 割り当てられていない
    • N: 通知する
    • U: 更新
    • X1-10: 割り当てられていない値
  • \:

    フラグ。サポートされる値:

    • RD: 再帰が望ましい
    • TC: 切り捨てられた
    • AA: 権威ある応答
    • CD: チェック無効
    • AD: 認証済みデータ
    • Z: 未割り当て
    • RA: 再帰が利用可能
    • R: 応答
  • \: レスポンスコード。サポートされる値:

    • いいえ:エラーなし
    • F フォーマットエラー
    • S: サーバー障害
    • NX: 存在しないドメイン
    • NI: 実装されていません
    • R: クエリが拒否されました
    • YX: 名前が存在してはならないときに存在する
    • YXR: RR セットが存在してはならないときに存在する
    • NXR: 存在しなければならないRRセットは存在しない
    • NAS: サーバーはゾーンに対して権限がありません
    • NA: 承認されていません
    • NZ: ゾーンに名前が含まれていません
    • X1-5: 割り当てられていない
  • /question セクション数/回答セクション数/認証セクション数/追加セクション数:DNSリクエストの質問セクション、権限セクション数、および追加セクション数

  • \/\: DNS 要求でクエリされたドメインとクエリされたタイプ

  • #ANS #\/\/..#AUTH #\/\/\ ..#ADD #\/\/\ …:

    DNS 応答では、次のようになります。

    応答セクションは、DNS プロファイルで応答セクションのログが有効になっている場合に記録されます。DNS プロファイルで拡張ロギングが有効になっている場合、[権限] セクションと [追加] セクションがログに記録されます。ログ形式は、レコードのタイプによって異なります。詳細については、「レコードログ形式について」を参照してください。

    • ANS: 回答セクション
    • AUTH: 権限
    • 追加:追加セクション
  • OPT/\/UDP最大ペイロードサイズ/DO:DNSログのOPTレコード形式

  • OPT/\/\/\/\/ECS/\/\<オプションの長さ\>/\<ファミリー\>/\<ソースプレフィクスの長さ\>/\<スコーププレフィクスの長さ\>/\:

    DNS クエリまたは応答に EDNS クライアントサブネット (ECS) オプションが含まれている場合、それも DNS ログファイルに OPT レコード形式で記録されます。

    IPv4 または IPv6 アドレスのいずれかを含む ECS オプションを含む DNS クエリが送信されると、ECS オプションは次のいずれかのオプションでログに記録されます。

    • 「ECS/Q」は、ログ内の値がクエリからのものであることを示す
    • 「ECS/R」は、ログ内の値が応答からのものであることを示します。

    スコーププレフィクス-長さの値も適切に設定されます。DNS クエリではゼロに設定され、応答の場合は計算値に設定されます。

    次の表では、さまざまなシナリオでログに記録される詳細について説明します。

シナリオ DNS クエリの ECS オプションセット DNS レスポンスの ECS オプションセット 記録された詳細
クエリロギングと拡張ロギングの両方が有効 はい はい ECS オプションは文字列「ECS/R/」でログに記録され、スコーププレフィックス-長さは計算された値に設定されます。
クエリロギングと拡張ロギングの両方が有効 はい いいえ ECS オプションは文字列「ECS/Q」でログに記録され、スコーププレフィクス-長さはゼロに設定されます。
クエリロギングは有効ですが、拡張ロギングは有効になりません はい はい ECS オプションは文字列「ECS/Q/」でログに記録され、スコーププレフィクス-長さはゼロに設定されます。
クエリロギングと拡張ロギングが有効になっていない はい はい ECS オプションはログに記録されません。
クエリロギングは有効ですが、拡張ロギングは有効になりません はい いいえ ECS オプションは文字列「ECS/Q/」でログに記録され、スコーププレフィクス-長さはゼロに設定されます。
クエリロギングは有効ではありませんが、拡張ロギングは有効になっています はい はい ECS オプションは文字列「ECS/R/」でログに記録され、スコーププレフィックス-長さは計算された値に設定されます。
クエリロギングは有効ではありませんが、拡張ロギングは有効になっています はい いいえ ECS オプションはログに記録されません。

レコードロギング形式を理解する

次に、Syslog メッセージのレコードロギング形式の例を示します。

//  / ##......## 

各項目の意味は次のとおりです:

レコードタイプ サンプルフォーマット リソースレコードデータ/フォーマット
住所 (A) レコード A/5/1.1.1.1#1.1.1.2#1.1.1.3## IPv4アドレス
AAAAレコード AAAA/5/1::1#1::2#1::3## IPv6 アドレス
SOAレコード SOA/3600/ns1.dnslogging.test./root.dnslogging.test./100/3600/3/3600/5## オリジンサーバー、連絡先、およびその他の詳細。リソースレコードの形式: //////##
NSレコード NS/5/ns1.dnslogging.test ネームサーバーのホスト名。
MXレコード #MX/5/10/host1.dnslogging.test.#11/host2.dnslogging.test.## 優先順位の後にメール交換サーバーのホスト名が続く
CNAME レコードロギング CNAME/5/host1.dnslogging.test.## 標準名
SRVレコード SRV/5/1/2/3/host1.dnslogging.test.#4/5/6/host2.dnslogging.test.## リソースレコードの形式:///#
TXTレコード TXT/5/dns+logging## データはすべてのテキストで構成されます。
NAPTRレコード NAPTR/5/10/11////dnslogging#20/21/R/SIP//sip.dnslogging.test## リソースレコードの形式: /////#
DNSKEYレコード DNSKEY/5/1/3/5/AwEAAanP0K+i5bfv5SU478L760EjDjnPqI2Ccx6JZgiDBZhSONP29GfO2bkP056xp7+9Wz8X2oo5sANaDwSzUVR0YtZdPw23gAaktH6pFvnwcIHa/PTFw5VcXyiUaDc+AnaOhNNYOPp7iQ6uTdT9cyuGWJ1OfZ0JRt+8EyX6iwRsLk7WSpz8KidvKs2ij9IXZ3OzaVEEMGY4SMfHIlLhqIho1fyADlbAoSsLEbr/7eqKv1/PLXSuVV9elwkH0pqWALUaSEBbmp49/jbCbc8cZKxzaON9p2jp2j4iodfC8cnEHAS2/4W1FEPpRTyYtcdBq6Uc2orBaaxjhsZELvRcWMr+pDc=#1/3/5/AwEAAbJhKdI21LP0pPxv0k1pFBNClZW97TB4FlCW4e4Fuyq7rY7+aiYdDVxV8N9ZXt4RT3MdNznMVMl/R1ldWLjbCf5bFu9khaM1ME8I25HPTS3J2wK5rjj4HMFRMycUKZCK0UOgyUzd6Fm5b3G04wMIAoqkDHeqlwe7yWGaw94NbZuL## リソースレコードの形式:///#
PTRレコード PTR/3600/test.com.#test4.com.## ドメイン名

DNS ロギングの制限

DNS ロギングには次の制限があります。

  • 応答ログが有効になっている場合、次のレコードタイプのみがログに記録されます。

    • 住所 (A) レコード
    • AAAAレコード
    • SOAレコード
    • NSレコード
    • MXレコード
    • CNAMEレコード
    • SRVレコード
    • TXTレコード
    • NAPTRレコード
    • DNSKEYレコード
    • PTRレコード

    他のすべてのレコードタイプでは、L3/L4 パラメータ、DNS ヘッダー、および質問セクションのみがログに記録されます。

  • 応答ログが有効になっていても、RRSIG レコードはログに記録されません。

  • DNS64 はサポートされていません。

  • DNS プロアクティブ更新要求または応答は、デフォルトプロファイルの設定に従ってログに記録されます。

  • 仮想サーバでは、セッションレスオプションと応答のロギングが有効になっている場合、応答の代わりに L3/L4 パラメータ、DNS ヘッダー、および DNS 質問セクションがログに記録されます。

  • syslog メッセージの最大サイズは 1024 バイトです。

  • アクションタイプが応答の書き換えのDNSポリシーのDNSプロファイルを設定した場合、Citrix ADCアプライアンスはクエリまたは操作された応答をログに記録しません。必要な情報をログに記録するには、DNS ポリシーで監査メッセージアクションを使用する必要があります。

  • DNS モニタリングトラフィックが原因の DNS トランザクションはログに記録されません。

DNS ロギングの設定

DNS ロギングの設定の概要を以下に示します。

  1. Syslog アクションを作成し、そのアクションで DNS を有効にします。
  2. Syslog ポリシーを作成し、ポリシーで Syslog アクションを指定します。
  3. Syslogポリシーをグローバルにバインドして、すべてのCitrix ADCシステムイベントのログ記録を有効にします。または、Syslog ポリシーを特定の負荷分散仮想サーバーにバインドします。
  4. DNS プロファイルを作成し、有効にする次のタイプのロギングのいずれかを定義します。
    • DNS クエリロギング
    • DNS 応答セクションのロギング
    • DNS 拡張ロギング
    • DNS エラーロギング
  5. 要件に基づいて、次のいずれかを設定します。
    • DNS サービスと DNS 用の仮想サーバー
    • ADNSサービス
    • フォワーダーとしてのCitrix ADC
    • リゾルバーとしてのCitrix ADC
  6. 作成した DNS プロファイルを DNS エンティティの 1 つに設定します。

CLIを使用して、DNSプロキシとして構成されたCitrix ADC DNSログを構成する

  1. syslog アクションを追加し、アクションで DNS を有効にします。コマンドプロンプトで入力します。

    添加审计syslogAction <名称> (< serverIP > | -lbVserverName ) [-serverPort ] -logLevel  ... [-dateFormat ] [-logFacility ] [-tcp ( NONE | ALL )] [-acl ( ENABLED | DISABLED )] [-timeZone ( GMT_TIME | LOCAL_TIME )] [-userDefinedAuditlog ( YES | NO )] [-appflowExport ( ENABLED |DISABLED )] [-lsn ( ENABLED | DISABLED )] [-alg ( ENABLED | DISABLED )] [-transport ( TCP | UDP )] [-tcpProfileName ] [-maxLogDataSizeToHold ] [-dns ( ENABLED | DISABLED)] 

    :

    add audit syslogAction nssyslogact1 10.102.151.136 -logLevel CRITICAL ERROR WARNING NOTICE INFORMATIONAL DEBUG -logFacility LOCAL4 -timeZone LOCAL_TIME -dns ENABLED

  2. syslogポリシーを作成し、作成した syslog アクションをポリシーで指定します。コマンドプロンプトで入力します。

    add audit syslogPolicy

    :

    add audit syslogPolicy syslogpol1 ns_true nssyslogact1

  3. syslogポリシーをグローバルにバインドします。コマンドプロンプトで入力します。

    bind system global [ [-priority ]]

    :

    bind system global syslogpol1

  4. DNS プロファイルを作成し、設定する次のタイプのログのいずれかを有効にします。

    • DNS クエリロギング
    • DNS 応答セクションのロギング
    • DNS 拡張ロギング
    • DNS エラーロギング

    コマンドプロンプトで入力します。

    add dns profile [-dnsQueryLogging ( ENABLED | DISABLED )] [-dnsAnswerSecLogging ( ENABLED | DISABLED )] [-dnsExtendedLogging (ENABLED | DISABLED )] [-dnsErrorLogging ( ENABLED | DISABLED )] [-cacheRecords ( ENABLED | DISABLED )] [-cacheNegativeResponses ( ENABLED | DISABLED )]

    :

    add dns profile dnsprofile1 -dnsQueryLogging ENABLED

  5. DNS タイプのサービスを設定します。コマンドプロンプトで入力します。

    add service

    :

    add service svc1 10.102.84.140 dns 53

  6. サービスタイプが DNS の負荷分散仮想サーバーを構成します。

    add lb vserver

    :

    add lb vserver lb1 dns 100.100.100.10 53

  7. サービスを仮想サーバーにバインドします。コマンドプロンプトで入力します。

    bind lb vserver

    :

    bind lb vserver lb1 svc1

  8. 作成した DNS プロファイルを仮想サーバーに設定します。コマンドプロンプトで入力します。

    set lb vserver [ - dnsProfileName ]

    :

    set lb vserver lb1 –dnsProfileName dnsprofile1

DNSプロキシとして構成されたCitrix ADCアプライアンスのDNSログ構成の例

> add audit syslogAction nssyslogact1 10.102.151.136 -logLevel CRITICAL ERROR WARNING NOTICE INFORMATIONAL DEBUG -logFacility LOCAL4 -timeZone LOCAL_TIME -dns ENABLED Done > add audit syslogPolicy syslogpol1 ns_true nssyslogact1 Done > bind system global syslogpol1 Done > add dns profile dnsprofile1 -dnsqueryLogging ENABLED Done > add lb vserver lb1 dns 100.100.100.10 53 –dnsProfileName dnsprofile1 Done > add service svc1 10.102.84.140 dns 53 Done > bind lb vserver lb1 svc1 Done 

ADNSとして構成されたCitrix ADCアプライアンスのDNSログ構成の例

> add audit syslogAction nssyslogact1 10.102.151.136 -logLevel CRITICAL ERROR WARNING NOTICE INFORMATIONAL DEBUG -logFacility LOCAL4 -timeZone LOCAL_TIME -dns ENABLED Done > add audit syslogPolicy syslogpol1 ns_true nssyslogact1 Done > bind system global syslogpol1 Done > add dns profile dnsprofile1 -dnsqueryLogging ENABLED Done > add lb vserver lb1 dns 100.100.100.10 53 –dnsProfileName dnsprofile1 Done > add service svc1 10.102.84.140 dns 53 Done > bind lb vserver lb1 svc1 Done 

フォワーダーとして構成されたCitrix ADCアプライアンスのDNSログ構成の例

> add audit syslogAction nssyslogact1 10.102.151.136 -logLevel CRITICAL ERROR WARNING NOTICE INFORMATIONAL DEBUG -logFacility LOCAL4 -timeZone LOCAL_TIME -dns ENABLED Done > add audit syslogPolicy syslogpol1 ns_true nssyslogact1 Done > bind system global syslogpol1 Done > add dns profile dnsprofile1 -dnsqueryLogging ENABLED Done > add dns nameserver 8.8.8.8 –dnsProfileName dnsprofile1 Done 

リゾルバーとして構成されたCitrix ADCアプライアンスのDNSロギング構成の例

> add audit syslogAction nssyslogact1 10.102.151.136 -logLevel CRITICAL ERROR WARNING NOTICE INFORMATIONAL DEBUG -logFacility LOCAL4 -timeZone LOCAL_TIME -dns ENABLED Done > add audit syslogPolicy syslogpol1 ns_true nssyslogact1 Done > bind system global syslogpol1 Done > add dns profile dnsprofile1 -dnsqueryLogging ENABLED Done > set dns parameter -recursion enABLED Done > add nameserver 1.1.1.100 -local dnsProfileName dnsprofile1 Done 

DNS のポリシーベースのロギングを構成する

ポリシーベースのロギングでは、ログメッセージの形式を指定できます。ログメッセージの内容は、高度なポリシー式を使用して定義されます。ポリシーで指定されたメッセージアクションが実行されると、Citrix ADCアプライアンスは式からログメッセージを作成し、メッセージをログファイルに書き込みます。特定の DNS ポリシーが True と評価された場合にのみログを記録するようにアプライアンスを設定できます。

要求側のDNSプロファイルを使用してDNSポリシーを設定した場合、Citrix ADCアプライアンスはクエリのみをログに記録します。

DNS ポリシーのポリシーベースのロギングを設定するには、まず監査メッセージアクションを設定する必要があります。監査メッセージアクションの構成の詳細については、「監査ログ用のNetScaler アプライアンスの構成」を参照してください。監査メッセージアクションを設定したら、DNS ポリシーでメッセージアクションを指定します。

CLI を使用して DNS ポリシーのポリシーベースのロギングを設定する

コマンドプロンプトで次のコマンドを入力して、DNS ポリシーのポリシーベースのロギングを構成し、構成を確認します。

- add dns action   [-IPAddress  ... | -viewName  | -preferredLocList  ...] [-TTL ] [-dnsProfileName ] - set dns policy  [] [-actionName ] [-logAction ] - show dns policy [] 

例1:

GSLB 展開では、一般的な目的で使用される IP アドレス (内部ユーザーの IP アドレスなど) で応答するのではなく、特定のサブネットからのクライアント要求に異なる IP アドレスで応答する場合は、アクションタイプを DNS ビューとして DNS ポリシーを構成できます。この場合、特定の応答をログに記録できるように、指定された DNS アクションで DNS ロギングを構成できます。

> add dns profile dns_prof1 -dnsqueryLogging enABLED -dnsanswerSecLogging enABLED Done > add dns view dns_view1 Done > add dns action dns_act1 viewName -view dns_view1 –dnsprofilename dns_prof1 Done > add dns policy dns_pol1 "CLIENT.IP.SRC.APPLY_MASK(255.255.255.0).EQ(100.100.100.0)” dns_act1 Done > bind dns global dns_pol1 100 -gotoPriorityExpression END -type REQ_DEFAULT Done > bind gslb service site_1_svc -viewName dns_view1 123.1.1.1 Done > bind gslb service site_5_svc -view dns_view1 132.1.1.1 Done 

注:前述の設定では、GSLB 仮想サーバー (sampletest.comなど) で構成されたドメインを照会すると、サブネット 100.100.100.0/24 のすべての内部ユーザーに DNS ビュー IP アドレスが提供され、応答がログに記録されます。他のサブネットに対するクライアント要求はログに記録されません。

例2:

ドメインexample.comのクエリのみをログに記録する場合は、クエリロギングを有効にして DNS プロファイルを作成し、DNS プロファイルをアクションタイプがNOOPの DNS アクションに設定してから、DNS ポリシーを作成し、DNS アクションを設定します。例:

>add dns profile query_logging -dnsqueryLogging ENABLED Done >add dns action dns_act1 NOOP -dnsprofileName query_logging Done >add dns policy dns_pol1 DNS.REQ.QUESTION.DOMAIN.EQ("example.com") dns_act1 Done 

DNS ポリシーのログアクションを構成して、クライアント IP アドレスを記録する

ロギングアクションは、次の式を使用して DNS クエリの送信元 IP をログに記録し、DNS ポリシーのログアクションの一部として使用するために使用できます。

> add audit messageaction log_act_custom INFORMATIONAL ""ClientIP:"CLIENT.IP.SRC" ECS IP:"+((DNS.REQ.OPT.ECS.IP).typecast_text_t ALT "NONE")" Done 

前述の式では、IP ヘッダー内のソース IP と DNS ECS オプションの ECS IP の両方がキャプチャされ、いずれも必要に応じて除外できます。

Citrix ADCアプライアンスがクライアントIPアドレスを記録するためのDNSログ構成の例

DNS クエリのロギングをサンプリングする場合は、次の式を使用して実行できます。これにより、10 個のクエリのうち 1 つがログに記録されます。

> add audit messageaction log_action_srcip_1of10 INFORMATIONAL ""OneOf10: Source IP : "+client.ip.src" Done > add responder policy logsrcip_1of10 "sys.random.mul(10).lt(1)" NOOP -logAction log_action_srcip_1of10 Done