목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

인증 흐름

순서도

통신 과정

구성

C8000V의 컨피그레이션 단계(VPN Headend)

클라이언트 프로필(XML 프로필) 코드 조각

DUO 인증 프록시의 컨피그레이션 단계

ISE의 컨피그레이션 단계

DUO 관리 포털의 컨피그레이션 단계

다음을 확인합니다.

문제 해결

소개

이 문서에서는 Cisco IOS® XE 라우터에 대한 AnyConnect IPSec 연결을 위해 외부 2단계 인증을 구성하는 방법에 대해 설명합니다.

기고자: Sadhana K S 및 Rishabh Aggarwal Cisco TAC 엔지니어

사전 요구 사항

요구 사항

다음 주제에 대한 지식을 보유하고 있으면 유용합니다.

- 라우터에서 RA VPN 구성 경험

- ISE(Identity Services Engine) 관리

사용되는 구성 요소

이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.

- 버전 17.10.01a를 실행하는 Cisco Catalyst 8000V(C8000V)

- Cisco AnyConnect Secure Mobility Client 버전 4.10.04071

- 버전 3.1.0을 실행 중인 Cisco ISE

- Duo 인증 프록시 서버 (windows 10 또는 모든 Linux PC)

- Duo 웹 계정

- AnyConnect가 설치된 클라이언트 PC

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.

인증 흐름

AnyConnect 사용자는 ISE 서버에서 사용자 이름 및 비밀번호로 인증합니다. Duo Authentication Proxy 서버는 또한 푸시 알림(push notification) 형태의 추가 인증을 사용자의 모바일 디바이스로 전송한다.

순서도

인증 흐름도

통신 과정

1. 사용자는 C8000V에 대한 RAVPN 연결을 시작하고 기본 인증을 위한 사용자 이름 및 비밀번호를 제공합니다.

2. C8000V는 Duo 인증 프록시에 인증 요청을 보냅니다.

3. 그런 다음 Duo 인증 프록시가 기본 요청을 Active Directory 또는 RADIUS 서버로 전송합니다.

4. 인증 응답은 인증 프록시로 다시 전송됩니다.

5. 1차 인증에 성공하면 Duo 인증 프록시가 Duo 서버를 통해 2차 인증을 요청합니다.

6. 그런 다음 Duo 서비스는 보조 인증 방법(푸시, 전화 통화, 암호)에 따라 사용자를 인증합니다.

7. Duo 인증 프록시가 인증 응답을 수신합니다.

8. 응답이 C8000V로 전송됩니다.

9. 성공하면 AnyConnect 연결이 설정됩니다.

구성

구성을 완료하려면 다음 섹션을 고려하십시오.

C8000V의 컨피그레이션 단계(VPN Headend)

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 인증서가 없는 경우 ID 인증서를 설치하기 위해 신뢰 지점을 만듭니다. 인증서 생성에 대한 자세한 내용은 PKI의 Certificate Enrollment(인증서 등록)를 참조하십시오.

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. virtual-access int가 시작되는 가상 템플릿을 구성합니다인터페이스가 복제됩니다.

interface Virtual-Template20 type tunnel

ip unnumbered GigabitEthernet1

unnumbered 명령은 구성된 인터페이스(GigabitEthernet1)에서 IP 주소를 가져옵니다.

13. 모든 connection-relat를 포함하는 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 인증 프록시는 RADIUS 인증에서만 MS-CHAPv2를 지원합니다.

1단계. Duo 인증 프록시 서버를 다운로드하고 설치합니다.

Windows 시스템에 로그인하고 Duo 인증 프록시 서버를 설치합니다.

최소 1개의 CPU, 200MB의 디스크 공간 및 4GB 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네트워크 디바이스를 구성합니다.

참고: Duox.x.x.xAuthentication Proxy 서버의 IP 주소로 대체합니다.

ISE - 네트워크 디바이스

2단계. 의Shared Secret설명에 따라 를authproxy.cfgsecret구성합니다.

ISE - 공유 암호

3단계. 로Administration > Identities > Users이동합니다.AnyConnectAdd기본 인증을 위해 ID 사용자를 구성하려면 다음을 선택합니다.

ISE - 사용자

DUO 관리 포털의 컨피그레이션 단계

1단계. Duo 계정에 로그인합니다.

로Applications > Protect an Application이동합니다. 사용하려는 응용 프로그램을 클릭합니다Protect. (이 경우 RADIUS)

DUO - 애플리케이션

2단계. 사용할 애플리케이션에 대해 클릭합니다Protect. (이 경우 RADIUS)

통합 키, 비밀 키 및 API 호스트 이름을 복사하여 Duo 인증 프록시authproxy.cfg의 서버에 붙여넣습니다.

듀오 - RADIUS

이 값을 복사하고 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

참고: 서버를 구성할 때 Duo 서버에서 ikey, skey 및 api_host를 복사해야 합니다. '10.106.54.143'은 C8000V 라우터의 IP 주소이고 'cisco'는 radius 서버 컨피그레이션의 라우터에 구성된 키입니다.

이러한 변경 사항을 적용한 후 파일을 다시 저장하고 Duo Security Authentication Proxy Service(Duo Security Authentication Proxy 서비스)를 다시services.msc시작합니다.

3단계. 2차 인증을 위해 DUO에서 사용자를 생성합니다.

로Users > Add User이동하여 사용자 이름을 입력합니다.

참고: 사용자 이름은 기본 인증 사용자 이름과 일치해야 합니다.

을 클릭합니다.Add User 생성되면PhonesAdd Phone아래에서 을 클릭하고 전화 번호를 입력한 다음 을 클릭합니다Add Phone.

DUO - 전화기 추가

Type of authentication을 선택합니다.

DUO - 장치 정보

선택합니다Generate Duo Mobile Activation Code.

DUO - 전화 활성화

선택 Send Instructions by SMS.

DUO - SMS 전송

전화기로 전송된 링크를 클릭하면 DUO 앱이 그림과 같이 섹션의 사용자Device Info계정에 연결됩니다.

DUO - 장치 연결

다음을 확인합니다.

인증을 테스트하려면 AnyConnect를 통해 사용자의 PC에서 C8000V에 연결합니다.

기본 인증을 위한 사용자 이름 및 비밀번호를 입력합니다.

AnyConnect 연결

그런 다음 DUO가 모바일에 푸시하는 것을 수락합니다.

듀오 푸시

연결이 설정되었습니다.

VPN 헤드엔드에서 이를 확인할 수 있습니다.

1. IKEv2 parameters

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 . Crypto session detail for the vpn session

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 .Verification on ISE live logs

ISE에서 로Operations > Live Logs이동합니다. 기본 인증에 대한 인증 보고서를 볼 수 있습니다.

ISE - 라이브 로그

4. Verification on DUO authentication proxy

DUO Authentication Proxy(DUO 인증 프록시)에서 이 파일로 이동합니다. 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 '>

문제 해결

1. 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