⑤ グループポリシー設定(詳細版)


  • トンネルの種類(SSL/DTLS/IPsec など)
  • スプリットトンネル(社内だけトンネル/全部トンネル)
  • DNS・ドメイン名
  • 同時ログイン数やタイムアウト
  • VPNフィルタACLでアクセス制御

といった「VPNユーザーのふるまい」をまとめて定義するのが group-policy です。

  • 作り方:
    group-policy <名前> internal
  • どこで使うか:
    • トンネルグループ④の default-group-policy
    • ユーザー属性の vpn-group-policy
    • または RADIUS Class などで返却

1. 最小構成のグループポリシー例

まずは“全部トンネル(フルVPN)”でいい、という一番シンプルな例です。

conf t
! 内部グループポリシーとして作成
group-policy ANYCONNECT_POLICY internal

group-policy ANYCONNECT_POLICY attributes
 vpn-tunnel-protocol ssl-client
 dns-server value 192.168.10.10
 default-domain value example.local
 vpn-idle-timeout 30                ! 30分操作なしで切断
 vpn-simultaneous-logins 2          ! 同時ログイン2まで
 split-tunnel-policy tunnelall      ! すべての通信をトンネルへ(フルトンネル)
!
! 必要に応じて後述の vpn-filter や split-tunnel を追加
exit
write memory

vpn-tunnel-protocol ssl-client
AnyConnect(SSL-VPN)を使う指定。
(古い IPsec-VPN 等は使わない前提ならこれでOK)

split-tunnel-policy tunnelall
すべての通信をVPNトンネルに通す(フルVPN)。
クライアントのインターネットも会社経由になります。

dns-server / default-domain
社内向け名前解決をクライアントでも使えるようにする。

2. よく使うパターン別の設定

パターンA:フルトンネル(すべて社内経由)

「家から会社にVPNを張ったら、全部会社経由で出したい」
→ セキュリティを優先するパターン。

group-policy ANYCONNECT_POLICY internal
group-policy ANYCONNECT_POLICY attributes
 vpn-tunnel-protocol ssl-client
 split-tunnel-policy tunnelall
 dns-server value 192.168.10.10
 default-domain value example.local
 vpn-idle-timeout 30
 vpn-session-timeout 480           ! セッション最大8時間など
 vpn-simultaneous-logins 2
exit
  • インターネットも社内FW/プロキシを通したい場合に◎
  • 帯域はASA/社内側の回線にすべて乗るので、トラフィック量は増えます。

パターンB:スプリットトンネル(社内だけVPN)

「社内宛だけトンネル、それ以外(インターネット)は自宅から直接」
→ 在宅勤務でよく使われるパターン。

  1. まず「社内ネットワーク」を書いた ACL を作成します。
! 社内ネットワークだけを許可する standard ACL
! ※permit したネットワークが “トンネルに入る” と思ってください
access-list ACL_SPLIT standard permit 192.168.10.0 255.255.255.0
access-list ACL_SPLIT standard permit 192.168.20.0 255.255.255.0
  1. グループポリシー側でこの ACL を参照します。
group-policy ANYCONNECT_POLICY internal
group-policy ANYCONNECT_POLICY attributes
 vpn-tunnel-protocol ssl-client
 split-tunnel-policy tunnelspecified
 split-tunnel-network-list value ACL_SPLIT
 dns-server value 192.168.10.10
 default-domain value example.local
 vpn-idle-timeout 30
 vpn-simultaneous-logins 2
exit
  • split-tunnel-policy tunnelspecified
    ACL で指定したネットワークだけトンネルへ
  • split-tunnel-network-list value ACL_SPLIT
    どの ACL を使うかを指定

これにより:

  • 192.168.10.0/24 192.168.20.0/24 → VPNトンネルへ
  • それ以外(インターネット等) → 自宅のルータから直接

パターンC:除外型のスプリット(インターネットだけ直)

ASA のバージョンによっては excludespecified も使用可能です。
「指定したネットワークにはトンネルを使わない」という考え方になります。

access-list ACL_SPLIT_EX standard permit 0.0.0.0 0.0.0.0

group-policy ANYCONNECT_POLICY internal
group-policy ANYCONNECT_POLICY attributes
 split-tunnel-policy excludespecified
 split-tunnel-network-list value ACL_SPLIT_EX
...

使い分けは環境によるので、まずは tunnelall か tunnelspecified を押さえておけば十分なことが多いです。

3. VPN フィルタ(vpn-filter)で“社内側の行き先”を制限

スプリットトンネルは「どのトラフィックがトンネルに入るか」でしたが、
vpn-filter は “トンネル越しにどこまで社内に入らせるか” を決める ACL です。

3-1. ACL 作成(extended ACL)

! 例:VPNプールが 192.168.50.0/24 で、
! 社内の 192.168.10.0/24 と 192.168.20.10 のみ許可する場合
access-list ACL_VPNFILTER extended permit ip 192.168.50.0 255.255.255.0 192.168.10.0 255.255.255.0
access-list ACL_VPNFILTER extended permit tcp 192.168.50.0 255.255.255.0 host 192.168.20.10 eq 3389
! 他はデフォルトdeny(ASAのACLは暗黙denyあり)
  • source:VPNクライアント(VPNプール)
  • destination:社内資産

3-2. グループポリシーに適用

group-policy ANYCONNECT_POLICY internal
group-policy ANYCONNECT_POLICY attributes
 vpn-filter value ACL_VPNFILTER
 ...
exit

これを入れることで、「VPNで入ってきたユーザーが、社内のどこまで到達できるか」を厳密に制御できます。
委託業者用 GP では、この vpn-filter を厳しめにする、などの使い方が典型です。

4. その他 よく使う group-policy 属性

group-policy ANYCONNECT_POLICY internal
group-policy ANYCONNECT_POLICY attributes
 vpn-tunnel-protocol ssl-client
 dns-server value 192.168.10.10 8.8.8.8
 default-domain value example.local

 vpn-idle-timeout 30           ! アイドル30分で切断
 vpn-session-timeout 480       ! 最大8時間で強制切断
 vpn-simultaneous-logins 2     ! 1ユーザ最大2セッション

 group-lock value ANYCONNECT   ! このGPのユーザーは ANYCONNECT TG 経由のみ許可
 banner value  "Authorized use only. Unauthorized access prohibited."
!
! AnyConnect 固有の動作(必要であれば)
 anyconnect ssl dtls enable    ! DTLSも有効化(バージョンにより表現差あり)
!
exit

group-lock value ANYCONNECT
トンネルグループ名と紐付けることで、
「このグループポリシーのユーザーは、このトンネルグループ経由でしか入れない」 という制約をかけられます。

banner value ...
接続時に表示する注意文(コンプライアンス上よく求められるやつ)

5. トンネルグループ④とのひも付け

④で作ったトンネルグループに、このグループポリシーを関連付けてはじめて意味を持ちます:

tunnel-group ANYCONNECT type remote-access
tunnel-group ANYCONNECT general-attributes
 address-pool VPN_POOL
 default-group-policy ANYCONNECT_POLICY

さらに、ユーザー作成②のところで:

username testuser password <PW> privilege 0
username testuser attributes
 vpn-group-policy ANYCONNECT_POLICY
 service-type remote-access

としておけば、

  1. testuserANYCONNECT トンネルグループで接続
  2. ANYCONNECT_POLICY が適用される
     (default-group-policyvpn-group-policy が一致しているのでスッキリ)

6. 設定確認コマンド

! GPの内容表示
show run group-policy
show group-policy ANYCONNECT_POLICY

! 接続中セッションの GP を確認
show vpn-sessiondb anyconnect filter name testuser

まとめ

  • ⑤は 「VPNユーザーの挙動セット」 を決める超重要ポイント
    • トンネル方式(SSL)
    • スプリットトンネル(tunnelall / tunnelspecified)
    • DNS・ドメイン
    • タイムアウト・同時接続数
    • vpn-filter ACL で社内アクセス制御
  • ④トンネルグループ & ②ユーザーと組み合わせて、“誰がどの入口からどんな権限で入るか” を完成させます。