-
null
The documentation set for this product strives to use bias-free language. For the purposes of this documentation set, bias-free is defined as language that does not imply discrimination based on age, disability, gender, racial identity, ethnic identity, sexual orientation, socioeconomic status, and intersectionality. Exceptions may be present in the documentation due to language that is hardcoded in the user interfaces of the product software, language used based on RFP documentation, or language that is used by a referenced third-party product. Learn more about how Cisco is using Inclusive Language.
Cisco Access Registrar supports the Extensible Authentication Protocol (EAP) to provide a common protocol for differing authentication mechanisms. EAP enables the dynamic selection of the authentication mechanism at authentication time based on information transmitted in the Access-Request. (This type of EAP authentication mechanism is called an authentication exchange.)
Extensible Authentication Protocols (EAP) provide for support of multiple authentication methods. Cisco AR 4.1 supports the following EAP authentication methods:
•EAP-Transport Level Security (TLS)
–PEAP Version 0 (Microsoft PEAP)
–PEAP Version 1 (Cisco PEAP)
In general, you enable each EAP method by creating and configuring a service of the desired type. Use the radclient test tool to confirm that the EAP service has been properly configured and is operational.
Both versions of Protected EAP (PEAP) are able to use other EAP methods as the authentication mechanism that is protected by PEAP encryption. For PEAP Version 0, the supported authentication methods are EAP-MSChapV2, EAP-SIM, EAP-TLS and EAP-Negotiate. For PEAP Version 1, the supported authentication methods are EAP-GTC, EAP-SIM, EAP-TLS and EAP-Negotiate.
The PEAP protocol consists of two phases: an authentication handshake phase and a tunnel phase where another complete EAP authentication exchange takes place protected by the session keys negotiated by phase one. Cisco AR 4.1 supports the tunneling of other EAP methods within the PEAP phase two exchange.
Cisco AR 4.1 supports the EAP-FAST authentication method. EAP-FAST uses the EAP-MSChapV2 method for credential provisioning and EAP-GTC for authentication. Credential provisioning typically occurs only during the client's initial EAP-FAST authentication. Subsequent authentications rely on the provisioned credential and will usually omit the provisioning step.
EAP-FAST is an authentication protocol designed to address the performance shortcomings of prior TLS-based EAP methods while retaining features such as identity privacy and support for password-based protocols. The EAP-FAST protocol is described by the IETF draft draft-cam-winget-eap-fast-00.txt.
The EAP-FAST credential is known as a Protected Access Credential (PAC) and contains information used to secure the authentication operations. Parts of the PAC are encrypted by the server and are not visible to other entities. Clients are expected to securely store PACs locally for use during authentication.
Configuring EAP-FAST involves creating and configuring the required EAP-MSChapV2 and EAP-GTC services as well as the EAP-FAST service with the appropriate parameters.
You can use the radclient test tool to confirm that the EAP services are properly configured and operational.
To enable EAP-FAST, use aregcmd to create and configure a service of type eap-fast.
Step 1 Launch aregcmd and create an EAP-FAST service.
cd /Radius/Services
add eap-fast-service
Step 2 Change directory to the service and set its type to eap-fast.
cd eap-fast-service
set type eap-fast
Step 3 Set the AuthorityIdentifier:
set AuthorityIdentifier authority-identifier
Step 4 : Set the AuthorityInformation:
set AuthorityInformation authority-information
Step 5 : Set the AuthentitcationService:
set AuthenticationService eap-gtc-service
Step 6 : Set the ProvisionService:
set ProvisionService eap-mschapv2-service
The follow example shows the default configuration for an EAP-FAST service:
[ //localhost/Radius/Services/eap-fast ]
Name = eap-fast
Description =
Type = eap-fast
IncomingScript~ =
OutgoingScript~ =
AuthorityIdentifier =
AuthorityInformation =
MaximumMessageSize = 1024
PrivateKeyPassword =
ServerCertificateFile =
ServerRSAKeyFile =
CACertificateFile =
CACertificatePath =
ClientVerificationMode = Optional
VerificationDepth = 4
EnableSessionCache = True
SessionTimeout = "5 Minutes"
AuthenticationTimeout = 120
CredentialLifetime = Forever
AuthenticationService =
ProvisionMode = Anonymous
ProvisionService =
AlwaysAuthenticate = True
Table 8-1 lists and describes the EAP-FAST service properties.
The EAP-FAST service manages a set of keys used to protect the security and integrity of the PACs it issues. The keys are stored in/Radius/Advanced/KeyStores/EAP-FAST and are maintained automatically requiring minimal administration. Administrators can specify the maximum number of keys that are stored and the frequency of key updates.
The following is the default KeyStores settings:
[ //localhost/Radius/Advanced/KeyStores/EAP-FAST ]
NumberOfKeys = 256
RolloverPeriod = "1 Week"
Table 8-2 defines the KeyStores properties.
There are two distinct phases to testing EAP-FAST: provisioning and authentication. In the instructions below, Step 2 and Step 3 test provisioning and Steps 4 and Step 5 test authentication. At least one successful provisioning phase must be completed prior to testing authentication. Testing EAP-FAST with radclient requires that the EAP-MSChapV2 and EAP-GTC services be configured and functional.
The following instructions and examples assume that the AlwaysAuthenticate parameter has been set to False for testing purposes. This permits the provisioning and authentication steps to be tested separately. Most installations will set AlwaysAuthenticate to True for production use, and radclient works with that setting, but might display extra error messages that you can ignore.
Complete the following steps to test EAP-FAST using radclient:
Step 1 Start radclient.
cd /cisco-ar/usrbin
./radclient -s
Step 2 Specify the inner provisioning method
tunnel eap-mschapv2
The only allowable method for provisioning is eap-mschapv2.
Step 3 Provision a new PAC:
simple_eap_fast_test user-name password
Step 4 Specify the inner authentication method.
tunnel eap-gtc
The only allowable method for authentication is eap-gtc.
Step 5 Authenticate using the PAC.
simple_eap_fast_test user-name password
The simple_eap_fast_test command passes its arguments to the inner authentication mechanism which in turn treats the arguments as a username and a password. The command in Step 3 should result in provisioning a new PAC, and Step 5 should result in successful authentication using that PAC. The following examples demonstrate:
The following example provisions a PAC for user bob.
pac show
No PAC(s) available to show
tunnel eap-mschapv2
PEAP tunnel method is eap-mschapv2
EAP-FAST tunnel method is eap-mschapv2
simple_eap_fast_test bob bob
EAP-FAST authentication status:
[0x0e07] TLS authentication succeeded
Response to EAP-FAST message was not an Access-Accept
p012
pac show
PAC 1 version 1 (219 bytes)
A-ID : AR-4.0
A-ID-Info : Cisco Systems Access Registrar
I-ID : bob
Expires : Never (0)
Key# : 12
TLV 1 : PAC-Key (1) mandatory (32 bytes)
TLV 2 : PAC-Opaque (2) mandatory (120 bytes)
TLV 3 : PAC-Info (9) mandatory (51 bytes)
In this example the simple_eap_fast_test command indicates that it did not receive an AccessAccept. This is normal because the provisioning step always results in an AccessReject even when a new PAC has been successfully provisioned. The last pac show command displayed some status information from the new PAC and is used to verify that provisioning succeeded and authentication can now be tested. The PAC information displayed will vary and depends on how EAP-FAST is configured.
The following example authenticates user bob (continuing from the PAC Provisioning example).
tunnel eap-gtc
PEAP tunnel method is eap-gtc
EAP-FAST tunnel method is eap-gtc
simple_eap_fast_test bob bob
EAP-FAST authentication status :
[0x0e07] TLS authentication succeeded
SUCCESS : Correctly formatted Session Keys received from the server
p01e
In this example, the EAP_FAST authentication using the PAC from the previous provisioning step succeeded. The AccessAccept packet received from Cisco AR can be displayed to confirm that it contains the expected attributes including the MS-MPPE session keys.
EAP-FAST might optionally use RSA certificates to securely create the tunnel that is used for PAC provisioning. However, the Cisco client does not support the use of certificates and the following parameters will be ignored and should be left at their default values:
PrivateKeyPassword
ServerCertificateFile
ServerRSAKeyFile
CACertificateFile
CACertificatePath
ClientVerificationMode
VerificationDepth
EnableSessionCache
SessionTimeout
The parameters for configuring certificate-based operation are identical to those used for PEAP and EAP-TLS.
Table 8-3 describes the parameters used for certificate-based authentication.
This section describes the radclient commands you can use to test EAP-FAST.
Use the eap-trace command to display additional client protocol trace information for EAP methods. Level is a number from 1 to 5 inclusively. Level 5 shows detailed hex dumps of all messages, level 4 shows a message trace without hex dumps, and levels 3 and below show status and error information. To turn off trace displays, set the level to 0.
Set the trace level for all EAP methods.
eap-trace level
For example, the following command sets the trace level to 4 for all EAP methods.
eap-trace 4
Set the trace level for the specified EAP method.
eap-trace method level
The following example sets the trace level to 5 for EAP-FAST only. The trace level for other EAP methods is not affected.
eap-trace eap-fast 5
Note The eap-trace command is for client-side trace information only and is independent of the server trace level that can be set using aregcmd.
The tunnel command is used to specify the inner provisioning and authentication methods for EAP-FAST. The specified EAP method type must agree with the server's configured methods or authentication will fail.
tunnel eap-method
For EAP-FAST provisioning, the only allowable tunnel method is eap-mchavp2. For EAP-FAST authentication, the only allowable tunnel method is eap-gtc.
The arguments are passed to the inner authentication method as its authentication parameters. If a PAC is not present, the tunnel method should be eap-mschapv2 and provisioning will occur. If a PAC is present, the tunnel method should be eap-gtc and authentication will occur.
simple_eap_fast_test username password
There are also variants for the simple test command for other EAP methods as shown in the following examples:
simple_eap_mschapv2_test bob bob
simple_eap_gtc_test bob bob
The pac command is used display, save, and delete PACs that are received from the server during testing. radclient maintains a cache of PACs that it knows about and that can be used for authentication testing. The current PAC cache can be displayed with the pac show command. PACs created during a test session can be stored to files with the pac save command, and reloaded in another session with the pac load command. The contents of the PAC cache are completely deleted with pac delete. If the optional parameter cache is included, PACs are also erased from disk.
pac load | save | show { hex } | delete { cache }
The pac show command displays the currently cached PACs. If the optional parameter hex is included, additional detailed information including hex dumps are included in the display output.
pac show { hex }
The pac load command loads any previously saved PACS from disk into the active cache.
The pac save command saves all PACs from the active cache to disk. Any previously existing PACS for the same user will be over-written.
The pac delete command deletes all PACs from the active cache. If the optional cache parameter is included then PACs are also erased from disk.
pac delete { cache }
You can manually provision EAP-FAST PACs to clients and avoid the use of the protocol provisioning phase. This might be desirable from a security perspective since the default provisioning protocol uses an anonymous (unauthenticated) method to construct the tunnel used to download the PAC to the client.
Manual provisioning involves exporting a PAC from Cisco AR to a file which is then copied to the client machine and used by the import utility. Once a PAC has been manually imported, the client should be able to authenticate via EAP-FAST while bypassing the initial provisioning phase. Care should be taken while storing and transporting PAC files since they contain information that potentially allows a client to authenticate via EAP-FAST.
PACs are exported from AR via the pac command which is a new utility for this release. (Note that this pac command is a stand-alone executable which is different from the Radclient pac command.) The pac command has two capabilities:
•Exports a PAC to a file
•Displays information about an existing PAC file
Use the pac export command to create a new PAC file. In the following example, eap-fast is the name of the Cisco AR service configured for EAP-FAST authentication, bob is the name of the user this PAC will be used for, and password is the password used to derive a key for encrypting the resulting file. (This password is not the same as the administrator's password). The PAC file will be named bob.pac by default. You can use the -f option to give the file a different name.
pac -s export eap-fast bob password
If you omit the password parameter, a default password will be used.
Note Using the default password is strongly discouraged for security reasons.
Use the pac show command to display information about a PAC file. In the following example, bob.pac is the name of the PAC file and password is the password used to decrypt the file contents.
pac -s show bob.pac password
The complete pac command syntax is as follows:
pac { options } export <service-name> <user-name> <file-password>
pac { options } show <file-name> file-<password>
Where:
-C <cluster>—Specifies the cluster to be used.
-N <user>—Specifies the user.
-P <user-password>—Specifies the password to be used.
-s —Logs in using defaults
-v—Enables verbose output
-f—Exports file name (default = {user-name}.pac)
EAP-GTC, defined in RFC 2284, is a simple method for transmitting a user's name and password to an authentication server. EAP-GTC should not be used except as an authentication method for PEAP Version 1 because the password is not protected.
To enable EAP-GTC, use aregcmd to create and configure a service of type eap-gtc.
Step 1 Launch aregcmd and create an EAP-GTC service.
cd /Radius/Services
add eap-gtc-service
Step 2 Change directory to the service and set its type to eap-gtc.
cd eap-gtc-service
set type eap-gtc
The follow example shows the default configuration for an EAP-GTC service:
[ //localhost/Radius/Services/eap-gtc-service ]
Name = eap-gtc
Description =
Type = eap-gtc
IncomingScript~ =
OutgoingScript~ =
AuthenticationTimeout = 120
UserService =
UserPrompt = "Enter password:"
UseLabels = False
Table 8-4 lists and describes the EAP-GTC specific properties for EAP-GTC authentication.
Step 3 Set the service's UserService to local-users or another local authentication service that is able to authenticate using clear-text passwords.
set UserService local-users
Step 4 If configuring for EAP-FAST, set the UseLabels property to TRUE.
To test the EAP-GTC service, launch radclient and use the simple_eap_gtc_test command. The simple_eap_gtc_test command sends an Access-Request for the designated user with the user's password.
The response packet should indicate an Access-Accept if authentication was successful. View the response packet to ensure the authentication was successful.
simple_eap_gtc_test bob bob
Packet: code = Access-Accept, id = 2, length = 104, attributes =
Service-Type = Framed
Framed-Protocol = PPP
Framed-IP-Address = 192.168.0.0
Framed-IP-Netmask = 255.255.255.0
Framed-Routing = None
Framed-MTU = 1500
Framed-Compression = VJ TCP/IP header compression
Framed-IPX-Network = 1
EAP-Message = 03:01:00:04
Ascend-Idle-Limit = 1800
Message-Authenticator = d3:4e:b1:7e:2d:0a:ed:8f:5f:72:e0:01:b4:ba:c7:e0
Cisco AR 4.1 supports the new AAA Cisco-proprietary protocol called Light Extensible Authentication Protocol (LEAP), a proprietary Cisco authentication protocol designed for use in IEEE 802.11 wireless local area network (WLAN) environments. Important features of LEAP include:
•Mutual authentication between the network infrastructure and the user
•Secure derivation of random, user-specific cryptographic session keys
•Compatibility with existing and widespread network authentication mechanisms (e.g., RADIUS)
•Computational speed
Note Cisco AR supports a subset of EAP to support LEAP. This is not a general implementation of EAP for Cisco AR.
The Cisco-Wireless or Lightweight Extensible Authentication Protocol is an EAP authentication mechanism where the user password is hashed based on an MD4 algorithm and verified by a challenge from both client and server.
To enable EAP-LEAP, use aregcmd to create and configure a service of type eap-leap. When you create an EAP-LEAP service type, you must also specify a UserService to perform AAA service. The UserService can be any configured authentication service.
Step 1 Launch aregcmd and create an EAP-LEAP service.
cd /Radius/Services
add eap-leap-service
Step 2 Set the service type to eap-leap.
cd eap-leap-service
set type eap-leap
[ //localhost/Radius/Services/eap-leap-service ]
Name = newone
Description =
Type =
IncomingScript~ =
OutgoingScript~ =
AuthenticationTimeout = 120
UserService =
Step 3 Set the UserService property to a configured authentication service.
Cisco AR 4.1 supports EAP-MD5, or MD5-Challenge, another EAP authentication exchange. In EAP-MD5 there is a CHAP-like exchange and the password is hashed by a challenge from both client and server to verify the password is correct. Once verified correct, the connection proceeds, although the connection is periodically re-challenged (per RFC 1994).
Specify type eap-md5 when you create an EAP-MD5 service. When you create an EAP-MD5 service type, you must also specify a UserService to perform AAA service. The UserService can be any configured authentication service.
To enable EAP-MD5, use aregcmd to create and configure a service of type eap-md5. When you create an EAP-MD5 service type, you must also specify a UserService to perform AAA service. The UserService can be any configured authentication service.
Step 1 Launch aregcmd and create an EAP-LEAP service.
cd /Radius/Services
add eap-md5-service
Step 2 Set the service type to eap-md5.
cd eap-md5-service
set type eap-md5
[ //localhost/Radius/Services/eap-md5-service ]
Name = newone
Description =
Type =
IncomingScript~ =
OutgoingScript~ =
AuthenticationTimeout = 120
UserService =
Step 3 Set the UserService property to a configured authentication service.
EAP-Negotiate is a special service used to select at run-time the EAP service to be used to authenticate the client. EAP-Negotiate is configured with a list of candidate EAP services that represent the allowable authentication methods in preference order. When an EAP session begins, the EAP-Negotiate service tires the first service in the list. If the client does not support that method, it will respond with an EAP-Nak message which triggers EAP-Negotiate to try the next method on the list until a valid method is found or the list is exhausted in which case authentication fails.
EAP-Negotiate is useful when the client population has deployed a mix of different EAP methods that must be simultaneously supported by Cisco AR. It can be difficult or impossible to reliably distinguish which clients require which methods simply by examining RADIUS attributes or other packet properties. EAP-Negotiate solves this problem by using the method negotiation feature of the EAP protocol. Negotiation can be used to select the primary EAP method used for authentication and also to select the inner method for PEAP.
To enable EAP-Negotiate, first use aregcmd to create and configure the EAP services that will be used for authentication, then create and configure a service of type eap-negotiate.
Step 1 Launch aregcmd and create an EAP-LEAP service.
cd /Radius/Services
add eap-negotiate-service
Step 2 Set the service type to eap-negotiate.
cd eap-negotiate-service
set type eap-negotiate
[ //localhost/Radius/Services/negotiate ]
Name = negotiate
Description =
Type = eap-negotiate
IncomingScript~ =
OutgoingScript~ =
AuthenticationTimeout = 120
ServiceList =
Step 3 Set the ServiceList property to a list of pre-configured EAP authentication services.
The ServiceList property lists the names of the EAP services that can be negotiated with this instance of EAP-Negotiate. The ServiceList property is a space-separated list and must consist of valid EAP service name, not service types, in preference order from left to right. Each service and type on the list must be unique; duplicates are not allowed.
set ServiceList "eap-leap-service eap-md5-service peap-v1-service"
EAP-Negotiate can also be used to negotiate the inner tunnel service used for phase two of PEAP-V0 or PEAP-V1. To do this, create and configure a service of type eap-negotiate. The ServiceList can only contain services that are legal for the version of PEAP that it is used with. Set the PEAP service's TunnelService parameter to the name of the eap-negotiate service.
Note Not all supplicants support negotiation of the PEAP inner method. EAP-Negotiate can only be used with supplicants that can use EAP-Nak to reject an unsupported inner method.
You can test EAP-Negotiate using the same radclient commands used to test the other EAP services. For example, you can use the commands for testing eap-leap and peap-v1.
EAP-MSChapv2 is based on draft-kamath-pppext-eap-mschapv2-00.txt, an informational IETF draft document. EAP-MSChapv2 encapsulates the MSChapV2 protocol (specified by RFC 2759) and can be used either as an independent authentication mechanism or as an inner method for PEAP Version 0 (recommended).
To enable EAP-MSChapv2, use aregcmd to create and configure a service of type eap-mschapv2.
Step 1 Launch aregcmd and create an EAP-MSChapV2 service.
cd /Radius/Services
add eap-mschapv2
Note This example named the service eap-mschapv2, but you can use any valid name for your service.
Step 2 Set the service's type to eap-mschapv2.
cd eap-mschapv2
set Type eap-mschapv2
[ //localhost/Radius/Services/eap-mschapv2 ]
Name = eap-mschapv2
Description =
Type = eap-mschapv2
IncomingScript~ =
OutgoingScript~ =
AuthenticationTimeout = 120
UserService =
SystemID =
Step 3 Set the service's UserService to local-users or another local authentication service that is able to authenticate using MSChapV2.
set UserService local-users
Step 4 You might (optionally) set a string for System ID that identifies the sender of the MSChapV2 challenge message, as in the following:
set SystemID system_ID_string
To test the EAP-MSChapVersion 2 service using radclient, perform the following the steps:
Step 1 Launch radclient.
Step 2 Use the simple_eap_mschapv2_test command to authenticate using EAP-MSChapV2, as in the following:
simple_eap_mschapv2_test bob bob
p006
The simple_eap_mschapv2_test command above sends an Access-Request for user bob with the user's password. The response packet should indicate an Access-Accept if authentication was successful.
Step 3 View the response packet to ensure the authentication was successful.
p006
Packet: code = Access-Accept, id = 4, length = 104, attributes =
Service-Type = Framed
Framed-Protocol = PPP
Framed-IP-Address = 192.168.0.0
Framed-IP-Netmask = 255.255.255.0
Framed-Routing = None
Framed-MTU = 1500
Framed-Compression = VJ TCP/IP header compression
Framed-IPX-Network = 1
EAP-Message = 03:01:00:04
Ascend-Idle-Limit = 1800
Message-Authenticator = 27:90:7e:20:78:34:43:2e:9d:cd:a8:75:82:53:03:65
Cisco AR 4.1supports EAP-SIMv16. In a GSM network a subscriber is issued a smart card called the subscriber identity module (SIM) that contains a secret key (Ki) and an International Mobile Subscriber Identity (IMSI). The key (Ki) is also stored in the GSM authentication center located with the Home Location Registry (HLR).
An access point uses the Cisco AR RADIUS server to perform EAP-SIM authentication of mobile clients. Cisco AR must obtain authentication information from the HLR. Cisco AR contacts the MAP gateway that performs the MAP protocol over SS7 to the HLR.
To enable EAP-SIM authentication, use aregcmd to create and configure a service of type eap-sim.
Step 1 Launch aregcmd and create an EAP-TLS service.
cd /Radius/Services
add eap-sim-service
Step 2 Change directory to the service and set its type to eap-sim.
cd eap-sim-service
set Type eap-sim
[ //localhost/Radius/Services/eap-sim-service ]
Name = eap-sim
Description =
Type = eap-sim
IncomingScript~ =
OutgoingScript~ =
OutageScript~ =
MultipleServersPolicy = Failover
NumberOfTriplets = 2
UseSimDemoTriplets = False
AlwaysRequestIdentity = False
EnableIdentityPrivacy = False
PseudonymSecret = secret
PseudonymRenewtime = "24 Hours"
PseudonymLifetime = Forever
EnableReauthentication = False
MaximumReauthentications = 16
ReauthenticationTimeout = 3600
ReauthenticationRealm =
TripletCacheTimeout = 120
AuthenticationTimeout = 120
UseProtectedResults = True
RemoteServers/
Note The EAP-SIM property OutagePolicy present in earlier versions of Cisco AR is no longer part of the EAP-SIM configuration.
EAP-Transport Level Security (EAP-TLS), described in RFC 2716, is an authentication method designed to mitigate several weaknesses of EAP. EAP-TLS leverages TLS, described in RFC 2246, to achieve certificate-based authentication of the server and (optionally) the client. EAP-TLS provides many of the same benefits as PEAP but differs from it in the lack of support for legacy authentication methods.
To enable EAP-TLS authentication, use aregcmd to create and configure a service of type eap-tls.
Step 1 Launch aregcmd and create an EAP-TLS service.
cd /Radius/Services
add eap-tls-service
Step 2 Change directory to the service and set its type to eap-tls.
cd eap-tls-service
set Type eap-tls
[ //localhost/Radius/Services/eap-tls-service ]
Name = eap-tls
Description =
Type = eap-tls
IncomingScript~ =
OutgoingScript~ =
MaximumMessageSize = 1024
PrivateKeyPassword =
ServerCertificateFile =
ServerRSAKeyFile =
CACertificateFile =
CACertificatePath =
ClientVerificationMode = Optional
VerificationDepth = 4
EnableSessionCache = True
SessionTimeout = "5 Minutes"
AuthenticationTimeout = 120
Table 8-6 describes the EAP-TLS configuration properties:
To test the EAP-TLS service, launch radclient and use the simple_eap_tls_test command, as in the following:
simple_eap_tls_test arg1
The argument is arbitrary for the simple_eap_tls_test command and can be anything. (In the future, the argument can be used to select a client certificate.)
You can test EAP-TLS using client certificates verified by the server during the TLS exchange. The client certificate file and RSA key file must reside in /cisco-ar/pki and be named client-cert.pem and client-key.pem respectively. Both files must be in PEM format.
Cisco AR supports the Extensible Authentication Protocol Tunneled TLS (EAP-TTLS). EAP-TTLS is an EAP protocol that extends EAP-TLS. In EAP-TLS, a TLS handshake is used to mutually authenticate a client and server. EAP- TTLS extends this authentication negotiation by using the secure connection established by the TLS handshake to exchange additional information between client and server.
EAP-TTLS leverages TLS (RFC 2246) to achieve certificate-based authentication of the server (and optionally the client) and creation of a secure session that can then be used to authentication the client using a legacy mechanism. EAP-TTLS provides several benefits:
•Industry standard authentication of the server using certificates (TLS)
•Standardized method for session key generation using TLS PRF
•Strong mutual authentication
•Identity privacy
•Fast reconnect using TLS session caching
•EAP message fragmentation
•Secure support for legacy client authentication methods
EAP-TTLS is a two-phase protocol. Phase 1 conducts a complete TLS session and derives the session keys used in Phase 2 to securely tunnel attributes between the server and the client. The attributes tunneled during Phase 2 can be used to perform additional authentication(s) via a number of different mechanisms.
The authentication mechanisms that can be used during Phase 2 include PAP, CHAP, MS-CHAP, MS-CHAPv2, and EAP. If the mechanism is EAP, then several different EAP methods are possible.
The Phase 2 authentication can be performed by the local AAA server (the same server running EAP-TTLS) or it can be forwarded to another server (known as the home AAA server). In the latter case, the home server has no involvement in the EAP-TTLS protocol and can be any AAA service that understands the authentication mechanism in use and is able to authenticate the user. It is not necessary for the home server to understand EAP-TTLS.
Configuring EAP-TTLS involves two major tasks:
1. Configuring the TLS parameters used for Phase 1
2. Selecting the Phase 2 authentication methods and specifying whether authentication is performed locally or forwarded to the home server.
If authentication is forwarded, the configuration must include the identity of the remote home server and its shared secret.
You configure EAP-TTLS using the aregcmd CLI to create the appropriate services and specify their parameters. Use the radclient test tool to confirm that the services have been properly configured and are operational.
To enable EAP-TTLS authentication, use aregcmd to create and configure a service of type eap-ttls.
Step 1 Launch aregcmd and create an EAP-TTLS service.
cd /Radius/Services
add eap-ttls-service
Step 2 Change directory to the service and set its type to eap-ttls.
cd eap-ttls-service
set Type eap-ttls
[ //localhost/Radius/Services/eap-ttls-service ]
Name = eap-ttls
Description =
Type = eap-ttls
IncomingScript~ =
OutgoingScript~ =
MaximumMessageSize = 1024
PrivateKeyPassword =
ServerCertificateFile =
ServerRSAKeyFile =
CACertificateFile =
CACertificatePath =
ClientVerificationMode = Optional
VerificationDepth = 4
EnableSessionCache = True
SessionTimeout = "5 Minutes"
AuthenticationTimeout = 120
AuthenticationService =
Table 8-7 describes the EAP-TTLS configuration properties:
|
|
---|---|
IncomingScript |
Optional script Cisco AR server runs when it receives a request from a client for PEAP-v0 service |
OutgoingScript |
Optional script Cisco AR server runs before it sends a response to a client using PEAP-v0 |
MaximumMessageSize |
Indicates the maximum length in bytes that a PEAP or EAP-TLS message can have before it is fragmented. |
PrivateKeyPassword |
The password used to protect the server's private key. |
ServerCertificateFile |
The full pathname of the file containing the server's certificate or certificate chain used during the TLS exchange. The pathname can be optionally prefixed with a special string that indicates the type of encoding used for the certificate. The two valid encoding prefixes are PEM and DER. If an encoding prefix is not present, the file is assumed to be in PEM format. |
ServerRSAKeyFile |
The full pathname of the file containing the server's RSA private key. The pathname can be optionally prefixed with a special string that indicates the type of encoding used for the certificate. The two valid encoding prefixes are "PEM" and "DER". If an encoding prefix is not present, the file is assumed to be in PEM format. The following example assumes that the subdirectory pki under /cisco-ar contains the server's certificate file. The file server-key.pem is assumed to be in PEM format. The file extension .pem is not significant. set ServerRSAKeyFile PEM:/cisco-ar/pki/server-key.pem |
CACertificateFile |
The full pathname of the file containing trusted CA certificates used for client verification. The file can contain more than one certificate, but all certificates must be in PEM format. Note DER encoding is not allowed. |
CACertificatePath |
The name of a directory containing trusted CA certificates (in PEM format) used for client verification. This parameter is optional, and if used, there are some special preparations required for the directory it references. Each certificate file in this directory must contain exactly one certificate in PEM format. The server looks up the certificate files using the MD5 hash value of the certificate's subject name as a key. The directory must therefore also contain a set of symbolic links each of which points to an actual certificate file. The name of each symbolic link is the hash of the subject name of the certificate. For example, if a certificate file named ca-cert.pem is located in the CACertificatePath directory, and the MD5 hash of the subject name contained in ca-cert.path.pem is 1b96dd93, then a symbolic link named 1b96dd93 must point to ca-cert.pem. If there are subject name collisions such as multiple certificates with the same subject name, each link name must be indexed with a numeric extensions as in 1b96dd93.0 and 1b96dd93.1. See rehash-ca-certs Utility for information about how to create the required certificate file hash links. |
ClientVerificationMode |
Specifies the type of verification used for client certificates. Must be set to one of RequireCertificate, None, or Optional. •RequireCertificate causes the server to request a client certificate and authentication fails if the client refuses to provide one. •None will not request a client certificate. •Optional causes the server to request a client certificate but the client is allowed to refuse to provide one. |
VerificationDepth |
Specifies the maximum length of the certificate chain used for client verification. |
EnableSessionCache |
Specifies whether TLS session caching (fast reconnect) is enabled or not. Set to True to enable session caching; otherwise set to False. |
SessionTimeout |
If TLS session caching (fast reconnect) is enabled, SessionTimeout specifies the maximum lifetime of a TLS session. Expired sessions are removed from the cache and require a subsequent full authentication. SessionTimeout is specified as a string consisting of pairs of numbers and units, where units might be one of the following: M, Minute, Minutes, H, Hour, Hours, D, Day, Days, W, Week, Weeks, as in the following: Set SessionTimeout "1 Hour 45 Minutes" |
AuthenticationTimeout |
Mandatory; specifies time (in seconds) to wait before an authentication request times out. The default is 120. |
AuthenticationService |
Mandatory; specifies the authentication service to use to authenticate users. See Configuring an EAP-TTLS Authentication Service for more information. Note The authentication service must exist before you can save the EAP-TTLS service configuration. |
The EAP-TTLS service can authenticate users by with either a legacy method such as PAP, CHAP, MSCHAP, or MSCHAPv2 or with an EAP method such as EAP-MSCHAPv2 or EAP-GTC. The authentication can be performed by the local server (the same server running EAP-TTLS) or it can be forwarded to a remote AAA server (the home server for the user's domain).
This section provides examples of several different ways to configure an EAP-TTLS authentication service. The following examples assume that you are using aregcmd and have already created the EAP-TTLS service.
Note After you make a configuration change, you must save the configuration before it can be used.
You can use a service like the local-users service (created as part of the example configuration) to authenticate users in the local UserList.
set AuthenticationService local-users
This service can be used to authenticate using PAP, CHAP, MSCHAP, and MSCHAPv2.
This example uses a service named eap-mschapv2 for authentication. Attempts to authenticate using any other method than EAP-MSChapV2 (assuming the service type is also eap-mschapv2) will fail.
set AuthenticationService eap-mschapv2
You can use the EAP-negotiate method to authenticate using more than one EAP type. The following example defines an EAP service named eap-negotiate that can negotiate EAP-MSChapV2 or EAP-GTC then configures an EAP-TTLS service to authenticate using that service.
Step 1 Create a service of type eap-negotiate.
cd /Radius/Services
add eap-nego
cd eap-nego
set Type eap-negotiate
set ServiceList "eap-mschapv2 eap-gtc"
Step 2 Configure the EAP-TTLS AuthenticationService.
cd /Radius/Services/eap-ttls
set AuthenticationService eap-nego
You can configure EAP-TTLS to authenticate using both legacy and EAP methods with a Group service using an OR result rule. A configuration like that shown in the following example first attempts to authenticate with the eap-negotiate service. If that fails, the server attempts to authenticate with the local-users service.
Step 1 Create the Group service
cd /Radius/Services
add local-or-eap
cd local-or-eap
set Type group
set ResultRule OR
cd GroupServices
add 1 eap-negotiate
add 2 local-users
Step 2 Configure the EAP-TTLS AuthenticationService.
cd /Radius/Services/eap-ttls
set AuthenticationService local-or-eap
You can configure an EAP-TTLS service to forward authentication to a remote AAA server known (or the home server). The following configures a RADIUS service to use a remote server, then configures EAP-TTLS to use that service for authentication.
The first step in the following example configures a remote RADIUS server (aaa-remote) with its IP address and the shared secret that it shares with the local server. You might also specify other important parameters such as ports, timeouts, and maximum number of retries. See Services, page 4-12, for information about configuring RADIUS services.
Step 1 Configure a remote AAA server.
cd /Radius/RemoteServers
add aaa-remote
cd aaa-remote
set Protocol Radius
set IPAddress 10.1.2.3
set SharedSecret secret
The following step configures a RADIUS service to use the remote server created in the previous step. You might also configure other important parameters such as the failover strategy. See Services, page 4-12, for information about configuring RADIUS services.
Step 2 Configure an AAA service.
cd /Radius/Services
add home
cd home
set Type Radius
cd RemoteServers
add 1 aaa-remote
Step 3 Configure the EAP-TTLS AuthenticationService:
cd /Radius/Services/eap-ttls
set AuthenticationService home
Other configurations are also possible. For example, a group service can be used to perform some authentications locally and forward others to a remote server.
To test the EAP-TLS service, launch radclient and use the simple_eap_ttls_test command. The simple_eap_ttls_test command has the following syntax:
simple_eap_ttls_test identity password { method }
Where:
identity is the user's name.
password is the user's password
method is one of: PAP, CHAP, MSChap, MSChapV2, or PEAP.
Note If the method parameter is EAP, the tunnel command must be used to specify the EAP method type.
The following example uses EAP-TTLS with PAP as the Phase 2 method to authenticate a user named bob whose password is bob (from the example configuration).
Step 1 Launch radclient.
cd /cisco-ar/usrbin
./radclient -s
Step 2 Authenticate using EAP-TTLS PAP.
simple_eap_ttls_test bob bob pap
The following commands show how to test the other valid legacy methods.
simple_eap_ttls_test bob bob chap
simple_eap_ttls_test bob bob mschap
simple_eap_ttls_test bob bob mschapv2
The following example uses EAP-TTLS with EAP-MSChapV2 as the Phase 2 method to authenticate a user named bob whose password is bob (from the example configuration). Issue the tunnel command to specify the Phase 2 EAP method, then issue the simple_eap_ttls_test command with eap as a method type.
Step 1 Launch radclient
cd /cisco-ar/usrbin
./radclient -s
Step 2 Authenticate using EAP-TTLS and EAP-MSChapV2.
tunnel eap-mschapv2
simple_eap_ttls_test bob bob eap
To test with a different EAP method, use the tunnel command to specify the method as shown in the following command to specify EAP-TLS.
tunnel eap-tls
simple_eap_ttls_test bob bob eap
The rehash-ca-certs utility works with the CACertificatePath property and enables you to create the required certificate file hash links (similar to those used with PEAP and EAP-TLS). The rehash-ca-certs utility is only used when the server is validating certificates from the client (which is optional and not a common case for EAP-TTLS).
The syntax for the rehash-ca-certs utility is:
rehash-ca-certs { -v } path1 { path2 ... pathn }
Each directory path specified on the command line is scanned by the rehash-ca-certs utility for filenames with the pem extension (such as ca-cert.pem) and the appropriate hash link is created as described above. Before creating links, rehash-ca-certs first removes all existing links in the directory, so each invocation creates fresh links. The -v option enables verbose output.
The following is an example of the rehash-ca-certs utility:
./rehash-ca-certs ../pki
start rehashing ../pki
client-key.pem does not contain a PEM certificate
finished rehashing
The rehash-ca-certs utility warns about PEM files that do not contain certificates.
This section provides a summary of the radclient commands you can use to test PEAP and EAP-TLS.
Use the eap-trace command to display additional client protocol trace information for EAP methods. Set the level to a number from 1 to 5 inclusively. Level 5 shows detailed hexadecimal dumps of all messages. Level 4 shows a message trace without hexadecimal dumps. Levels 3 and below show status and error information. To turn off trace displays, set the level to 0.
Use eap-trace level to set the trace level for all EAP methods. The following example command sets the trace level to 4 for all EAP methods:
eap-trace 4
Use eap-trace method level to set the trace level for the specified EAP method. The following example command sets the trace level to 5 for PEAP Version0 only. The trace level for other EAP methods is not affected.
eap-trace peap-v0 5
Note The eap-trace command is for client-side trace information only and is independent of the server trace level you set using aregcmd.
Use the tunnel command to specify the inner authentication method for PEAP. The specified EAP method type must agree with the server's configured authentication method or authentication will fail.
tunnel eap-method
For PEAP Version 0, the allowable tunnel methods are EAP-MSCHAPV2 and EAP-SIM. For PEAP Version 1, the allowable tunnel methods are EAP-GTC and EAP-SIM.
simple_eap_mschapv2_test username password
simple_eap_gtc_test username password
simple_eap_peapv0_test arg1 arg2
The arguments are passed to the inner authentication method as its authentication parameters. For EAP-MSChapv2 the arguments are username and password; for EAP-SIM they are IMSI and key.
simple_eap_peapv1_test arg1 arg2
The arguments are passed to the inner authentication method as its authentication parameters. For EAP-GTC the arguments are username and password; for EAP-SIM they are IMSI and key.
simple_eap_tls_test arg1
Protected EAP (PEAP) is an authentication method designed to mitigate several weaknesses of EAP. PEAP leverages TLS (RFC 2246) to achieve certificate-based authentication of the server (and optionally the client) and creation of a secure session that can then be used to authenticate the client. PEAP provides several benefits:
•Industry standard authentication of the server using certificates (TLS)
•Standardized method for session key generation using TLS PRF
•Strong mutual authentication
•Identity privacy
•Fast reconnect using TLS session caching
•EAP message fragmentation
•Secure support for legacy client authentication methods
Cisco AR 4.1 supports the two major existing variants of PEAP, PEAP Version 0 (Microsoft PEAP) and PEAP Version 1 (Cisco PEAP). PEAP Version 0 is described in IETF drafts draft-kamath-pppext-peapv0-00.txt and draft-josefsson-pppext-eap-tls-eap-02.txt. This version of PEAP can use either EAP-MSChapV2 or EAP-SIM as an authentication method. PEAP Version 1 is described by IETF draft draft-zhou-pppext-peapv1-00.txt. PEAP Version 1 can use either EAP-GTC or EAP-SIM as an authentication method.
This section describes configuring PEAP Version 0 and testing it with radclient.
To enable PEAP Version 0, use aregcmd to create and configure a service of type peap-v0.
Step 1 Launch aregcmd and create a PEAP Version 0 service.
cd /Radius/Services
add peap-v0-service
Step 2 Set the service's type to peap-v0.
cd peap-v0-service
set Type peap-v0
[ //localhost/Radius/Services/peap-v0-service ]
Name = peap-v0
Description =
Type = peap-v0
IncomingScript~ =
OutgoingScript~ =
MaximumMessageSize = 1024
PrivateKeyPassword =
ServerCertificateFile =
ServerRSAKeyFile =
CACertificateFile =
CACertificatePath =
ClientVerificationMode = Optional
VerificationDepth = 4
EnableSessionCache = True
SessionTimeout = "5 Minutes"
AuthenticationTimeout = 120
TunnelService =
EnableWPS = FALSE
Step 3 Set the service's TunnelService property to the name of an existing EAP-MSCHAPV2 or EAP-SIM service.
set TunnelService name_of_EAP-MSCHAPv2_service
or
set TunnelService name_of_EAP-SIM_service
Table 8-8 describes the PEAP service properties for PEAP Version 0.
To test the PEAP Version 0, complete the following steps:
Step 1 Launch radclient.
Step 2 Specify the inner authentication method, eap-mschapv2 or eap-sim, as in the following.
tunnel eap-mschapv2
or
tunnel eap-sim
Step 3 Use the simple_eap_peapv0_test command to authenticate using PEAP Version 0, as in the following:
simple_eap_peapv0_test arg1 arg2
The simple_eap_peapv0_test command passes its arguments to the inner authentication mechanism which treats the arguments as either a username and a password (for eap-mschapv2) or as an IMSI and a key (for eap-sim).
The following example tests PEAP Version 0 with EAP-MSCHAPV2 as the inner authentication mechanism using username bob and password bob:
tunnel eap-mschapv2
simple_eap_peapv0_test bob bob
The following example tests PEAP Version 0 with EAP-SIM as the inner authentication mechanism using IMSI 1234567891 and key 0123456789ABCDEF:
tunnel eap-sim
simple_eap_peapv0_test 1234567891 0123456789ABCDEF
You can test PEAP Version 0 using client certificates verified by the server during the TLS exchange. The client certificate file and RSA key file must reside in /cisco-ar/pki and be named client-cert.pem and client-key.pem respectively. Both files must be in PEM format.
This section describes configuring PEAP Version 1 and testing it with radclient.
To enable PEAP Version 1, use aregcmd to create and configure a service of type peap-v1.
Step 1 Launch aregcmd and create a PEAP Version 1 service.
cd /Radius/Services
add peap-v1-service
Step 2 Set the service's type to peap-v1.
cd peap-v1-service
set Type peap-v1
[ //localhost/Radius/Services/peap-v1-service ]
Name = peap-v1-service
Description =
Type = peap-v1
IncomingScript~ =
OutgoingScript~ =
MaximumMessageSize = 1024
PrivateKeyPassword =
ServerCertificateFile =
ServerRSAKeyFile =
CACertificateFile =
CACertificatePath =
ClientVerificationMode = Optional
VerificationDepth = 4
EnableSessionCache = True
SessionTimeout = "5 Minutes"
AuthenticationTimeout = 120
TunnelService =
Step 3 Set the service's TunnelService property to the name of an existing EAP-GTC or EAP-SIM service.
set TunnelService name_of_EAP-GTC_service
or
set TunnelService name_of_EAP-SIM_service
Table 8-9 describes the PEAP service properties for both PEAP Version 1.
To test the PEAP Version 1, complete the following steps:
Step 1 Launch radclient.
Step 2 Specify the inner authentication method, EAP-GTC or EAP-SIM, as in the following.
tunnel eap-gtc
or
tunnel eap-sim
Step 3 Use the simple_eap_peapv1_test command to authenticate using PEAP Version 1, as in the following:
simple_eap_peapv1_test arg1 arg2
The simple_eap_peapv1_test command passes its arguments to the inner authentication mechanism which treats the arguments as either a username and a password (for EAP-GTC) or as an IMSI and a key (for EAP-SIM).
You can test PEAP Version 1 using client certificates verified by the server during the TLS exchange. The client certificate file and RSA key file must reside in /cisco-ar/pki and be named client-cert.pem and client-key.pem respectively. Both files must be in PEM format.