Contents

Introduction

Prerequisites

Requirements

Components Used

Configure

Network Diagram

Main Local EAP configuration

Step 1. Local EAP profile

Step 2. AAA authentication method

Step 3. Configure a AAA authorization method

Step 4. Configure local advanced methods

Step 5. Configure a WLAN

Step 6. Create one or more users

Step 7. Create policy profile. Create policy tag to map this WLAN profile to policy profile

Step 8. Deploy the policy tag to Access Points.

Verify

Troubleshoot

Example of a client that fails to connect due to wrong password

Introduction

This document describes the configuration of Local EAP on Catalyst 9800 WLCs (Wireless LAN Controllers).

Prerequisites

Requirements

This document describes the configuration of Local EAP (Extensible Authentication Protocol) on Catalyst 9800 WLCs; that is, the WLC perform as RADIUS authentication server for the wireless clients.

This document assumes you are familiar with the basic configuration of a WLAN on the 9800 WLC and only focuses on the WLC operating as Local EAP server for wireless clients.

Components Used

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, ensure that you understand the potential impact of any command.

Catalyst 9800 on version 17.3.6

Configure

Network Diagram

Main Local EAP configuration

Step 1. Local EAP profile

Go to Configuration > Security > Local EAP in the 9800 web UI.

Select Add

Enter a profile name.

It is not advised to use LEAP at all due to its weak security. Any of the other 3 EAP methods requires you to configure a trustpoint. This is because the 9800, which acts as authenticator has to send a certificate for the client to trust it.

Clients do not trust the WLC default certificate, so you would need to deactivate server certificate validation on the client side (not advised) or install a certificate trustpoint on the 9800 WLC that the client trusts (or import it manually in the client trust store).

CLI:

(config)#eap profile mylocapeap

(config-eap-profile)#method peap

(config-eap-profile)#pki-trustpoint admincert

Step 2. AAA authentication method

You need to configure a AAA dot1x method that points locally as well in order to use the local database of users (but you could use external LDAP lookup for example).

Go to Configuration> Security > AAA and go to the AAA method list tab for Authentication. Select Add.

Choose "dot1x" type and local group type.

Step 3. Configure a AAA authorization method

Go to Authorization sub-tab and create a new method for type credential-download and point it to local.

Do the same for network authorization type

CLI:

(config)#aaa new-model

(config)#aaa authentication dot1x default local

(config)#aaa authorization credential-download default local

(config)#aaa local authentication default authorization default

(config)#aaa authorization network default local

Step 4. Configure local advanced methods

Go to the AAA advanced tab.

Define the local authentication and authorization method. Since this exampled used the "default" credential-download and "Default" dot1x method, you need to set default for both local authentication and authorization drop down boxes here.

In case you defined named methods, pick "method list" in the dropdown and another field allows you to enter your method name.

CLI:

aaa local authentication default authorization default

Step 5. Configure a WLAN

You can then configure your WLAN for 802.1x security against the local EAP profile and AAA authentication method defined in the previous step.

Go to Configuration > Tags and Profiles > WLANs > + Add >

Provide SSID and Profile Name.

Dot1x security is selected by default under Layer 2.

Under AAA, select Local EAP Authentication and choose Local EAP profile and AAA Authentication list from drop-down.

(config)#wlan localpeapssid 1 localpeapssid

(config-wlan)#security dot1x authentication-list default

(config-wlan)#local-auth mylocaleap

Step 6. Create one or more users

In CLI, the users have to be of type network-user. Here is an example user created in CLI:

(config)#user-name 1xuser

creation-time 1572730075

description 1xuser

password 0 Cisco123

type network-user description 1xuser

Once created in CLI, this user is visible in the web UI, but if created in the web UI, there are no methods to make it a network-user as of 16.12

Step 7. Create policy profile. Create policy tag to map this WLAN profile to policy profile

Go Configuration > Tags and profiles > Policy

Create a policy profile for your WLAN.

This example shows a flexconnect local switching but central authentication scenario on vlan 1468 but this depends on your network.

Go to Configuration> Tags and profiles > Tags

Assign your WLAN to a policy profile inside your tag.

Step 8. Deploy the policy tag to Access Points.

In this case, for a single AP, you can assign the tags directly on the AP.

Go to Configuration > Wireless >Access points and select the AP you want to configure.

Make sure the tags assigned are the ones you configured.

Verify

The main configuration lines are as shown:

aaa new-model

aaa authentication dot1x default local

aaa authorization credential-download default local

aaa local authentication default authorization default

eap profile mylocaleap

method peap

pki-trustpoint admincert

user-name 1xuser

creation-time 1572730075 description 1xuser

password 0 Cisco123

type network-user description 1xuser

wlan ndarchis_leap 1 ndarchis_leap

local-auth mylocaleap

security dot1x authentication-list default

no shutdown

Troubleshoot

Note that Cisco IOS® XE 16.12 and earlier releases only support TLS 1.0 for local eap authentication which could cause issues if your client supports only TLS 1.2 as is more and more the norm. Cisco IOS® XE 17.1 and later support TLS 1.2 and TLS 1.0.

In order to troubleshoot a specific client which has trouble connecting, use RadioActive Tracing. Go to Troubleshooting > RadioActive Trace and add the client mac address.

Select Start to enable the tracing for that client.

Once the problem is reproduced, you can select the Generate button in order to produce a file that contains the debugging output.

Example of a client that fails to connect due to wrong password

2019/10/30 14:54:00.781 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] Sent EAPOL packet - Version : 3,EAPOL Type : EAP, Payload Length : 8, EAP-Type = EAP-FAST

2019/10/30 14:54:00.781 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] EAP Packet - REQUEST, ID : 0x5

2019/10/30 14:54:00.784 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] Received EAPOL packet - Version : 1,EAPOL Type : EAP, Payload Length : 204, EAP-Type = EAP-FAST

2019/10/30 14:54:00.784 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] EAP Packet - RESPONSE, ID : 0x5

2019/10/30 14:54:00.785 {wncd_x_R0-0}{2}: [caaa-authen] [23294]: (info): [CAAA:AUTHEN:66000006] DEBUG: mlist=(null) for type=0

2019/10/30 14:54:00.788 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] Sent EAPOL packet - Version : 3,EAPOL Type : EAP, Payload Length : 85, EAP-Type = EAP-FAST

2019/10/30 14:54:00.788 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] EAP Packet - REQUEST, ID : 0x6

2019/10/30 14:54:00.791 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] Received EAPOL packet - Version : 1,EAPOL Type : EAP, Payload Length : 6, EAP-Type = EAP-FAST

2019/10/30 14:54:00.791 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] EAP Packet - RESPONSE, ID : 0x6

2019/10/30 14:54:00.791 {wncd_x_R0-0}{2}: [caaa-authen] [23294]: (info): [CAAA:AUTHEN:66000006] DEBUG: mlist=(null) for type=0

2019/10/30 14:54:00.792 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] Sent EAPOL packet - Version : 3,EAPOL Type : EAP, Payload Length : 59, EAP-Type = EAP-FAST

2019/10/30 14:54:00.792 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] EAP Packet - REQUEST, ID : 0x7

2019/10/30 14:54:00.795 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] Received EAPOL packet - Version : 1,EAPOL Type : EAP, Payload Length : 75, EAP-Type = EAP-FAST

2019/10/30 14:54:00.795 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] EAP Packet - RESPONSE, ID : 0x7

2019/10/30 14:54:00.795 {wncd_x_R0-0}{2}: [caaa-authen] [23294]: (info): [CAAA:AUTHEN:66000006] DEBUG: mlist=(null) for type=0

2019/10/30 14:54:00.796 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] Sent EAPOL packet - Version : 3,EAPOL Type : EAP, Payload Length : 91, EAP-Type = EAP-FAST

2019/10/30 14:54:00.796 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] EAP Packet - REQUEST, ID : 0x8

2019/10/30 14:54:00.804 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] Received EAPOL packet - Version : 1,EAPOL Type : EAP, Payload Length : 123, EAP-Type = EAP-FAST

2019/10/30 14:54:00.804 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] EAP Packet - RESPONSE, ID : 0x8

2019/10/30 14:54:00.804 {wncd_x_R0-0}{2}: [caaa-authen] [23294]: (info): [CAAA:AUTHEN:66000006] DEBUG: mlist=(null) for type=0

2019/10/30 14:54:00.805 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] Sent EAPOL packet - Version : 3,EAPOL Type : EAP, Payload Length : 139, EAP-Type = EAP-FAST

2019/10/30 14:54:00.805 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] EAP Packet - REQUEST, ID : 0x9

2019/10/30 14:54:00.808 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] Received EAPOL packet - Version : 1,EAPOL Type : EAP, Payload Length : 75, EAP-Type = EAP-FAST

2019/10/30 14:54:00.808 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] EAP Packet - RESPONSE, ID : 0x9

2019/10/30 14:54:00.808 {wncd_x_R0-0}{2}: [caaa-authen] [23294]: (info): [CAAA:AUTHEN:66000006] DEBUG: mlist=(null) for type=0

2019/10/30 14:54:00.808 {wncd_x_R0-0}{2}: [eap] [23294]: (info): FAST:EAP_FAIL from inner method MSCHAPV2

2019/10/30 14:54:00.808 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] Sent EAPOL packet - Version : 3,EAPOL Type : EAP, Payload Length : 59, EAP-Type = EAP-FAST

2019/10/30 14:54:00.808 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] EAP Packet - REQUEST, ID : 0xa

2019/10/30 14:54:00.811 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] Received EAPOL packet - Version : 1,EAPOL Type : EAP, Payload Length : 59, EAP-Type = EAP-FAST

2019/10/30 14:54:00.811 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] EAP Packet - RESPONSE, ID : 0xa

2019/10/30 14:54:00.811 {wncd_x_R0-0}{2}: [caaa-authen] [23294]: (info): [CAAA:AUTHEN:66000006] DEBUG: mlist=(null) for type=0

2019/10/30 14:54:00.812 {wncd_x_R0-0}{2}: [eap-auth] [23294]: (info): FAIL for EAP method name: EAP-FAST on handle 0xBD000006

2019/10/30 14:54:00.812 {wncd_x_R0-0}{2}: [dot1x] [23294]: (info): [e836.171f.a162:capwap_90000004] Raised identity update event for eap method EAP-FAST

2019/10/30 14:54:00.813 {wncd_x_R0-0}{2}: [errmsg] [23294]: (note): %DOT1X-5-FAIL: Authentication failed for client (e836.171f.a162) with reason (Cred Fail) on Interface capwap_90000004 AuditSessionID 00000000000000101D28423A Username: fakeuser

2019/10/30 14:54:00.813 {wncd_x_R0-0}{2}: [auth-mgr] [23294]: (info): [e836.171f.a162:capwap_90000004] Authc failure from Dot1X, Auth event fail