シスコサポートコミュニティ
キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

ASA: FQDN ACL の設定例と動作確認

 

はじめに

FQDN ACLは、fully-qualified domain name(FQDN)間のアクセス制御に用いる事ができます。 URLフィルタリングの ごく簡易的な代用として利用する事も可能です。

FQDN ACLは、ASAバージョン 8.4(2)からサポートを開始しました。

本ドキュメントは、ASAバージョン 9.6(2)を用いて確認、作成しております。

  

        

FQDN ACLの仕組み

予め、ASAがDNSサーバに問い合わせ、名前解決されたIPアドレス情報をACLに反映させます。 同様のFQDNのIPアドレス宛のクライアント通信が発生時、FQDN ACLで その制御(permitの場合は通過)を行います。

    
FQDNは、ホスト名とドメイン名をつなげた文字列であり、厳密に定義する必要があります。 例えば、ドメイン「cisco.com」の、WebホストのFQDNは「www.cisco.com」です。 ドメイン「cisco.com」の、FTPホストのFQDNは「ftp.cisco.com」です。

    

    

FQDN ACLの設定方法

以下は、www.cisco.com宛の、HTTP(TCP=80)と HTTPS(TCP=443)アクセスを許可する設定例です。

まず、ASAの名前解決用に、DNSサーバ情報を設定します。

domain-name cisco.com
!
dns domain-lookup outside
dns server-group DefaultDNS
name-server xx.xx.xx.xx(=DNSサーバIP) outside
domain-name cisco.com

    
次に、FQDNオブジェクトを定義します。 以下設定例の場合、FQDN「www.cisco.com」を オブジェクト名「FQDN-www.cisco.com」として定義しています。

object network FQDN-www.cisco.com
fqdn v4 www.cisco.com

    
定義したFQDNオブジェクトを利用し、ACLを設定します。

access-list IN extended permit tcp any object FQDN-www.cisco.com eq www
access-list IN extended permit tcp any object FQDN-www.cisco.com eq https

   

     

FQDN ACLの動作確認

ASAは動的にFQDN ACLで定義されたFQDNへの名前解決を行い、解決結果を自身の DNS lookup tableに格納します。 解決状況は、show dns コマンドで確認できます。 show dns コマンドで確認できるTTLは、実際のTTLより デフォルト +1分 延長されています。 ASAは、FQDNの元TTLに応じて再度 名前解決を試みますが、TTLを 1分延長することで、FQDN ACLに紐づいたIPアドレスが即座に消失する事を防ぐためです。

ASA# show dns
Name: www.cisco.com
Address: 173.37.145.84 TTL 00:05:26

    
解決されたIPアドレスは、FQDN ACLで利用されます。 show access-list コマンドで利用状況を確認できます。

ASA# show access-list
access-list cached ACL log flows: total 0, denied 0 (deny-flow-max 4096)
alert-interval 300
access-list IN; 6 elements; name hash: 0x9f2434aa
access-list IN line 1 extended permit icmp any any (hitcnt=943) 0x1bbf04d2
access-list IN line 2 extended permit udp any any eq domain (hitcnt=372) 0xbb228a88
access-list IN line 3 extended permit tcp any object FQDN-www.cisco.com eq www (hitcnt=15) 0x964eb682
access-list IN line 3 extended permit tcp any fqdn www.cisco.com (resolved) eq www 0x31553b28
access-list IN line 3 extended permit tcp any host 173.37.145.84 (www.cisco.com) eq www (hitcnt=15) 0x964eb682
access-list IN line 4 extended permit tcp any object FQDN-www.cisco.com eq https (hitcnt=7) 0x6b6c980a
access-list IN line 4 extended permit tcp any fqdn www.cisco.com (resolved) eq https 0x31d1839a
access-list IN line 4 extended permit tcp any host 173.37.145.84 (www.cisco.com) eq https (hitcnt=7) 0x6b6c980a

   
ASAが加算するTTL値は expire-entry-timer minutes <分> コマンドで定義できます。 最少/デフォルトが1分です。 以下は10分に延長時の設定と動作確認例です。 元TTLが約5分であり、10分加算により 15分となっています。

ASA(config)# dns server-group DefaultDNS
ASA(config-dns-server-group)# expire-entry-timer minutes 10
ASA(config-dns-server-group)#
ASA(config-dns-server-group)# clear dns
ASA(config-dns-server-group)# show dns
Name: www.cisco.com
Address: 173.37.145.84 TTL 00:14:51

   
以下は実際の DNS解決結果のパケットキャプチャ出力の抜粋です。 www.cisco.comのTTLは294秒 (約5分)であることを確認できます。

   

   

FQDN ACLを利用時の制限・注意事項

FQDN ACLは、厳密なFQDNの制御には向きません。 また、URLフィルタリング機能の完全な代用とはなりません。

ASAは、パケット内のFQDNを Deep Inspectionで確認し制御しているわけでは無いためです。 ASAは、事前にFQDNを名前解決し、その IPアドレスを元に通信制御を行う実装のためです。

   
まず、信頼できるDNSサーバを利用する必要があります。  解決結果によって、FQDN ACLが利用するIPアドレスが決まるためです。 (不正なDNSサーバを利用した場合、悪意あるIPアドレスの応答がされるリスクがあります。)

また、FQDNに紐づくIPアドレスが変わった場合、タイミングにより、通信断が発生する可能性があります。 例えば、www.cisco.com のIPアドレスが、1.0.0.1から 1.0.0.2に変わった場合、ASAは1.0.0.1で過去に解決されたIPを利用し、クライアントは 1.0.0.2を利用するズレが発生する可能性があります。 この場合、ASAのFQDN ACLは 1.0.0.1宛の通信を制御しますので、クライアントからの新IPアドレス 1.0.0.2宛通信は FQDN ACLにマッチできません。 FQDN ACLで制御可能にするには、ASAと クライアントの"両方"が、同じIPアドレス解決結果になるまで待つ必要があります。 早く復旧したい場合は、ASA もしくは クライアントの 古い解決結果を持つほうのDNSキャッシュのクリアも有効です。

    
大手サイト(googleやfacebook、amazonなど)の場合、複数のIPを持ち、DNSベースのロードバランシングをしている事があります。 この場合、名前解決を実施しても、異なるIPアドレスの応答があることがあります。 ASAの解決結果のIPアドレスと、クライアントの解決結果の IPアドレスがマッチしなければ、FQDN ACLでクライアントからの そのFQDN宛のIP通信を制御できません。 つまり、このようなサイトの場合、FQDN ACLの利用は向きません。

ASAと クライアントの利用するDNSサーバが異なる場合、同じFQDNを照会しても、異なるIPアドレスの応答がある場合があります。 これはDNSサーバのキャッシュ状態にも依存します。 当ケースを避けるためには、ASAとクライアントは、同じDNSサーバの利用が好ましいです。

また、ASAは元TTL情報を元にアドレスの再解決を行います。 FQDN ACLの数が多いほど、かつ TTLの短いFQDNほど、ASAの再解決頻度が多くなり、その分 ASAやDNSサーバの処理負荷が上昇します。

   
纏めますと、FQDN ACLの利用は 以下のような環境向けです。

    • FQDNで解決されるIPアドレスが単一であり、その変動が無い、もしくは 殆ど変動しない
    • 何らかの理由でFQDNのIPアドレスが変わった場合の、ASA・クライアントの再解決が完了するまでの通信影響の発生を許容できる

    
逆に上記の許容が難しい環境の場合は、FQDN ACLの利用は向きません。 別のソリューションの利用をお勧めいたします。 例えば、URLフィルタリングを より精密に、柔軟に、安定して行いたい場合、FirePOWERサービスモジュールのURLフィルタリング機能を利用できます。 詳しくは、Firepower 6.0: URL Filtering 動作概要と 設定確認 を参照してください。 なお、FirePOWERサービスの利用には、対応するハードウェアの利用と、別途ライセンスの購入が必要となります。

    

    

DNSキャッシュクリア方法

何らかの理由で古いDNSキャッシュをクリアしたい場合は、以下コマンドを実行します。

[ASAの場合]
指定のFQDNに紐づいたIPアドレスをクリアしたい場合は、clear dns host [FQDN] コマンドを実行します。 全てのIPアドレスをクリアをしたい場合は、clear dns コマンドを実行します。

ASA# show dns
Name: www.cisco.com
Address: 173.37.145.84 TTL 00:07:45
ASA#
ASA# clear dns
ASA# show dns
Name: www.cisco.com (cleared)

    
[Windowsマシンの場合]
DNSキャッシュ情報は、コマンドプロンプトから ipconfig /displaydns の実行で確認できます。 DNSキャッシュの破棄は ipconfig /flushdns コマンドで可能です。

    
    

参考情報

Using hostnames (DNS) in access-lists - configuration steps, caveats and troubleshooting
https://supportforums.cisco.com/document/66011/using-hostnames-dns-access-lists-configuration-steps-caveats-and-troubleshooting

ASA 9.6 Configuration Guide: Access Control Lists
http://www.cisco.com/c/en/us/td/docs/security/asa/asa96/configuration/firewall/asa-96-firewall-config/access-acls.html

  • タグ付けされた記事をさらに検索:
2233
閲覧回数
5
いいね!
0
コメント