はじめに
このドキュメントでは、VPNフィルタについて詳しく説明します。また、LAN-to-LAN(L2L)、Cisco VPN Client、およびCisco Secure Clientに適用されます。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- L2L VPNトンネルの設定
- VPN Client Remote Access(RA)の設定
- AnyConnect RAの設定
使用するコンポーネント
このドキュメントの情報は、Cisco 5500-Xシリーズ/Cisco Firepowerシリーズ適応型セキュリティアプライアンス(ASA)バージョン9.1xに基づくものです。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
フィルタは、セキュリティ アプライアンスを経由して着信したトンネリングされたデータ パケットを、送信元アドレス、宛先アドレス、プロトコルなどの基準によって、許可するか拒否するかを決定するルールで構成されます。さまざまなタイプのトラフィックを許可または拒否するには、アクセスコントロールリスト(ACL)を設定します。フィルタは、グループポリシー、ユーザ名属性、ダイナミックアクセスポリシー(DAP)で設定できます。
DAPは、ユーザ名属性とグループポリシーの両方で設定されている値よりも優先されます。DAPがフィルタを割り当てない場合、ユーザ名属性値がグループポリシー値よりも優先されます。
sysopt connection permit-vpnコマンドは、VPNトンネル経由でセキュリティアプライアンスに入るすべてのトラフィックがインターフェイスアクセスリストをバイパスできるようにします。グループ ポリシーおよびユーザ単位の認可アクセス リストは、引き続きトラフィックに適用されます。
vpn-filterは、トンネルから出た後の復号化後のトラフィックと、トンネルに入る前の暗号化前のトラフィックに適用されます。vpn-filter に使用される ACL を interface access-group にも使用することはできません。
リモートアクセスVPNクライアント接続を制御するグループポリシーにvpn-filterを適用する場合、ACLのsrc_ipの位置にあるクライアント割り当てIPアドレスと、ACLのdest_ipの位置にあるローカルネットワークを使用してACLを設定する必要があります。vpn-filterを、L2L VPN接続を管理するグループポリシーに適用する場合、ACLのsrc_ipの位置にあるリモートネットワークと、ACLのdest_ipの位置にあるローカルネットワークでACLを設定する必要があります。
設定
ルールは双方向に適用されますが、VPNフィルタは着信方向で設定する必要があります。
例1:SecureClientまたはVPN Clientを使用するvpn-filter
クライアントに割り当てられたIPアドレスが10.10.10.1/24で、ローカルネットワークが192.168.1.0/24であるとします。
このアクセスコントロールエントリ(ACE)により、AnyConnectクライアントはローカルネットワークにTelnet接続できます。
access-list vpnfilt-ra permit tcp
10.10.10.1 255.255.255.255 192.168.1.0 255.255.255.0 eq 23

注:ACE access-list vpnfilt-ra permit tcp 10.10.10.1 255.255.255.255 192.168.1.0 255.255.255.0 eq 23では、送信元ポート23を使用する場合、ローカルネットワークによるTCPポートでのRAクライアントへの接続の開始も許可されます。
このACEを使用すると、ローカルネットワークからセキュアクライアントにTelnet接続できます。
access-list vpnfilt-ra permit tcp 10.10.10.1 255.255.255.255
eq 23 192.168.1.0 255.255.255.0

注:ACE access-list vpnfilt-ra permit tcp 10.10.10.1 255.255.255.255 eq 23 192.168.1.0 255.255.255.0では、RAクライアントが送信元ポート23を使用する場合、任意のTCPポートでローカルネットワークへの接続を開始することもできます。
注意:vpn-filter機能を使用すると、トラフィックを着信方向だけでフィルタリングでき、発信ルールは自動的にコンパイルされます。そのため、インターネット制御メッセージプロトコル(ICMP)アクセスリストを作成する際に、方向フィルタが必要な場合は、アクセスリスト形式でICMPタイプを指定しないでください。
例2:L2L VPN接続でのvpn-filter
リモートネットワークが10.0.0.0/24で、ローカルネットワークが192.168.1.0/24であると仮定します。
このACEを使用すると、リモートネットワークからローカルネットワークにTelnet接続できます。
access-list vpnfilt-l2l permit tcp 10.0.0.0 255.255.255.0 192.168.1.0
255.255.255.0 eq 23

注:ACE access-list vpnfilt-l2l permit tcp 10.0.0.0 255.255.255.0 192.168.1.0 255.255.255.0 eq 23では、送信元ポート23を使用する場合、ローカルネットワークによるリモートネットワークへの接続の開始も許可されます。
このACEを使用すると、ローカルネットワークからリモートネットワークにTelnet接続できます。
access-list vpnfilt-l2l permit tcp 10.0.0.0 255.255.255.0 eq 23
192.168.1.0 255.255.255.0

注:ACE access-list vpnfilt-l2l permit tcp 10.0.0.0 255.255.255.0 eq 23 192.168.1.0 255.255.255.0では、送信元ポート23を使用する場合、リモートネットワークによるローカルネットワークへの接続の開始も許可されます。
注意:vpn-filter機能を使用すると、トラフィックを着信方向だけでフィルタリングでき、発信ルールは自動的にコンパイルされます。そのため、ICMPアクセスリストを作成する際に、指向性フィルタが必要な場合は、アクセスリスト形式でICMPタイプを指定しないでください。
VPNフィルタおよびユーザごとの上書きアクセスグループ
VPNトラフィックは、インターフェイスACLによってフィルタリングされません。デフォルトの動作を変更するには、コマンドno sysopt connection permit-vpnを使用できます。この場合、2つのACLをユーザトラフィックに適用できます。まずインターフェイスACLがチェックされ、次にvpn-filterがチェックされます。
per-user-overrideキーワード(着信ACLのみ)を使用すると、ユーザ許可のためにダウンロードされるダイナミックユーザACLによって、インターフェイスに割り当てられたACLが上書きされます。たとえば、インターフェイスACLによって10.0.0.0からのすべてのトラフィックが拒否される一方で、ダイナミックACLによって10.0.0.0からのすべてのトラフィックが許可される場合、そのユーザのインターフェイスACLがそのダイナミックACLによって上書きされ、トラフィックが許可されます。
例(no sysopt connection permit-vpnが設定されている場合):
- no per-user-override, no vpn-filter:トラフィックがインターフェイスACLと照合されます。
- no per-user-override, vpn-filter:トラフィックはまずインターフェイスACLと照合され、次にvpn-filterと照合されます
- per-user-override、vpn-filter:トラフィックはvpn-filterのみに対して照合されます。
確認
ここでは、設定が正常に機能しているかどうかを確認します。
- show asp table filter [access-list <acl-name>] [hits]
Accelerated Security Path(ASP;高速セキュリティパス)フィルタテーブルをデバッグするには、特権EXECモードでshow asp table filterコマンドを使用します。フィルタがVPNトンネルに適用されている場合、フィルタルールはフィルタテーブルにインストールされます。トンネルにフィルタが指定されている場合、内部パケットを許可するか拒否するかを判断するために、暗号化の前と復号化の後にフィルタテーブルがチェックされます。
USAGE
show asp table filter [access-list
] [hits]
SYNTAX <acl-name> Show installed filter for access-list <acl-name>
hits Show filter rules which have non-zero hits values
- clear asp table filter [access-list <acl-name>]
このコマンドは、ASPフィルタテーブルエントリのヒットカウンタをクリアします。
USAGE
clear asp table filter [access-list
]
SYNTAX
<acl-name> Clear hit counters only for specified access-list <acl-name>
トラブルシュート
ここでは、設定のトラブルシューティングに使用できる情報を示します。
注:debug コマンドを使用する前に、『debug コマンドの重要な情報』を参照してください。
- ACLフィルタのデバッグ
このコマンドは、VPNフィルタのデバッグを有効にします。ASPフィルタテーブルへのVPNフィルタのインストールや削除のトラブルシューティングに使用できます。例1:AnyConnectまたはVPN Clientを使用するvpn-filter。
user1が接続したときのデバッグ出力:
ACL FILTER INFO: first reference to inbound filter vpnfilt-ra(2): Installing
rule into NP.
ACL FILTER INFO: first reference to outbound filter vpnfilt-ra(2): Installing
rule into NP.
user2が接続したときのデバッグ出力(user1と同じフィルタの後):
ACL FILTER INFO: adding another reference to outbound filter vpnfilt-ra(2): refCnt=2
ACL FILTER INFO: adding another reference to inbound filter vpnfilt-ra(2): refCnt=2
user2の切断時のデバッグ出力:
ACL FILTER INFO: removing a reference from inbound filter vpnfilt-ra(2): remaining
refCnt=1
ACL FILTER INFO: removing a reference from outbound filter vpnfilt-ra(2): remaining
refCnt=1
user1の切断時のデバッグ出力:
ACL FILTER INFO: releasing last reference from inbound filter vpnfilt-ra(2): Removing
rule into NP.
ACL FILTER INFO: releasing last reference from outbound filter vpnfilt-ra(2): Removing
rule into NP.
- aspテーブルの表示
user1が接続する前のshow asp table filterの出力を次に示します。IPv4とIPv6の両方に対して、イン方向とアウト方向の両方に暗黙の拒否ルールのみがインストールされます。
Global Filter Table:
in id=0xd616ef20, priority=11, domain=vpn-user, deny=true
hits=0, user_data=0xd613ea60, filter_id=0x0(-implicit deny-), protocol=0
src ip=0.0.0.0, mask=0.0.0.0, port=0
dst ip=0.0.0.0, mask=0.0.0.0, port=0
in id=0xd616f420, priority=11, domain=vpn-user, deny=true
hits=0, user_data=0xd615ef70, filter_id=0x0(-implicit deny-), protocol=0
src ip=::/0, port=0
dst ip=::/0, port=0
out id=0xd616f1a0, priority=11, domain=vpn-user, deny=true
hits=0, user_data=0xd614d900, filter_id=0x0(-implicit deny-), protocol=0
src ip=0.0.0.0, mask=0.0.0.0, port=0
dst ip=0.0.0.0, mask=0.0.0.0, port=0
out id=0xd616f6d0, priority=11, domain=vpn-user, deny=true
hits=0, user_data=0xd6161638, filter_id=0x0(-implicit deny-), protocol=0
src ip=::/0, port=0
dst ip=::/0, port=0