이 문서에서는 FlexVPN 툴킷을 사용하여 IOS에서 원격 액세스를 설정하는 방법에 대한 샘플 컨피그레이션을 제공합니다.
원격 액세스 VPN을 사용하면 다양한 운영 체제를 사용하는 최종 클라이언트가 인터넷과 같은 비보안 매체를 통해 회사 또는 홈 네트워크에 안전하게 연결할 수 있습니다.제시된 시나리오에서 IKEv2 프로토콜을 사용하여 Cisco IOS 라우터에서 VPN 터널이 종료됩니다.
이 문서는 EAP-MD5 방법을 통해 ACS(Access Control Server)를 사용하여 사용자를 인증하고 권한을 부여하는 방법을 보여줍니다.
Cisco IOS Router에는 ACS 5.3을 향한 2개의 인터페이스가 있습니다.
이 문서에 대한 특정 요건이 없습니다.
이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
ACS 5.3(패치 6 포함)
15.2(4)M 소프트웨어가 포함된 IOS 라우터
Windows 7 PC with AnyConnect 3.1.01065
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 규칙을 참조하십시오.
IKEv1 XAUTH는 1.5단계에서 사용되며 IOS 라우터에서 로컬로 그리고 RADIUS/TACACS+를 사용하여 원격으로 사용자를 인증할 수 있습니다.IKEv2는 XAUTH 및 1.5단계를 더 이상 지원하지 않습니다.IKE_AUTH 단계에서 수행되는 내장 EAP 지원을 포함합니다.IKEv2 설계에서 가장 큰 장점이 있으며 EAP는 잘 알려진 표준입니다.
EAP는 두 가지 모드를 지원합니다.
터널링 - EAP-TLS, EAP/PSK, EAP-PEAP 등
비 터널링 - EAP-MSCHAPv2, EAP-GTC, EAP-MD5 등
이 예에서는 비 터널링 모드의 EAP-MD5가 현재 ACS 5.3에서 지원되는 EAP 외부 인증 방법이므로 사용됩니다.
EAP는 인증 개시자(클라이언트)에서 responder(이 경우 IOS)에만 사용할 수 있습니다.
먼저 CA(Certificate Authority)를 생성하고 IOS 라우터에 대한 ID 인증서를 생성해야 합니다.클라이언트는 해당 인증서를 기반으로 라우터의 ID를 확인합니다.
IOS에서 CA의 구성은 다음과 같습니다.
crypto pki server CA grant auto hash sha1 eku server-auth client-auth
확장 키 사용(EAP에 필요한 서버-인증, RSA-SIG에 클라이언트 인증 필요)에 대해 기억해야 합니다.
crypto pki 서버 CA에서 no shutdown 명령을 사용하여 CA를 활성화합니다.
그런 다음 인증서에 대해 SCEP(Simple Certificate Enrollment Protocol)를 활성화하고 신뢰 지점을 구성합니다.
ip http server crypto pki trustpoint CA-self enrollment url http://10.1.1.2:80 fqdn 10.1.1.2 ip-address 10.1.1.2 subject-name cn=10.1.1.2,ou=TAC revocation-check none eku request server-auth client-auth
그런 다음 인증서를 인증하고 등록합니다.
(config)#crypto pki authenticate CA-self Certificate has the following attributes: Fingerprint MD5: 741C671C 3202B3AE 6E05161C 694CA53E Fingerprint SHA1: 8C99513C 2198470F 7CB58FA2 32D8AA8D FC31D1ED % Do you accept this certificate? [yes/no]: yes Trustpoint CA certificate accepted. R1(config)#crypto pki enroll CA-self % % Start certificate enrollment .. % Create a challenge password. You will need to verbally provide this password to the CA Administrator in order to revoke your certificate. For security reasons your password will not be saved in the configuration. Please make a note of it. Password: Re-enter password: % The subject name in the certificate will include: cn=10.1.1.2,ou=TAC % The subject name in the certificate will include: 10.1.1.2 % Include the router serial number in the subject name? [yes/no]: no % The IP address in the certificate is 10.1.1.2 Request certificate from CA? [yes/no]: yes % Certificate request sent to Certificate Authority % The 'show crypto pki certificate verbose CA-self' command will show the fingerprint. R1(config)# *Dec 2 10:57:44.141: CRYPTO_PKI: Certificate Request Fingerprint MD5: BF8EF4B6 87FA8162 9079F917 698A5F36 *Dec 2 10:57:44.141: CRYPTO_PKI: Certificate Request Fingerprint SHA1: AC13FEA3 295F7AE6 7014EF60 784E33AF FD94C41D R1(config)# *Dec 2 10:57:44.198: %PKI-6-CERTRET: Certificate received from Certificate Authority
AnyConnect에서 프롬프트 메시지를 표시하지 않으려면 AnyConnect 프로파일에 구성된 호스트 이름/IP 주소와 동일해야 합니다.
이 예에서는 cn=10.1.1.2입니다. 따라서 AnyConnect 10.1.1.2에서 AnyConnect xml 프로파일에 서버의 IP 주소로 입력됩니다.
Radius 및 AAA 인증 및 권한 부여를 구성해야 합니다.
aaa new-model radius-server host 192.168.56.202 key cisco aaa group server radius SERV server 192.168.56.202 aaa authentication login eap-list group SERV aaa authorization network eap-list group SERV
먼저 ACS에 새 네트워크 디바이스를 추가합니다(Network Resources(네트워크 리소스) > Network Devices and AAA Clients(네트워크 디바이스 및 AAA 클라이언트) > Create(생성).
사용자 추가(Users and Identity Stores > Internal Identity Stores > Users > Create):
권한 부여를 위해 사용자를 추가합니다.이 예에서는 IKEST입니다.비밀번호는 IOS에서 전송하는 기본값이므로 "cisco"여야 합니다.
그런 다음 사용자에 대한 권한 부여 프로파일을 만듭니다(Policy elements(정책 요소) > Authorization and Permissions(권한 부여 및 권한) > Network Access(네트워크 액세스) > Authorization Profiles(권한 부여 프로파일) > Create(생성)).
이 예에서는 POOL이라고 합니다.이 예에서는 Split-Tunnel AV Pair(접두사로) 를 입력하고 연결된 클라이언트에 할당할 IP 주소로 Framed-IP-Address를 입력합니다.지원되는 모든 AV 쌍의 목록은 여기에서 확인할 수 있습니다.http://www.cisco.com/en/US/docs/ios-xml/ios/sec_conn_ike2vpn/configuration/15-2mt/sec-apx-flex-rad.html
그런 다음 액세스 정책에서 EAP-MD5(인증) 및 PAP/ASCII(권한 부여용) 지원을 켜야 합니다.기본값은 다음 예에서 사용됩니다(Access Policies(액세스 정책) > Default Network Access(기본 네트워크 액세스)).
Access Policy(액세스 정책)에 대한 조건을 생성하고 생성된 권한 부여 프로파일을 할당합니다.이 경우 NDG:Location in All Locations(모든 위치의 위치)에 대한 조건이 생성되므로 모든 RADIUS 권한 부여 요청에 대해 POOL 권한 부여 프로파일(액세스 정책 > 액세스 서비스 > 기본 네트워크 액세스)이 제공됩니다.
사용자가 올바르게 인증할 수 있는 경우 IOS 라우터에서 테스트할 수 있어야 합니다.
R1#test aaa group SERV user3 Cisco123 new-code User successfully authenticated USER ATTRIBUTES username 0 "user3" addr 0 192.168.100.200 route-set 0 "prefix 10.1.1.0/24"
IKEv2 제안서 및 정책을 생성해야 합니다(CSCtn59317 참조). 이 예에서는 IP 주소(10.1.1.2) 중 하나에 대해서만 정책이 생성됩니다.
crypto ikev2 proposal PROP encryption 3des integrity sha1 group 2 crypto ikev2 policy 5 match address local 10.1.1.2 proposal PROP
그런 다음 가상 템플릿에 바인딩할 IKEV2 프로필 및 IPsec 프로필을 만듭니다.
컨피그레이션 가이드에서 권장하는 대로 http-url 인증서를 꺼야 합니다.
crypto ikev2 profile PROF match identity remote address 0.0.0.0 match identity remote key-id IKETEST authentication remote eap query-identity authentication local rsa-sig pki trustpoint CA-self aaa authentication eap eap-list aaa authorization user eap list eap-list IKETEST virtual-template 1 no crypto ikev2 http-url cert crypto ipsec transform-set transform1 esp-3des esp-sha-hmac crypto ipsec profile PROF set transform-set transform1 set ikev2-profile PROF interface Virtual-Template1 type tunnel ip unnumbered Ethernet0/0 tunnel mode ipsec ipv4 tunnel protection ipsec profile PROF
이 예에서는 ACS 컨피그레이션에서 생성된 사용자 IKEST를 기반으로 권한 부여가 설정됩니다.
IOS에서 CA 인증서를 내보냅니다(ID 인증서를 내보내고 첫 번째 부분만 가져와야 함).
R1(config)#crypto pki export CA-self pem terminal % CA certificate: -----BEGIN CERTIFICATE----- MIIB8zCCAVygAwIBAgIBATANBgkqhkiG9w0BAQUFADANMQswCQYDVQQDEwJDQTAe Fw0xMjExMjYxNzMzMzlaFw0xNTExMjYxNzMzMzlaMA0xCzAJBgNVBAMTAkNBMIGf MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvDR4lHOcrj42QfHpRuNu4EyFrLR8H TbPanXYV+GdCBmu53pDILE00ASEHByD6DYBx01EZuDsiolJ7t2MPTguB+YZe6V4O JbtayyxtZGmF7+eDqRegQHHC394adQQWl2ojgQiuTHeRDTqDJR8i5gN2Ee+KOsr3 +OjnHjUmXb/I6QIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE AwIBhjAfBgNVHSMEGDAWgBTH5Sdh69q4HAJulLQYLbYH0Nk9zzAdBgNVHQ4EFgQU x+UnYevauBwCbpS0GC22B9DZPc8wDQYJKoZIhvcNAQEFBQADgYEADtBLiNXnl+LC PIgJ0nl/jH5p2IwVlzwbPbZcOsZ9mn54QaqrhmhbHnmqKQJl/20+JPE6p+4noICq VBrxoiX2KYQ1OwmEScPpQ2XJ9vhGqtQ4Xcx3g20HhxxFDfp2XuW7hwU0W8dTCmZw 4vodj47qEXKI6pGuzauw9MN1xhkNarc= -----END CERTIFICATE-----
BEGIN CERTIFICATE와 END CERTIFICATE 사이에 부품을 복사하여 Windows의 메모장에 붙여넣고 CA.crt 파일로 저장합니다.
신뢰할 수 있는 루트 권한(file > Install Certificate > Place all certificates in the following store > Trusted Root Certification Authorities)을 두 번 클릭하여 이 인증서를 신뢰할 수 있는 루트 인증 기관(Trusted Root Authorities)에 설치해야 합니다.
C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Profile create a file "whether.xml"에서 다음을 붙여넣습니다.
<?xml version="1.0" encoding="UTF-8"?> <AnyConnectProfile xmlns="http://schemas.xmlsoap.org/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.xmlsoap.org/encoding/ AnyConnectProfile.xsd"> <ClientInitialization> <UseStartBeforeLogon UserControllable="true">false</UseStartBeforeLogon> <AutomaticCertSelection UserControllable="true"> false</AutomaticCertSelection> <ShowPreConnectMessage>false</ShowPreConnectMessage> <CertificateStore>All</CertificateStore> <CertificateStoreOverride>false</CertificateStoreOverride> <ProxySettings>Native</ProxySettings> <AllowLocalProxyConnections>true</AllowLocalProxyConnections> <AuthenticationTimeout>12</AuthenticationTimeout> <AutoConnectOnStart UserControllable="true">false</AutoConnectOnStart> <MinimizeOnConnect UserControllable="true">true</MinimizeOnConnect> <LocalLanAccess UserControllable="true">false</LocalLanAccess> <ClearSmartcardPin UserControllable="true">true</ClearSmartcardPin> <IPProtocolSupport>IPv4,IPv6</IPProtocolSupport> <AutoReconnect UserControllable="false">true <AutoReconnectBehavior UserControllable="false">DisconnectOnSuspend </AutoReconnectBehavior> </AutoReconnect> <AutoUpdate UserControllable="false">true</AutoUpdate> <RSASecurIDIntegration UserControllable="false"> Automatic</RSASecurIDIntegration> <WindowsLogonEnforcement>SingleLocalLogon</WindowsLogonEnforcement> <WindowsVPNEstablishment>LocalUsersOnly</WindowsVPNEstablishment> <AutomaticVPNPolicy>false</AutomaticVPNPolicy> <PPPExclusion UserControllable="false">Disable <PPPExclusionServerIP UserControllable="false"></PPPExclusionServerIP> </PPPExclusion> <EnableScripting UserControllable="false">false</EnableScripting> <EnableAutomaticServerSelection UserControllable="false">false <AutoServerSelectionImprovement>20</AutoServerSelectionImprovement> <AutoServerSelectionSuspendTime>4</AutoServerSelectionSuspendTime> </EnableAutomaticServerSelection> <RetainVpnOnLogoff>false </RetainVpnOnLogoff> </ClientInitialization> <ServerList> <HostEntry> <HostName>IOSEAP-MD5</HostName> <HostAddress>10.1.1.2</HostAddress> <PrimaryProtocol>IPsec <StandardAuthenticationOnly>true <AuthMethodDuringIKENegotiation>EAP-MD5</AuthMethodDuringIKENegotiation> <IKEIdentity>IKETEST</IKEIdentity> </StandardAuthenticationOnly> </PrimaryProtocol> </HostEntry> </ServerList> </AnyConnectProfile>
10.1.1.2 항목이 ID 인증서에 대해 입력된 CN=10.1.1.2과 정확히 같은지 확인합니다.
이 시나리오에서는 SSL VPN이 사용되지 않으므로 IOS에서 HTTP 서버가 비활성화되었는지 확인합니다(ip http 서버 없음). 그렇지 않으면 AnyConnect에서 "Use a browser to gain access"라는 오류 메시지가 표시됩니다.
AnyConnect에서 연결할 때 암호를 입력하라는 메시지가 표시됩니다.이 예에서는 생성된 User3입니다.
그 후에는 사용자가 연결됩니다.
R1#show ip inter brief | i Virtual Virtual-Access1 10.1.1.2 YES unset up up Virtual-Template1 10.1.1.2 YES unset up down R1# show ip route 192.168.100.200 Routing entry for 192.168.100.200/32 Known via "static", distance 1, metric 0 (connected) Routing Descriptor Blocks: * directly connected, via Virtual-Access1 Route metric is 0, traffic share count is 1 R1#show crypto ikev2 sa IPv4 Crypto IKEv2 SA Tunnel-id Local Remote fvrf/ivrf Status 1 10.1.1.2/4500 110.1.1.100/61021 none/none READY Encr: 3DES, Hash: SHA96, DH Grp:2, Auth sign: RSA, Auth verify: EAP Life/Active Time: 86400/94 sec IPv6 Crypto IKEv2 SA R1#show 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 Interface: Virtual-Access1 Uptime: 00:04:06 Session status: UP-ACTIVE Peer: 192.168.56.1 port 61021 fvrf: (none) ivrf: (none) Phase1_id: IKETEST Desc: (none) IKEv2 SA: local 10.1.1.2/4500 remote 10.1.1.100/61021 Active Capabilities:(none) connid:1 lifetime:23:55:54 IPSEC FLOW: permit ip 0.0.0.0/0.0.0.0 host 192.168.100.200 Active SAs: 2, origin: crypto map Inbound: #pkts dec'ed 1 drop 0 life (KB/Sec) 4160122/3353 Outbound: #pkts enc'ed 0 drop 0 life (KB/Sec) 4160123/3353
디버그(debug crypto ikev2)를 수행할 수 있습니다.
VPN에서 AnyConnect의 고급 옵션에서 Route Details를 선택하여 스플릿 터널링 네트워크를 확인할 수 있습니다.
IKEv2의 서명 해시 및 무결성 정책에 SHA1을 사용하는 경우(Cisco 버그 ID CSCtn59317 참조(등록된 고객만 해당)).
IOS ID 인증서의 CN은 ACS XML 프로파일의 호스트 이름과 같아야 합니다.
인증 중에 전달된 Radius AV 쌍을 사용하고 그룹의 권한 부여를 전혀 사용하지 않으려면 IKEv2 프로필에서 이 기능을 사용할 수 있습니다.
aaa authorization user eap cached
권한 부여는 항상 그룹/사용자 권한 부여에 비밀번호 "cisco"를 사용합니다.사용 중에 혼동될 수 있습니다.
aaa authorization user eap list SERV (without any paramaters)
AnyConnect에서 사용자 및 비밀번호 "cisco"로 전달된 사용자를 사용하여 권한을 부여하려고 합니다. 이는 사용자의 비밀번호가 아닐 수 있습니다.
문제가 발생할 경우 이러한 결과는 분석 및 Cisco TAC에 제공할 수 있는 출력입니다.
디버그 암호화 ikev2
디버그 암호화 ikev2 내부
DART 출력
SSL VPN을 사용하지 않는 경우 ip http 서버(ip http 서버 없음)를 비활성화하십시오. 그렇지 않으면 AnyConnect는 HTTP 서버에 연결을 시도하여 "Use a browser to gain access(브라우저를 사용하여 액세스를 얻음)"라는 결과를 수신합니다.
위의 컨피그레이션은 최소한의 작업 컨피그레이션을 표시하기 위한 참조를 위해 제공됩니다.
가능한 경우 NGC(Next Generation Cryptography)를 사용하는 것이 좋습니다.
마이그레이션에 대한 현재 권장 사항은 여기에서 확인할 수 있습니다.http://www.cisco.com/web/about/security/intelligence/nextgen_crypto.html
NGC 컨피그레이션을 선택할 때 클라이언트 소프트웨어와 헤드엔드 하드웨어 모두 이를 지원하는지 확인합니다.ISR 2세대 및 ASR 1000 라우터는 NGC에 대한 하드웨어 지원 때문에 헤드엔드로 권장됩니다.
AnyConnect에서는 AnyConnect 3.1 버전부터 NSA의 Suite B 알고리즘 스위트가 지원됩니다.