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

ASA: Inbound/Outbound方向それぞれのVPN Filter設定方法と注意点

[toc:faq]

はじめに

AnyConnect Client等のRemote AccessにおけるVPN Filterの設定は、VPN Clientから接続可能なIP/Portを制限するために使われます。

本記事では一般的なInbound方向(VPN Client->サイト内)のVPN Filter設定方法に加えて、Outbound方向(サイト内->VPN Client)へのVPN Filterの適用で注意すべき点について説明します。

 

前提条件

  • ASA 9.1(6)及びAnyConnect3.1にて動作確認をしております。
  • VPN Filterを使っていないAnyConnectの設定については本記事では扱っておりません。AnyConnectの基本的な設定が入っている前提で、説明します。
  • 文中にて、Inbound方向を「VPN Client->VPN接続先のServer」Outbound方向を逆の「VPN接続先のServer->VPN Client」とします。

 

設定方法

一般的にはVPN Filterは、VPN Clientで接続した先のサイトにある、サーバ等へのアクセス制御(Inbound方向)のために使われます。仮に以下のような設定をしたいとします。

その場合、VPN Clientからサイト内のServerへのRDP(TCP3389)にのみアクセスを設定する場合のVPN Filterはgroup-policy attributeもしくは、username attribute内に以下のように設定します。

Access-list
access-list vpn-acl extended permit tcp host 192.168.1.100 host 172.16.1.100 eq 3389  

Group policyのattributeでvpn-filterを設定
group-policy test-anyconnect-gp attributes
vpn-filter value vpn-acl

もしくはusernameのattributeとしてvpn-filterを設定
username xxx attribute
 vpn-filter value vpn-acl

 

この場合は、ACLは直感的であり、特に問題はありませんが、逆に、以下のように接続先サイトのServerが発信元でVPN ClientのRDP(TCP3389)の通信(Outbound方向)を制御したい場合は注意が必要です。

この場合、ACLは、以下のようなClientが発信元となるような設定を行う必要があります。

access-list vpn-acl extended permit tcp host 192.168.1.100 eq 3389 host 172.16.1.100

このような設定が必要となる理由を以降、説明します。

 

VPN Filterの挙動について

VPN FilterはInbound(VPN Client->サイト)のACLを書くことで設定されます。その際、Inboundだけでなく、自動的にOutbound(サイト内->VPN Client)の方向への許可をする挙動となります。逆に言うと、通常のAccess-listの設定のようにOutbound方向のACLを直感的に書いても設定することができません。

また、大前提として、VPN Filterは設定なしの状態であれば、Inbound/Outboundの制限はありません。

 

Inbound方向の通信制御をする場合

まずは、簡単なInbound方向のVPN Filterの設定について説明します。

Inbound方向に対して、接続先Serverに対するRDP(TCP3389)を許可したい場合、直感的にVPN FilterのACLを設定すれば、自動的に戻り方向の通信が許可されることになります。この場合は特に難しいことを考える必要はありません。

参考までに、以下の通り、show asp table filterコマンドにてASAの内部的にはどのように見えるかを確認することができます。

Global Filter Table:
in  id=0x75c7d1b0, priority=13, domain=filter-aaa, deny=false
        hits=0, user_data=0x70febdc0, filter_id=0x6(vpn-acl), protocol=6
        src ip=192.168.1.100, mask=255.255.255.255, port=0
        dst ip=172.16.1.100, mask=255.255.255.255, port=3389<<直観通りの設定が反映
in  id=0x74d5d1f0, priority=12, domain=filter-aaa, deny=true
        hits=50, user_data=0x70fec540, filter_id=0x0(-implicit deny-)<<暗黙の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=0x74d5d6c0, priority=12, domain=filter-aaa, deny=true
        hits=0, user_data=0x70fec440, filter_id=0x0(-implicit deny-), protocol=0
        src ip=::/0, port=0
        dst ip=::/0, port=0
out id=0x75c7d108, priority=13, domain=filter-aaa, deny=false
        hits=0, user_data=0x70feb340, filter_id=0x6(vpn-acl), protocol=6
        src ip=172.16.1.100, mask=255.255.255.255, port=3389
        dst ip=192.168.1.100, mask=255.255.255.255, port=0<<意識しなくてもいいがOutboundも自動的に許可
out id=0x74d5d458, priority=12, domain=filter-aaa, deny=true
        hits=0, user_data=0x70fec4c0, filter_id=0x0(-implicit deny-)<<暗黙の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=0x74d5d958, priority=12, domain=filter-aaa, deny=true
        hits=0, user_data=0x70fec3c0, filter_id=0x0(-implicit deny-), protocol=0
        src ip=::/0, port=0
        dst ip=::/0, port=0

上記ASP Tableを見ると、Inboundと同時にOutbound側が設定されていることが確認出来ると思います。

同時に上記出力から、VPN Filterを一旦設定すると、Inbound/Outbound共に暗黙のDenyが作られることもご確認いただけますが、この性質であるため、一旦Inbound方向の通信を制御するFilterを設定すると、同時にOutbound側のDenyも設定されることになるため、Outbound側の通信制御のためのACLを明示的に記述する必要が出てきますので、その点はご注意ください。

 

Outbound方向の通信制御をする場合

次に、Outbound方向の場合ですが、直感的なOutbound方向のACLを書くことがで出来ません。そして、先ほども説明したように、VPN Filterは、Inbound方向のACLを設定することで、Outbound方向の通信が自動的に許可される挙動であるため、制御したいOutbound方向の通信を、Inbound方向からの視点でACLを記述します。

つまり、ServerからClientに向けたOutboundのRDP(TCP3389)を許可したい場合、Inbound方向から見ると、ClientのSource Port 3389からServerのAny portに対してPermitするというACLを記述すればよいことになります。

この結果、Outbound方向の通信が許可されることになります。この場合のASP Tableは以下になります。

asa5520-10(config)# sh asp table filter

Global Filter Table:
in  id=0x7624e5f0, priority=13, domain=filter-aaa, deny=false
        hits=0, user_data=0x70febe40, filter_id=0x6(vpn-acl), protocol=6
        src ip=192.168.1.100, mask=255.255.255.255, port=3389
        dst ip=172.16.1.100, mask=255.255.255.255, port=0 << Inbound側が設定されると
in  id=0x74d5d1f0, priority=12, domain=filter-aaa, deny=true
        hits=50, user_data=0x70fec540, filter_id=0x0(-implicit deny-)<<暗黙の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=0x74d5d6c0, priority=12, domain=filter-aaa, deny=true
        hits=0, user_data=0x70fec440, filter_id=0x0(-implicit deny-), protocol=0
        src ip=::/0, port=0
        dst ip=::/0, port=0
out id=0x76248698, priority=13, domain=filter-aaa, deny=false
        hits=0, user_data=0x70feb2c0, filter_id=0x6(vpn-acl), protocol=6
        src ip=172.16.1.100, mask=255.255.255.255, port=0
        dst ip=192.168.1.100, mask=255.255.255.255, port=3389 <<許可したいOutboundが設定される
out id=0x74d5d458, priority=12, domain=filter-aaa, deny=true
        hits=0, user_data=0x70fec4c0, filter_id=0x0(-implicit deny-)<<暗黙の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=0x74d5d958, priority=12, domain=filter-aaa, deny=true
        hits=0, user_data=0x70fec3c0, filter_id=0x0(-implicit deny-), protocol=0
        src ip=::/0, port=0
        dst ip=::/0, port=0

また、先ほども述べたように、一旦、VPN Filterを設定すると、自動的にInbound方向もOutbound方向も暗黙のDenyが設定されることになります。一旦、この方向で、Outbound方向のPermit設定を行った場合、自動的にその他のInbound方向の通信は暗黙のDenyによって落とされることになりますので、その場合は、Inbound方向の通信制御する方法で、明示的に許可することを忘れないでください。

 

 

2218
閲覧回数
15
いいね!
0
コメント