はじめに
このドキュメントでは、Cisco IOS® XEルータへのAnyConnect IPSec接続の外部2要素認証を設定する方法について説明します。
著者:Cisco TACエンジニア、Sadhana K S、Rishabh Aggarwal
前提条件
要件
次の項目に関する知識があることが推奨されます。
- ルータでのRA VPN設定の経験
- Identity Services Engine(ISE)の管理
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
- バージョン17.10.01aを実行するCisco Catalyst 8000V(C8000V)
- Cisco AnyConnectセキュアモビリティクライアントバージョン4.10.04071
- バージョン3.1.0を実行しているCisco ISE
- Duo認証プロキシサーバ (Windows 10または任意のLinux PC)
- Duo Webアカウント
- AnyConnectがインストールされたクライアントPC
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
認証フロー
AnyConnectユーザは、ISEサーバでユーザ名とパスワードを使用して認証されます。また、Duo Authentication Proxyサーバは、ユーザのモバイルデバイスにプッシュ通知の形式で追加の認証を送信します。
フロー図
認証フロー図
通信プロセス
- ユーザがC8000VへのRAVPN接続を開始し、プライマリ認証用のユーザ名とパスワードを入力します。
- C8000Vは、Duo認証プロキシに認証要求を送信します。
- 次に、Duo Authentication Proxyはプライマリ要求をActive DirectoryまたはRADIUSサーバに送信します。
- 認証応答が認証プロキシに返信されます。
- プライマリ認証が成功すると、Duo認証プロキシはDuoサーバを介してセカンダリ認証を要求します。
- 次に、Duoサービスは、セカンダリ認証方式(プッシュ、電話、パスコード)に応じてユーザを認証します。
- Duo認証プロキシが認証応答を受信します。
- 応答がC8000Vに送信されます。
- 成功すると、AnyConnect接続が確立されます。
設定
設定を完了するには、次のセクションを考慮してください。
C8000V(VPNヘッドエンド)の設定手順
1. RADIUSサーバーを構成します。RADIUSサーバのIPアドレスは、Duo認証プロキシのIPである必要があります。
radius server rad_server
address ipv4 10.197.243.97 auth-port 1812 acct-port 1813
timeout 120
key cisco
2. RADIUSサーバをaaa認証として、認可をローカルとして設定します。
aaa new-model
aaa group server radius FlexVPN_auth_server
server name rad_server
aaa authentication login FlexVPN_auth group FlexVPN_auth_server
aaa authorization network FlexVPN_authz local
3. ローカル認証用のID証明書がない場合は、インストールするトラストポイントを作成します。証明書の作成の詳細については、『PKIの証明書の登録』を参照してください。
crypto pki trustpoint TP_AnyConnect
enrollment url http://x.x.x.x:80/certsrv/mscep/mscep.dll
usage ike
serial-number none
fqdn flexvpn-C8000V.cisco.com
ip-address none
subject-name cn=flexvpn-C8000V.cisco.com
revocation-check none
rsakeypair AnyConnect
4. (オプション)スプリットトンネルに使用する標準アクセスリストを設定します。このアクセスリストは、VPNトンネルを介してアクセス可能な宛先ネットワークで構成されます。スプリットトンネルが設定されていない場合、デフォルトでは、すべてのトラフィックはVPNトンネルを通過します。
ip access-list standard split-tunnel-acl
10 permit 192.168.11.0 0.0.0.255
20 permit 192.168.12.0 0.0.0.255
5. IPv4アドレスプールを作成します。
ip local pool SSLVPN_POOL 192.168.13.1 192.168.13.10
作成されたIPアドレスプールは、AnyConnect接続が成功した際に、AnyConnectクライアントにIPv4アドレスを割り当てます。
6. 許可ポリシーを設定します。
crypto ikev2 authorization policy ikev2-authz-policy
pool SSLVPN_POOL
dns 10.106.60.12
route set access-list split-tunnel-acl
IPプール、DNS、スプリットトンネルリストなどは、認可ポリシーで指定されます。
注:カスタムIKEv2認可ポリシーが設定されていない場合、認可には「default」と呼ばれるデフォルトの認可ポリシーが使用されます。IKEv2許可ポリシーで指定された属性は、RADIUSサーバ経由でプッシュすることもできます。
7. IKEv2プロポーザルとポリシーを設定します。
crypto ikev2 proposal FlexVPN_IKEv2_Proposal
encryption aes-cbc-128
integrity sha384
group 19
crypto ikev2 policy FlexVPN_IKEv2_Policy
match fvrf any
proposal FlexVPN_IKEv2_Proposal
8. AnyConnectクライアントプロファイルをルータのブートフラッシュにアップロードし、次のようにプロファイルを定義します。
crypto vpn anyconnect profile Client_Profile bootflash:/Client_Profile.xml
9. HTTPセキュアサーバを無効にします。
no ip http secure-server
10. SSLポリシーを設定し、プロファイルをダウンロードするためのローカルアドレスとしてルータのWAN IPを指定します。
crypto ssl policy ssl-server
pki trustpoint TP_AnyConnect sign
ip address local port 443
11. バーチャルアクセスインターフェイスの起点となるバーチャルテンプレートをクローンが作成される
interface Virtual-Template20 type tunnel
ip unnumbered GigabitEthernet1
unnumberedコマンドは、設定されたインターフェイス(GigabitEthernet1)からIPアドレスを取得します。
13. すべての接続関連情報を含むIKEv2プロファイルを設定します。ed情報。
crypto ikev2 profile Flexvpn_ikev2_Profile
match identity remote any
authentication local rsa-sig
authentication remote eap query-identity
pki trustpoint TP_AnyConnect
dpd 60 2 on-demand
aaa authentication eap FlexVPN_auth
aaa authorization group eap list FlexVPN_authz ikev2-authz-policy
aaa authorization user eap cached
virtual-template 20 mode auto
anyconnect profile Client_Profile
これらはIKEv2プロファイルで使用されます。
match identity remote any:クライアントのIDを参照します。適切なクレデンシャルを持つすべてのクライアントが接続できるように、「any」を設定します
authentication remote:クライアント認証にEAPプロトコルを使用する必要があることを示します
authentication local:ローカル認証に証明書を使用する必要があることを示します
aaa authentication eap:EAP認証中に、RADIUSサーバFlexVPN_authが使用されます
aaa authorization group eap list:認可中、ネットワークリストはFlexVPN_authzは、認可ポリシーikev2-authz-policy
aaa authorization user eap cached:暗黙的なユーザ認証を有効にします。
virtual-template 20 mode auto:クローニングする仮想テンプレートを定義します
anyconnect profile Client_Profile:ステップ8で定義したクライアントプロファイルが、このIKEv2プロファイルに適用されます
14 . トランスフォームセットとIPSecプロファイルを設定します。
crypto ipsec transform-set TS esp-gcm 256
mode tunnel
crypto ipsec profile Flexvpn_IPsec_Profile
set transform-set TS
set ikev2-profile Flexvpn_ikev2_Profile
15. IPSecプロファイルを仮想テンプレートに追加します。
interface Virtual-Template20 type tunnel
tunnel mode ipsec ipv4
tunnel protection ipsec profile Flexvpn_IPsec_Profile
クライアントプロファイルのスニペット(XMLプロファイル)
Cisco IOS XE 16.9.1より前のリリースでは、ヘッドエンドからのプロファイルの自動ダウンロードは使用できません。16.9.1以降では、ヘッドエンドからプロファイルをダウンロードできます。
!
!
false
true
false
All
All
false
Native
false
30
false
true
false
false
true
IPv4,IPv6
true
ReconnectAfterResume
false
true
Automatic
SingleLocalLogon
SingleLocalLogon
AllowRemoteUsers
LocalUsersOnly
false
Automatic
false
false
20
4
false
false
true
<ServerList>
<HostEntry>
<HostName>FlexVPN</HostName>
<HostAddress>flexvpn-csr.cisco.com</HostAddress>
<PrimaryProtocol>IPsec
<StandardAuthenticationOnly>true
<AuthMethodDuringIKENegotiation>EAP-MD5</AuthMethodDuringIKENegotiation>
</StandardAuthenticationOnly>
</PrimaryProtocol>
</HostEntry>
</ServerList>
DUO認証プロキシの設定手順
注:Duo Authentication Proxyは、RADIUS認証でのみMS-CHAPv2をサポートします。
ステップ 1:Duo Authentication Proxy Serverをダウンロードしてインストールします。
Windowsマシンにログインし、Duo Authentication Proxyサーバをインストールします。
1つ以上のCPU、200 MBのディスク領域、および4 GBのRAMを搭載したシステムを使用することをお勧めします。
ステップ 2:C:\Program Files\Duo Security Authentication Proxy\conf\に移動し、authproxy.cfgを開いて、認証プロキシに適切な詳細情報を設定します。
[radius_client]
host=10.197.243.116
secret=cisco
注:ここで、「10.197.243.116」はISEサーバのIPアドレスで、「cisco」はプライマリ認証を検証するために設定されたパスワードです。
これらの変更を行ったら、ファイルを保存します。
ステップ 3:Windowsサービスコンソール(services.msc)を開きます。 Duo Security Authentication Proxy Serviceを再起動します。
Duoセキュリティ認証プロキシサービス
ISEでの設定手順
ステップ 1:ネットワークデバイスを設定するには、Administration > Network Devicesに移動し、Addをクリックします。
注:x.x.x.xの部分は、使用しているDuo認証プロキシサーバのIPアドレスに置き換えてください。
ISE:Network Devices(ネットワークデバイス)
ステップ 2:authproxy.cfgの「secret」で説明されているように、共有秘密を設定します。
ISE:Shared Secret(共有秘密)
ステップ 3:Administration > Identities > Usersの順に移動します。Addを選択して、AnyConnectプライマリ認証用のIDユーザを設定します。
ISE – ユーザ
DUO Administration Portalの設定手順
ステップ 1:Duoアカウントにログインします。
Applications > Protect an Applicationの順に移動します。使用するアプリケーションのProtectをクリックします。(この場合は半径)
DUO – アプリケーション
ステップ 2:使用するアプリケーションのProtectをクリックします。(この場合は半径)
統合キー、秘密キー、およびAPIホスト名をコピーして、Duo認証プロキシのauthproxy.cfgofに貼り付けます。
DUO – 半径
これらの値をコピーして、DUO認証プロキシに戻り、 authproxy.cfg(認証プロファイル)をクリックし、次に示すように値を貼り付けます。
統合キー= ikey
秘密鍵= skey
APIホスト名= api_host
[radius_server_auto]
ikey=xxxxxxxx
skey=xxxxxxxv1zG
api_host=xxxxxxxx
radius_ip_1=10.106.54.143
radius_secret_1=cisco
failmode=safe
client=radius_client
port=1812
注:サーバを設定する際には、ikey、skey、api_hostをDuoサーバからコピーする必要があります。「10.106.54.143」はC8000VルータのIPアドレスで、「cisco」はRADIUSサーバ設定でルータに設定されているキーです。
これらの変更を行ったら、ファイルを再度保存し、Duo Security Authentication Proxy Service(services.msc)を再起動します。
ステップ 3:セカンダリ認証用のユーザをDUOで作成します。
Users > Add Userの順に移動し、ユーザ名を入力します。
注:ユーザ名はプライマリ認証のユーザ名と一致している必要があります。
Add Userをクリックします。作成したら、Phonesの下で、Add Phoneをクリックし、電話番号を入力して、Add Phoneをクリックします。
DUO – 電話の追加
認証のタイプを選択します。
DUO – デバイス情報
Generate Duo Mobile Activation Codeを選択します。
DUO – 電話の有効化
Send Instructions by SMSを選択します。
DUO - SMSの送信
電話機に送信されたリンクをクリックすると、次の図に示すように、DUOアプリが「デバイス情報」セクションのユーザアカウントにリンクされます。
DUO – デバイスリンク
確認
認証をテストするには、ユーザのPCからAnyConnectを介してC8000Vに接続します。
プライマリ認証のユーザ名とパスワードを入力します。
AnyConnect接続
次に、モバイル上のDUOプッシュを受け入れます。
DUOプッシュ
接続が確立されます。
これはVPNヘッドエンドで確認できます。
1. IKEv2パラメータ
R1#sh crypto ikev2 sa detailed
IPv4 Crypto IKEv2 SA
Tunnel-id Local Remote fvrf/ivrf Status
1 10.106.54.143/4500 10.197.243.98/54198 none/none READY
Encr: AES-CBC, keysize: 256, PRF: SHA384, Hash: SHA384, DH Grp:19, Auth sign: RSA, Auth verify: FlexVPN-ikev2_Profile
Life/Active Time: 86400/147 sec
CE id: 1108, Session-id: 15
Status Description: Negotiation done
Local spi: 81094D322A295C92 Remote spi: 802F3CC9E1C33C2F
Local id: 10.106.54.143
Remote id: cisco.com
Remote EAP id: sadks //AnyConnect username
Local req msg id: 0 Remote req msg id: 10
Local next msg id: 0 Remote next msg id: 10
Local req queued: 0 Remote req queued: 10
Local window: 5 Remote window: 1
DPD configured for 60 seconds, retry 2
Fragmentation not configured.
Dynamic Route Update: disabled
Extended Authentication not configured.
NAT-T is detected outside
Cisco Trust Security SGT is disabled
Assigned host addr: 192.168.13.5 //Assigned IP address from the address pool
Initiator of SA : No
2. VPNセッションの暗号化セッションの詳細
R1#sh crypto session detail
Crypto session current status
Code: C - IKE Configuration mode, D - Dead Peer Detection
K - Keepalives, N - NAT-traversal, T - cTCP encapsulation
X - IKE Extended Authentication, F - IKE Fragmentation
R - IKE Auto Reconnect, U - IKE Dynamic Route Update
S - SIP VPN
Interface: Virtual-Access2
Profile: FlexVPN-ikev2_Profile
Uptime: 00:01:07
Session status: UP-ACTIVE
Peer: 10.197.243.97 port 54198 fvrf: (none) ivrf: (none)
Phase1_id: cisco.com
Desc: (none)
Session ID: 114
IKEv2 SA: local 10.106.54.143/4500 remote 10.197.243.98/54198 Active
Capabilities:DN connid:1 lifetime:23:58:53
IPSEC FLOW: permit ip 0.0.0.0/0.0.0.0 host 192.168.13.5
Active SAs: 2, origin: crypto map
Inbound: #pkts dec'ed 3 drop 0 life (KB/Sec) 4607998/3532
Outbound: #pkts enc'ed 0 drop 0 life (KB/Sec) 4608000/3532
3.ISEライブログの検証
ISEで、Operations > Live Logsの順に移動します。プライマリ認証の認証レポートを表示できます。
ISE:ライブログ
4. DUO認証プロキシの検証
DUO Authentication Proxyで次のファイルに移動します。C:\Program Files\Duo Security Authentication Proxy\log
2022-02-08T23:24:50.080854+0530 [duoauthproxy.lib.log#info] Sending request from 10.106.54.143 to radius_server_auto //10.106.54.143 IP address of C8000V
2022-02-08T23:24:50.080854+0530 [duoauthproxy.lib.log#info] Received new request id 163 from ('10.106.54.143', 1645)
2022-02-08T23:24:50.080854+0530 [duoauthproxy.lib.log#info] (('10.106.54.143', 1645), sadks, 163): login attempt for username 'sadks'
2022-02-08T23:24:50.080854+0530 [duoauthproxy.lib.log#info] Sending request for user 'sadks' to ('10.197.243.116', 1812) with id 191 //Primary auth sent to ISE 10.197.243.116
2022-02-08T23:24:50.174606+0530 [duoauthproxy.lib.log#info] Got response for id 191 from ('10.197.243.116', 1812); code 2 //ISE auth successful
2022-02-08T23:24:50.174606+0530 [duoauthproxy.lib.log#info] http POST to https://api-xxxx[.]duosecurity[.]com:443/rest/v1/preauth
2022-02-08T23:24:50.174606+0530 [duoauthproxy.lib.http._DuoHTTPClientFactory#info] Starting factory <_DuoHTTPClientFactory: b'https://api-xxxx[.]duosecurity[.]com:443/rest/v1/preauth '>
2022-02-08T23:24:51.753590+0530 [duoauthproxy.lib.log#info] (('10.106.54.143', 1645), sadks, 163): Got preauth result for: 'auth'
2022-02-08T23:24:51.753590+0530 [duoauthproxy.lib.log#info] http POST to https://api-xxxx[.]duosecurity[.]com:443/rest/v1/auth // Proxy is sending secondary auth request to DUO server
2022-02-08T23:24:51.753590+0530 [duoauthproxy.lib.http._DuoHTTPClientFactory#info] Starting factory <_DuoHTTPClientFactory: b'https://api-xxxx[.]duosecurity[.]com:443/rest/v1/auth '>
2022-02-08T23:24:51.753590+0530 [duoauthproxy.lib.http._DuoHTTPClientFactory#info] Stopping factory <_DuoHTTPClientFactory: b'https://api-xxxx[.]duosecurity[.]com:443/rest/v1/preauth '>
2022-02-08T23:24:59.357413+0530 [duoauthproxy.lib.log#info] (('10.106.54.143', 1645), sadks, 163): Duo authentication returned 'allow': 'Success. Logging you in...'
2022-02-08T23:24:59.357413+0530 [duoauthproxy.lib.log#info] (('10.106.54.143', 1645), sadks, 163): Returning response code 2: AccessAccept //DUO push successful
2022-02-08T23:24:59.357413+0530 [duoauthproxy.lib.log#info] (('10.106.54.143', 1645), sadks, 163): Sending response
2022-02-08T23:24:59.357413+0530 [duoauthproxy.lib.http._DuoHTTPClientFactory#info] Stopping factory <_DuoHTTPClientFactory: b'https://api-xxxx[.]duosecurity[.]com:443/rest/v1/auth '>
トラブルシュート
- C8000Vのデバッグ
IKEv2の場合:
debug crypto ikev2
debug crypto ikev2 client flexvpn
debug crypto ikev2 internal
debug crypto ikev2 packet
debug crypto ikev2 error
IPSecの場合
debug crypto ipsec
debug crypto ipsec error
2. DUO認証プロキシに関しては、ログファイルのプロキシ関連のログを確認します。(C:\Program Files\Duo Security Authentication Proxy\log)
ISEがプライマリ認証を拒否するエラーログのスニペットを次に示します。
2022-02-07T13:01:39.589679+0530 [duoauthproxy.lib.log#info] Sending proxied request for id 26 to ('10.197.243.116', 1812) with id 18
2022-02-07T13:01:39.589679+0530 [duoauthproxy.lib.log#info] Got response for id 18 from ('10.197.243.116', 1812); code 3
2022-02-07T13:01:39.589679+0530 [duoauthproxy.lib.log#info] (('10.106.54.143', 1645), sadks, 26): Primary credentials rejected - No reply message in packet
2022-02-07T13:01:39.589679+0530 [duoauthproxy.lib.log#info] (('10.106.54.143', 1645), sadks, 26): Returning response code 3: AccessReject