内容

概要

背景説明

ワークフローのトラブルシューティング

ステップ 1：ダイナミックフィルタデータベースの確認

ステップ 2：DNSトラフィックがこのASAを通過することを確認する

ステップ 3：DNSスヌープキャッシュの確認

ステップ 4：トラフィックによるボットネットトラフィックフィルタのテスト

概要

このドキュメントでは、適応型セキュリティアプライアンス(ASA)のボットネットトラフィックフィルタ機能をトラブルシューティングする手順について説明します。 ボットネットトラフィックフィルタの設定については、次の設定ガイドを参照してください：ボットネットトラフィックフィルタの設定。

背景説明

ボットネット トラフィック フィルタは、内部 DNS クライアントと外部 DNS サーバとの間で行われるドメイン ネーム サーバ（DNS）のリクエストと応答をモニタします。DNS 応答が処理されると、その応答に関連するドメインが、既知の悪意のあるドメインのデータベースと照合されます。一致が見つかると、その DNS 応答の IP アドレスへのトラフィックは、それ以降ブロックされます。次の図を参照してください。

1. ダイナミックフィルタデータベースを確認します。ASAは、既知の悪意のあるドメインとIPアドレスの現在のデータベースを定期的にダウンロードします。シスコのSecurity Intelligence Operations(SIO)は、このデータベースのドメインとIPアドレスがマルウェアやその他の悪意のあるコンテンツにサービスを提供することを決定します。

2. DNSトラフィックがASAを通過することを確認します。内部ネットワーク上のユーザまたは内部ネットワーク上の感染したマシンが、マルウェアをダウンロードしたりボットネットに参加したりするために、悪意のあるサーバへのアクセスを試みます。悪意のあるサーバに接続するには、ホストマシンがDNSルックアップを実行する必要があります。この例では、マシンはbadsite.cisco.comへのアクセスを試みます。ホストマシンは、DNS要求をローカルDNSサーバに送信するか、または外部DNSサーバに直接送信します。どちらの場合も、DNS要求はASAを通過する必要があり、DNS応答も同じASAを通過する必要があります。

3. DNSスヌープキャッシュを確認します。DNSインスペクションのDNS-snoop機能が有効になっている場合、DNSトラフィックを監視し、DNS Aレコード応答がDNSサーバから返されたことを確認します。DNS-snoop関数は、A-Record応答に存在するドメインとIPアドレスを取得し、それをDNS-snoopキャッシュに追加します。ステップ1でダウンロードしたデータベースに対してドメインがチェックされ、一致が見つかりました。DNS応答はドロップされず、パススルーが許可されます。

4. トラフィックを使用してボットネットトラフィックフィルタをテストします。ステップ3で一致したため、ASAはbadsite.cisco.comに関連付けられたIPとの間のすべてのトラフィックがドロップされることを示す内部ルールを追加します。感染したコンピュータがURL badsite.cisco.comサーバにアクセスしようとすると、トラフィックがドロップされます。

ワークフローのトラブルシューティング

この機能が動作していることをトラブルシューティングおよび確認するには、次の手順を使用します。

ステップ 1：ダイナミックフィルタデータベースの確認

データベースがダウンロードされているかどうかを確認し、コマンドshow dynamic-filter dataを入力します。次の出力例をご覧ください。

# show dynamic-filter data

Dynamic Filter is using downloaded database version '1404865586'

Fetched at 21:32:02 EDT Jul 8 2014, size: 2097145

Sample contents from downloaded database:

dfgdsfgsdfg.com  bulldogftp.com  bnch.ru  52croftonparkroad.info

paketoptom.ru  lzvideo.altervista.org  avtovirag.ru  cnner.mobi

Sample meta data from downloaded database:

threat-level: very-high, category: Malware,

description: "These are sources that use various exploits to deliver adware,

spyware and other malware to victim computers.  Some of these are associated

with rogue online vendors and distributors of dialers which deceptively

call premium-rate phone numbers."  threat-level: high, category: Bot

and Threat Networks,  description: "These are rogue systems that

control infected computers.     They are either systems hosted on

threat networks or systems that are part of the botnet itself

threat-level: moderate, category: Malware,

description: "These are sources that deliver deceptive or malicious anti-spyware,

anti-malware, registry cleaning, and system cleaning software."

threat-level: low, category: Ads,

description: "These are advertising networks that deliver banner ads,

interstitials, rich media ads, pop-ups, and pop-unders for websites,

spyware and adware.  Some of these networks send ad-oriented HTML emails

and email verification services."

Total entries in Dynamic Filter database:

Dynamic data&colon; 80677 domain names , 4168 IPv4 addresses

Local data&colon; 0 domain names , 0 IPv4 addresses

Active rules in Dynamic Filter asp table:

Dynamic data&colon; 0 domain names , 4168 IPv4 addresses

Local data&colon; 0 domain names , 0 IPv4 addresses

この出力では、ASAはデータベースのフェッチが最後に成功した時刻と、このデータベースのコンテンツの例を示します。show dynamic-filter dataコマンドを実行し、データベースがダウンロードされていないことを示す場合は、最初にこの手順をトラブルシューティングします。ASAがダイナミックフィルタデータベースを取得できない一般的な問題は次のとおりです。

- ASAのDNS設定が見つからないか、正しくありません。動的フィルタ更新クライアントは、更新サーバーのホスト名を解決する必要があります。DNSはASAで設定し、機能させる必要があります。コマンドラインから既知のドメインにpingを実行し、ASAがホスト名を解決できるかどうかを確認します。

- ASAからインターネットアクセスがない。ASAがインターネットにアクセスできないネットワーク上にある場合、またはアップストリームデバイスがASAの外部IPアドレスをインターネットにアクセスできない場合、更新は失敗します。

- アップデータクライアントが有効になっていません。コマンドdynamic-filter updater-client enableは、ASAがデータベースをダウンロードできるように設定する必要があります。

debug dynamic-filter updater-clientコマンドを入力して、データベースをデバッグします。次のコマンドの出力例を参照してください。

Dynamic Filter: Updater client fetching dataDynamic Filter: update

startingDBG:01:2902417716:7fff2c33ec28:0000: Creating fiber

0x7fff2c4dce90 [ipe_request_fiber], stack(16384) =

0x7fff2c505c60..0x7fff2c509c58 (fc=2),

sys 0x7fff20906038 (FIBERS/fibers.c:fiber_create:544)

DBG:02:2902417779:7fff2c4dce90:0000: Jumpstarting ipe_request_fiber 0x7fff2c4dce90,

sys 0x7fff2c33eba0 (FIBERS/fibers-jumpstart.c:_fiber_jumpstart:36)

Dynamic Filter: Created lua machine, launching lua script

DBG:03:2902422654:7fff2c4dce90:0000: Connecting to 00000000:1591947792

(SAL/netsal.c:netsal_client_sock_connect:323)

DBG:04:2902422667:7fff2c4dce90:0000: otherPifNum 3, nexthop4 17c12ac

(SAL/netsal.c:netsal_client_sock_connect:374)

DBG:05:2902422691:7fff2c4dce90:0000: about to call netsal__safe_encapsulate for

(sal-np/ssl/CONNECT/3/208.90.58.5/443/M/0/NOTUNGW)

(SAL/netsal.c:netsal_client_sock_connect:446)

DBG:06:2902422920:7fff2c4dce90:0000: connection timeout set for 10 seconds

(SAL/netsal.c:netsal_client_sock_connect:473)

DBG:07:2902750615:7fff2c4dce90:0000: SALNPCLOSENOTIFY: p=0x0 0/0 more buffered

(SAL/channel-np.c:_sal_np_ioctl:1312)

Dynamic Filter: Processing updater server response

Dynamic Filter: update file url1 =

http://updates.ironport.com/threatcast/1.0/blacklist/2mb-1file/1404865586

Dynamic Filter: update file url2 =

http://updates.ironport.com/threatcast/1.0/blacklist/2mb-1file/1404865586

Channel NP p=0x0000000000000000 0/0 more bufferedchannel-np.cDBG:08:2902784011:

7fff2c4dce90:0000: Connecting to 00000000:538976288

(SAL/netsal.c:netsal_client_sock_connect:323)

DBG:09:2902784026:7fff2c4dce90:0000: otherPifNum 3, nexthop4 17c12ac

(SAL/netsal.c:netsal_client_sock_connect:374)

DBG:10:2902784051:7fff2c4dce90:0000: about to call netsal__safe_encapsulate for

(sal-np/tcp/CONNECT/3/208.90.58.25/80/M/0/NOTUNGW)

(SAL/netsal.c:netsal_client_sock_connect:446)

DBG:11:2902784241:7fff2c4dce90:0000: connection timeout set for 10 seconds

(SAL/netsal.c:netsal_client_sock_connect:473)

DBG:12:2902914651:7fff2c4dce90:0000: SALNPCLOSENOTIFY: p=0x0 0/0 more buffered

(SAL/channel-np.c:_sal_np_ioctl:1312)

DBG:13:2902914858:7fff2c4dce90:0000: Connecting to 00000000:25465757

(SAL/netsal.c:netsal_client_sock_connect:323)

DBG:14:2902914888:7fff2c4dce90:0000: otherPifNum 3, nexthop4 17c12ac

(SAL/netsal.c:netsal_client_sock_connect:374)

DBG:15:2902914912:7fff2c4dce90:0000: about to call netsal__safe_encapsulate for

(sal-np/tcp/CONNECT/3/208.90.58.25/80/M/0/NOTUNGW)

(SAL/netsal.c:netsal_client_sock_connect:446)

DBG:16:2902915113:7fff2c4dce90:0000: connection timeout set for 10 seconds

(SAL/netsal.c:netsal_client_sock_connect:473)

Channel NP p=0x0000000000000000 0/0 more bufferedchannel-np.cDBG:17:2907804137:

7fff2c4dce90:0000: SALNPCLOSENOTIFY: p=0x0 0/0 more buffered

(SAL/channel-np.c:_sal_np_ioctl:1312)

Dynamic Filter: Successfully downloaded the update file from url1

Dynamic Filter: Successfully finished lua script

DBG:18:2907804722:7fff2c4dce90:0000: Fiber 0x7fff2c4dce90 finished leaving 3 more

(FIBERS/fibers-jumpstart.c:_fiber_jumpstart:64)

DBG:19:2907804746:7fff2c4dce90:0000: Exiting fiber 0x7fff2c4dce90

(FIBERS/fibers.c:fiber__kill:1287)

DBG:20:2907804752:7fff2c4dce90:0000: Fiber 0x7fff2c4dce90 terminated, 2 more

(FIBERS/fibers.c:fiber__kill:1358)

Dynamic Filter: Downloaded file successfully

Channel NP p=0x0000000000000000 0/0 more bufferedchannel-np.cDynamic Filter: read

ramfs bytes 2097152

Dynamic Filter: file MD5 verification check succeeded

Dynamic Filter: decrypt key succeeded

Dynamic Filter: decrypt file succeeded byte = 2097145

Dynamic Filter: updating engine bytes = 2097145

Dynamic Filter: meta data length = 2987

INFO: Dynamic Filter: update succeeded

この出力では、アップデータが新しいデータベースを取得するときに実行される次の手順を確認できます。

- アップデータは、ダウンロードするデータベースを決定するために、URL http://update-manifests.ironport.comに到達します。

- マニフェストサーバは、ダウンロード用に2つのURLを返します。

- アップデータクライアントがデータベースをダウンロードします。

- データベースは復号化され、動的フィルタプロセスで使用するためにメモリに保存されます。

異なるアップデートサーバの接続の問題は、この出力のエラーとして明らかになり、トラブルシューティングをさらに進めます。コマンドdynamic-filter database fetchを使用して、アップデータクライアントを手動で実行します。

ステップ 2：DNSトラフィックがこのASAを通過することを確認する

ASAのボットネットトラフィックフィルタ機能は、ドメインに一致するIPアドレスで構築されるため、ASAはネットワークを通過するDNS要求および応答とインラインである必要があります。一部のトポロジでは、DNSトラフィックが対象のASAを含まないパスを通過する可能性があります。ほとんどのネットワークには、内部ユーザのDNSフォワーダおよびキャッシュとして機能する内部DNSサーバがあります。これらのサーバが、所有していないドメインまたは応答できないドメインのDNS要求を転送する場合、ASAを通過する必要があるサーバに要求を転送する場合は、問題は発生しません。内部DNSサーバの有無にかかわらず、次のトポロジを確認してください。

このトポロジ例では、外部DNSサーバに転送する内部DNSサーバをポイントするユーザを示します。

このトポロジ例は、外部DNSサーバを直接指すユーザを示しています。

両方のトポロジ例で、機能するボットネットトラフィックフィルタの導入の鍵となるのは、外部ドメインに対するDNS Aレコード要求が、DNS-snoop機能を実行するASAを通過する必要があることです。内部サーバの例では、内部DNSサーバがユーザマシンとは異なるネットワークパスを使用してインターネットに到達し、そのプロセスでASAを通過しない場合、DNS-snoopテーブルにはユーザマシンのDNS要求に起因するIP-to-domainマップはは含されません。

DNSトラフィックがASAを通過することを確認するには、次の技術を使用します。

- service-policyを確認します。show service-policyの出力を見て、DNSインスペクションが適用され、dynamic-filter-snoopキーワードで設定され、トラフィックが確認されるかどうか確認します。DNSインスペクションに関連するパケットカウントは、DNS要求を行うにつれて増加します。

- キャプチャを使用します。DNSスヌープ機能は、ASAを通過するDNSパケットを参照するため、パケットがASAに到達することを確認することが重要です。DNSトラフィックがこのASAに正しく出入りするように、ASAの組み込みキャプチャ機能を使用します。

ステップ 3：DNSスヌープキャッシュの確認

DNSスヌープキャッシュには、IPドメイン間マップを入力する必要があります。1つのIPアドレスに、無制限の数のドメインが関連付けられている場合があります。これは、Webサイトをホストする企業が、少数のIPアドレスだけで数千のドメインにサービスを提供する方法です。show dynamic-filter dns-snoop detailコマンドを入力し、現在DNS-snoopキャッシュにあるデータのダンプを確認します。これは、DNSインスペクションのDNSスヌープ機能を使用してASAが取得するすべてのIPからドメインへのマップのレコードです。次の出力例をご覧ください。

DNS Reverse Cache Summary Information: 3 addresses, 3 names

Next housekeeping scheduled at 22:28:01 EDT Jul 8 2014,

DNS reverse Cache Information:

[198.151.100.77] flags=0x1, type=0, unit=0 b:u:w=0:1:0, cookie=0x0

[cisco.com] type=0, ttl=31240

[198.151.100.91] flags=0x23, type=0, unit=0 b:u:w=1:1:0, cookie=0x0

[magnus.cisco.com] type=1, ttl=0

[raleigh.cisco.com] type=0, ttl=0

[198.151.100.1] flags=0x2, type=0, unit=0 b:u:w=1:0:0, cookie=0x0

[badsite.cisco.com] type=1, ttl=0

この例では、ASAは3つのIPアドレスに関する情報を学習しますが、4つのドメインに関する情報を学習します。magus.cisco.comとraleigh.cisco.comの両方が198.151.100.91に解決されます。この例では、ドメインの2つがmagus.cisco.comとbadsite.cisco.comリストをタイプ1としてデータベースに存在します。その他のドメインはタイプ0としてリストされます。これは、ドメインがブラックリストに登録されていない、またはホワイトリストに登録されていない通常のドメインであることを示します。

1. ユーザマシンからのDNS要求がファイアウォールを連続して通過し、DNSスヌープによって処理され、DNS要求が行われることを確認します。一致するエントリがないかキャッシュを確認します。解決するが、最近クエリーが行われず、すでにテーブルに登録されているドメインをテストして使用します。たとえば、ドメインasa.cisco.comが選択されます。コマンドラインツールnslookupを使用して、そのホスト名を照会します。例：

$ nslookup asa.cisco.com

Name: asa.cisco.com

Address: 198.151.100.64

2. DNSスヌープキャッシュを確認します。例：

DNS Reverse Cache Summary Information: 5 addresses, 7 names

Next housekeeping scheduled at 22:48:01 EDT Jul 8 2014,

DNS reverse Cache Information:

[198.151.100.64] flags=0x11, type=0, unit=0 b:u:w=0:1:0, cookie=0x0

[asa.cisco.com] type=0, ttl=86359

エントリはDNSスヌープキャッシュに存在します。nslookupテストの前にこのエントリが存在しない場合、DNS-snoop機能が動作し、ASAがDNS要求と応答で正しく動作することを意味します。

エントリが表示されない場合は、DNSトラフィックがASAを通過することを確認します。必要に応じて、ホストマシンまたは内部DNSサーバのDNSキャッシュをフラッシュして、要求がキャッシュから処理されないようにする必要がある場合があります。

DNS-snoop機能はEDNS0をサポートしていません。DNSクライアントまたはサーバがEDNS0を使用している場合、応答に追加のリソースレコードが存在する場合、ASAがDNS-snoopキャッシュにIP-to-domainマップを設定しない場合があります。この制限は、Cisco Bug ID CSCta36873で追跡されます。

ステップ 4：トラフィックによるボットネットトラフィックフィルタのテスト

ステップ3で、DNS-snoopキャッシュは、ドメインbadsite.cisco.comがブラックリストに存在することを示します。ボットネット機能をテストするために、問題のドメインにpingを実行します。ドメインにpingを実行すると、Webブラウザでドメインをロードするよりも安全です。Webブラウザを使用してダイナミックフィルタ機能をテストしないでください。ブラウザが悪意のあるコンテンツをロードすると、マシンが危険にさらされる可能性があります。Internet Control Message Protocol(ICMP)は、より安全な方法であり、IPに基づいてブロックされ、ポートまたはプロトコルに固有の何もブロックされるため、BotNetトラフィックフィルタの有効なテストであるため、使用します。

ブラックリストに載っているサイトを知らなければ、簡単に見つけられます。dynamic-filter database find <search_term>コマンドを入力して、ブラックリストに登録されているドメインを検索し、指定された検索語と一致させます。例：

ASA# dynamic-filter database find cisco verybadsite.cisco.com

m=44098 acmevirus.cisco.com m=44098Found more than 2 matches,

enter a more specific string to find an exact match

戻ってきたドメインの1つをpingします。このドメインにpingを実行すると、次のアクションが発生します。

1. ホストは、対象のドメインのDNS要求を生成します。

2. DNS要求は、ホストマシンから直接、または内部サーバによって転送されるASAを通過します。

3. DNS応答はASAを通過し、ホストマシンまたは内部サーバに戻ります。

4. DNS-snoop機能は、DNS-snoopキャッシュでこのIP-to-domainマップに入力します。

5. ASAは、ドメインとダイナミックフィルタデータベースを比較し、一致を判別します。ASAは、悪意のあるドメインに関連付けられたIPからの着信および発信トラフィックをさらにブロックします。

6. ホストマシンは、ASAが悪意のあるドメインに関連付けられたIPを宛先としているため、ASAがドロップするICMPエコー要求を送信します。

ASAがICMPテストトラフィックをドロップすると、次の例のようなシステムログ(syslog)がログに記録されます。

Jul 08 2014 23:14:17: %ASA-4-338006: Dynamic Filter dropped blacklisted

ICMP traffic from inside:192.168.1.100/23599 (203.0.113.99/23599) to

outside:198.151.100.72/0 (198.151.100.72/0), destination 198.151.100.72

resolved from dynamic list: acmevirus.cisco.com, threat-level: very-high,

category: Malware

コマンドshow dynamic-filter statisticsの出力は、分類されてドロップされる可能性のある接続を示します。例：

ASA(config)# show dynamic-filter statistics

Enabled on interface inside

Total conns classified 163, ingress 163, egress 0

Total whitelist classified 0, ingress 0, egress 0

Total greylist classified 8, dropped 0, ingress 8, egress 0

Total blacklist classified 155, dropped 154, ingress 155, egress 0

Enabled on interface outside

Total conns classified 0, ingress 0, egress 0

Total whitelist classified 0, ingress 0, egress 0

Total greylist classified 0, dropped 0, ingress 0, egress 0

Total blacklist classified 0, dropped 0, ingress 0, egress 0

Enabled on interface management

Total conns classified 0, ingress 0, egress 0

Total whitelist classified 0, ingress 0, egress 0

Total greylist classified 0, dropped 0, ingress 0, egress 0

Total blacklist classified 0, dropped 0, ingress 0, egress 0

分類されたカウンタが増加するのは、ブラックリストに登録された、ホワイトリストに登録された、またはグレイリストに登録されたIPアドレスへの接続が試行された場合だけです。他のすべてのトラフィックでは、分類されたカウンタが増加することはありません。分類されたリストの数が少なくても、ASAがBotNetトラフィックフィルタに対する新しい接続試行を評価しなかったことを意味するわけではありません。この低い数値は、送信元または宛先のIPアドレスがブラックリストに登録されているか、ホワイトリストに登録されているか、グレーリストに登録されているかを示します。このドキュメントの手順を使用して、機能が正しく動作していることを確認します。

テストトラフィックがドロップされない場合は、設定を確認して、適切な脅威レベルでトラフィックをドロップするように設定されていることを確認します。次の設定例を参照してください。ここでは、ASAでボットネットトラフィックフィルタをグローバルに有効にします。

dynamic-filter updater-client enable

dynamic-filter use-database

dynamic-filter enable

dynamic-filter drop blacklist