2011-05-24 11:59 AM 2017-08-30 06:30 AM 更新
ASA の機能の 1 つに URL フィルタリングがあります。この機能を使用して、特定の URL/Web サイトへのアクセスをブロックまたは許可できます。この記事は、この機能の使用方法を説明することを目的としています。内容をご理解いただければ、URL フィルタリングを最大限に活用し、必要に応じて使用することができるようになります。
こ の記事では、URL のドメインおよび URI 内の単語をブロックまたは許可します。もちろん、ASA はその他のことにも対応します。詳細については、ASA の設定ガイドを参照してください。以降では、cisco.com ドメインを許可またはブロックします。つまり、cisco.com のページを閲覧するユーザは、URL フィルタリングの対象になります。たとえば、www.cisco.com/index.html、cisco.com/exampledir /page.html などのページです。また、URI の「/test/」を許可またはブロックします。つまり、「/test/」を含むページ パスは URL フィルタリングの対象になります。たとえば、www.examplesite.com/exampledir/test/page.html、 www.anyurl.com/test/examplepage.jsp、www.anything.com/onedir/seconddir /test などです。
URL フィルタリングを適用するメカニズムは Modular Policy Framework(MPF)です。タイプ http の class-map で一致する Regular Expression(regex; 正規表現)を作成します。これらの class-map を policy-map で使用してドロップ アクションを定義します。次に、インターフェイスに適用される別の policy-map の http インスペクションを policy-map に適用します。このようにして、http インスペクション アクションをインターフェイスに到達するトラフィックに適用します。
注:企 業の URL フィルタリング向けにはこのような機能を強調する必要がありますが、お客様には WebSense または N2H2 を ASA と統合して使用していただくようにする必要があります。こうした Web フィルタリング エンジンでは、サイトのクラスに基づいた非常に強力なフィルタリングが可能です。直接 ASA で regex を使用して URL フィルタリングを行うのは、広範な分類が可能で regex パターンが限られている場合などに限られ、あまり使用しません。ASA は、regex の一致や HTTP トラフィックが多い企業での使用には対応できません。
特定の Web サイトをブロックするとします。たとえば、cisco.com のすべてのページおよび 「/test/」を含む URI をブロックします。regex を作成し、class-map で一致させます。いずれかの regex が一致すると、実際には class-map が適合します。次に、policy-map block-url-policy で、class-map(cisco.com または「/test/」を含む URI)に適合するものをリセットします。それ以外は許可されます(cisco.com ではなく、「/test/」を含む URI ではないもの)。policy-map block-url-policy を別の policy-map(global_policy)の http インスペクションに使用し、service-policy に適用します。
regex blockex1 "/test/"
regex blockex2 "cisco\.com"
class-map type inspect http match-any block-url-class
match request uri regex blockex1
match request header host regex blockex2
policy-map type inspect http block-url-policy
parameters
class block-url-class
drop-connection log
policy-map global_policy
class inspection_default
inspect http block-url-policy
service-policy global_policy global
任意の Web サイトへのアクセスが必要な、いくつかのホスト(管理者、つまり IP アドレス 192.168.1.2)があり、その他のユーザは特定の Web サイトからブロックする必要があるとします(注意:この例のプロセスに従うには上記の例を理解しておく必要があります)。上記の例とほぼ同じ設定を使用しますが、今回は追加の access-list、class-map、および policy-map が必要です。この access-list(user-acl)は、無制限のアクセスが必要なユーザを除いて、すべてのユーザと一致します。新しい class-map(block-user-class)で一致し、この class-map は別の policy-map(block-user-url-policy)で使用されます。この policy-map は、許可された Web サイトの policy-map block-url-policy の http インスペクションを実行します(この部分は上記の例と同じ)。その結果、service-policy により block-user-url-policy がインターフェイスに適用されます。この policy-map が実際に行っていることは、無制限のユーザを除くすべてのユーザを照合し(class block-user-class)、ユーザが特定の Web サイトにアクセスするのをブロックすることです(inspect http block-url-policy)。その他のユーザ(access-list で不一致/拒否)はどのサイトにもアクセスできます。
regex blockex1 "/test/"
regex blockex2 "cisco\.com"
access-list user-acl extended deny tcp host 192.168.1.2 any eq www
access-list user-acl extended permit tcp any any eq www
class-map type inspect http match-any block-url-class
match request uri regex blockex1
match request header host regex blockex2
class-map block-user-class
match access-list user-acl
policy-map type inspect http block-url-policy
parameters
class block-url-class
drop-connection
policy-map block-user-url-policy
class block-user-class
inspect http block-url-policy
service-policy block-user-url-policy interface inside
cisco.com だけを許可するとします。regex を作成し、class-map で一致させます(match ステートメント)。match ステートメントが一致すると、class-map が適合します。match ステートメントが一致しても、regex は URL で一致しません。次に、policy-map allow-url-policy で、接続をリセットします。その他は許可されます(cisco.com)。つまり、閲覧するページが cisco.com ではない場合は、リセットされます。policy map を別の policy-map(global_policy)の http インスペクションに使用し、service-policy に適用します。
regex allowex2 "cisco\.com"
class-map type inspect http match-all allow-url-class
match not request header host regex allowex2
policy-map type inspect http allow-url-policy
parameters
class allow-url-class
drop-connection log
policy-map global_policy
class inspection_default
inspect http allow-url-policy
service-policy global_policy global
特定の Web サイトだけを許可するとします。たとえば、cisco.com のページだけと「/test/」を含む URI だけを許可します。regex を作成し、class-map で一致させます。両方の match ステートメントが一致すると、class-map が適合します。いずれの regex もユーザが閲覧する URL で一致しない場合に限り、両方の match ステートメントが一致します。次に、policy-map allow-url-policy で、接続をリセットします。その他は許可されます(cisco.com または「/test/」を含む URI)。つまり、閲覧するページが cisco.com でも「/test/」を含む URL でもない場合は、リセットされます。policy map を別の policy-map(global_policy)の http インスペクションに使用し、service-policy に適用します。
regex allowex1 "/test/"
regex allowex2 "cisco\.com"
class-map type inspect http match-all allow-url-class
match not request uri regex allowex1
match not request header host regex allowex2
policy-map type inspect http allow-url-policy
parameters
class allow-url-class
drop-connection log
policy-map global_policy
class inspection_default
inspect http allow-url-policy
service-policy global_policy global
任意の Web サイトへのアクセスが必要な、いくつかのホスト(管理者、つまり IP アドレス 192.168.1.2)があり、その他のユーザは特定の Web サイトにだけアクセスできる必要があるとします(注意:この例のプロセスに従うには上記の例を理解しておく必要があります)。上記の例とほぼ同じ設定を使用しますが、今回は追加の access-list、class-map、および policy-map が必要です。この access-list(user-acl)は、無制限のアクセスが必要なユーザを除いて、すべてのユーザと一致します。新しい class-map(allow-user-class)で一致し、この class-map は別の policy-map(allow-user-url-policy)で使用されます。この policy-map は、許可された Web サイトの policy-map allow-url-policy の http インスペクションを実行します(この部分は上記の例と同じ)。その結果、service-policy により allow-user-url-policy がインターフェイスに適用されます。この policy-map が実際に行っていることは、無制限のユーザを除くすべてのユーザを照合し(class allow-user-class)、ユーザに特定の Web サイトへのアクセスだけを許可することです(inspect http allow-url-policy)。その他のユーザ(access-list で不一致/拒否)はどのサイトにもアクセスできます。
regex allowex1 "/test/"
regex allowex2 "cisco\.com"
access-list user-acl extended deny tcp host 192.168.1.2 any eq www
access-list user-acl extended permit tcp any any eq www
class-map type inspect http match-all allow-url-class
match not request uri regex allowex1
match not request header host regex allowex2
class-map allow-user-class
match access-list user-acl
policy-map type inspect http allow-url-policy
parameters
class allow-url-class
drop-connection
policy-map allow-user-url-policy
class allow-user-class
inspect http allow-url-policy
service-policy allow-user-url-policy interface inside
要件は次のとおりです。
1. facebook.com を拒否します。
2. developers.facebook.com に自動的にリダイレクトされる developer.facebook.com を許可します。
3. yahoo.com、google.com のような他のすべてのドメインを許可します。
regex block-fb ".*facebook\.com"
regex allow-fb "developer[s]*\.facebook\.com"
!
class-map type regex match-any block-fb
match regex block-fb
class-map type regex match-any allow-regex-class
match regex allow-fb
!
policy-map type inspect http http-inspect-pol
parameters
match not request header host regex class allow-regex-class
match request header host regex class block-fb
reset log
class-map http-class
match port tcp eq www
policy-map http-traffic
class http-class
inspect http http-inspect-pol
!
service-policy http-traffic interface inside
または、http policy-map を global_policy のデフォルトのインスペクションに関連付けることもできます。
Bear in mind, every time you add remove or change regex, you need to
remove the service-policy applied to the interface and add it again.
http://www.cisco.com/en/US/docs/security/asa/asa82/configuration/guide/inspect_basic.html#wp1514315
If you need to change a match command for HTTP inspection after configuring the inspection, you must
remove the attached service policy by using the no service policy command and then reconfigure the
service policy. Changing the class map by removing a match command causes HTTP inspection to block
all HTTP traffic until you remove and reconfigure the attached service policy so that all the match
commands are reprocessed.
---------------------------------------------------------------------------------------------------------------------------
DOC-1268
本ドキュメントの 「Modular Policy Framework(MPF)」を用いたURLフィルタリングは、パケットのディープインスペクションが必要となり、負荷の高い機能の1つとなります。 利用を検討時は、パフォーマンスに十分余力のある機器での有効化を検討してください。また、本ドキュメントのURLフィルタリング機能は、「inspect http」機能を利用しますが、TCP80(HTTP)の制御しかできず、2021年現在 インターネットのWeb通信で主流となるTCP443(HTTPS)の制御はできません。
なお、ASAバージョン 8.4(2)より、より軽快に シンプルな設定で動作する 「FQDN ACL」機能もサポートを開始しました。 TCP80/443を含む あらゆるFQDN宛通信の制御が可能です。詳しくは以下ドキュメントを参考にしてください。
ASA: FQDN ACL の設定例と動作確認
https://supportforums.cisco.com/t5/-/-/ta-p/3164029
もしくは、ASA5500-XシリーズやFPR1000/2100/4100/9300シリーズをご利用の場合、ASAからFTDソフトウェアに切り替えることで、FTDのURLフィルタリング機能による制御も可能です。なお、FTDの利用時は有償ライセンスが必要となることがあります。
パフォーマンス影響の目安は以下となります。
FQDN ACLによる FQDNの簡易フィルタリング < FTDによるURLフィルタリング < MPFによるURLフィルタリング
検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう
シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします: