Questo documento fornisce una configurazione di esempio di come configurare Accesso remoto su IOS utilizzando il toolkit FlexVPN.
La VPN ad accesso remoto consente ai client finali che utilizzano vari sistemi operativi di connettersi in modo sicuro alle reti aziendali o domestiche tramite un supporto non sicuro, ad esempio Internet. Nello scenario illustrato, il tunnel VPN viene terminato su un router Cisco IOS con protocollo IKEv2.
In questo documento viene illustrato come autenticare e autorizzare gli utenti tramite Access Control Server (ACS) con il metodo EAP-MD5.
Il router Cisco IOS ha due interfacce, una verso ACS 5.3:
Nessun requisito specifico previsto per questo documento.
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
ACS 5.3 con patch 6
Router IOS con software 15.2(4)M
PC con Windows 7 con AnyConnect 3.1.01065
Fare riferimento a Cisco Technical Tips Conventions per ulteriori informazioni sulle convenzioni dei documenti.
In IKEv1 XAUTH viene utilizzato nella fase 1.5, è possibile eseguire l'autenticazione degli utenti in locale su un router IOS e in remoto utilizzando RADIUS/TACACS+. IKEv2 non supporta più XAUTH e la fase 1.5. Contiene il supporto EAP incorporato, eseguito nella fase IKE_AUTH. Il vantaggio più grande è la progettazione IKEv2 e EAP è uno standard conosciuto.
EAP supporta due modalità:
Tunneling: EAP-TLS, EAP/PSK, EAP-PEAP, ecc.
Non tunneling: EAP-MSCHAPv2, EAP-GTC, EAP-MD5 ecc.
Nell'esempio, viene usato EAP-MD5 in modalità non tunneling perché è il metodo di autenticazione esterna EAP supportato attualmente in ACS 5.3.
EAP può essere utilizzato solo per l'iniziatore di autenticazione (client) al risponditore (IOS in questo caso).
Innanzitutto è necessario creare un'Autorità di certificazione (CA) e un certificato di identità per il router IOS. Il client verificherà l'identità del router in base a tale certificato.
La configurazione di CA su IOS è simile alla seguente:
crypto pki server CA grant auto hash sha1 eku server-auth client-auth
È necessario ricordare l'utilizzo esteso delle chiavi (Server-Auth necessario per EAP, per RSA-SIG è necessario anche Client-Auth).
Abilitare la CA utilizzando il comando no shutdown nella CA del server PKI crittografica.
Quindi, abilitare SCEP (Simple Certificate Enrollment Protocol) per il certificato e configurare il trust point.
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
Quindi, autenticare e registrare il certificato:
(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
Se non si desidera che i messaggi di richiesta in AnyConnect siano presenti, ricordare che può essere necessario usare lo stesso nome host o indirizzo IP configurato nel profilo AnyConnect.
Nell'esempio, cn=10.1.1.2. Pertanto, in AnyConnect 10.1.1.2 viene immesso come indirizzo IP del server nel profilo xml di AnyConnect.
È necessario configurare l'autenticazione e l'autorizzazione Radius e 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
Innanzitutto, aggiungere il nuovo dispositivo di rete in ACS (Risorse di rete > Dispositivi di rete e client AAA > Crea):
Aggiungere un utente (Utenti e archivi identità > Archivi identità interni > Utenti > Crea):
Aggiungere un utente per l'autorizzazione. In questo esempio, questo valore è IKETEST. La password deve essere "cisco" perché è l'impostazione predefinita inviata da IOS.
Creare quindi un profilo di autorizzazione per gli utenti (Elementi criteri > Autorizzazioni e autorizzazioni > Accesso alla rete > Profili di autorizzazione > Crea).
In questo esempio viene denominato POOL. Nell'esempio, viene immesso un doppino AV a tunnel diviso (come prefisso) e l'indirizzo IP con frame viene assegnato al client connesso come indirizzo IP. L'elenco di tutte le coppie AV supportate è disponibile qui: http://www.cisco.com/en/US/docs/ios-xml/ios/sec_conn_ike2vpn/configuration/15-2mt/sec-apx-flex-rad.html
Quindi, è necessario attivare il supporto di EAP-MD5 (per l'autenticazione) e PAP/ASCII (per l'autorizzazione) nei criteri di accesso. L'impostazione predefinita viene utilizzata in questo esempio (Criteri di accesso > Accesso di rete predefinito):
Creare una condizione per in Criteri di accesso e assegnare il profilo di autorizzazione creato. In questo caso viene creata una condizione per NDG:Posizione in tutte le posizioni, pertanto per tutte le richieste di autorizzazioni Radius verrà fornito il profilo di autorizzazione del pool (Criteri di accesso > Servizi di accesso > Accesso di rete predefinito):
Dovrebbe essere possibile eseguire il test su un router IOS se l'utente può autenticarsi correttamente:
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"
È necessario creare la proposta e il criterio IKEv2. Potrebbe non essere necessario fare riferimento a CSCtn59317. In questo esempio, i criteri vengono creati solo per uno degli indirizzi 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
Creare quindi un profilo IKEV2 e un profilo IPsec da associare a Virtual-Template.
Assicurarsi di disattivare il certificato http-url, come indicato nella guida alla configurazione.
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
In questo esempio, l'autorizzazione viene impostata in base all'utente IKETEST, creato nella configurazione ACS.
Esportare il certificato CA in IOS (accertarsi di esportare il certificato di identità e di ricevere solo la prima parte):
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-----
Copiare la parte tra BEGIN CERTIFICATE ed END CERTIFICATE e incollarla in Blocco note in Windows e salvarla come file CA.crt.
È necessario installarlo come in Autorità principali attendibili (fare doppio clic su file > Installa certificato > Archivia tutti i certificati nel seguente archivio > Autorità di certificazione principali attendibili):
In C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Profile creare un file "any.xml" e incollare quanto segue:
<?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>
Assicurarsi che la voce 10.1.1.2 sia esattamente la stessa di CN=10.1.1.2 inserita per il certificato di identità.
Poiché in questo scenario non viene utilizzata la VPN SSL, verificare che il server HTTP sia disabilitato in IOS (nessun server HTTP ip). In caso contrario, viene visualizzato un messaggio di errore in AnyConnect che dice "Usare un browser per ottenere l'accesso".
Quando ci si connette in AnyConnect, viene richiesta una password. In questo esempio, è stato creato User3
In seguito, l'utente viene connesso.
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
È possibile eseguire un debug (debug crypto ikev2).
Nelle opzioni avanzate di AnyConnect in VPN, è possibile controllare i dettagli della route per visualizzare le reti di tunneling suddivise:
Tenere presente quando SHA1 è presente nell'hash della firma e nei criteri di integrità in IKEv2 (fare riferimento all'ID bug Cisco CSCtn59317 (solo utenti registrati).
Il CN nel certificato di identità IOS deve essere uguale al nome host nel profilo XML ACS.
Se si desidera utilizzare coppie Radius AV passate durante l'autenticazione e non utilizzare l'autorizzazione del gruppo, è possibile utilizzare questo nel profilo IKEv2:
aaa authorization user eap cached
L'autorizzazione utilizza sempre la password "cisco" per l'autorizzazione di gruppi o utenti. Ciò potrebbe creare confusione durante l'utilizzo
aaa authorization user eap list SERV (without any paramaters)
perché proverà ad autorizzare l'uso dell'utente passato in AnyConnect come utente e della password "cisco", che probabilmente non è la password dell'utente.
In caso di problemi, si tratta di output che è possibile analizzare e fornire a Cisco TAC:
debug crypto ikev2
debug crypto ikev2 internal
Uscite DART
Se non si utilizza la VPN SSL, ricordare di disabilitare il server http ip (nessun server http ip). In caso contrario, AnyConnect tenterà di connettersi al server HTTP e riceverà il risultato, "Utilizzare un browser per ottenere l'accesso".
La configurazione precedente viene fornita come riferimento per mostrare una configurazione di lavoro minima.
Cisco consiglia di utilizzare la crittografia di nuova generazione (NGC), ove possibile.
Le raccomandazioni correnti per la migrazione sono disponibili all'indirizzo: http://www.cisco.com/web/about/security/intelligence/nextgen_crypto.html
Quando si sceglie la configurazione NGC, accertarsi che sia il software client che l'hardware headend la supportino. Si consiglia l'uso di router ISR generazione 2 e ASR 1000 come headend perché supportano NGC.
Sul lato AnyConnect, a partire dalla versione 3.1 di AnyConnect, è supportata la suite di algoritmi NSA Suite B.
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
14-Jan-2013 |
Versione iniziale |