cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
509
Views
8
Helpful
14
Replies

Cisco ISE - MAB authorization behaviour

Jagermeister
Level 1
Level 1

Hi all,

I'm trying to setup ISE to perform a simple MAB profiling for a printer. For some reason ISE rejects the printer the first time I connect it:

Event5400 Authentication failed
Failure Reason15039 Rejected per authorization profile

 

I am using an authorization profile that contains a Logical Profile for printers. Within this logical profile I've added the a 'Ricoh-Device' Profiling Profile, which has a profiling condition to look if the Mac address OUI contains 'ricoh'. 

When i look up the device in the authentication endpoints I do see the printer with the 'Ricoh-Device' endpoint profile and the authentication failure reason, which is Rejected per authorization profile. Once i cycle the switchport manually, the device is getting accepted and placed into my printer VLAN.  After that the endpoint store is listing that it is using the correct authorization policy. 

I am hoping that someone can point me into the right direction. manually bouncing the port is not feasible, Can anyone help me finding out why this is happening?

 

Setup: 

- 2x ISE Node with all personas ( 3.4.0.608 ), hosted in Azure. 

- NAD: Various Cisco Meraki switches, my test lab is a MS120-8FP

Access policy:

Jagermeister_0-1728055283591.png

Authorization policy:

Jagermeister_1-1728055600813.png

 

1th attempt log:

Step IDDescriptionLatency (ms)
 11001Received RADIUS Access-Request
 11017RADIUS created a new session0
 11027Detected Host Lookup UseCase (Service-Type = Call Check (10))1
 15049Evaluating Policy Group0
 15008Evaluating Service Selection Policy0
 15041Evaluating Identity Policy1
 15048Queried PIP - Normalised Radius.RadiusFlowType1
 22072Selected identity source sequence - anonymized_AD_Sequence0
 15013Selected Identity Source - anonymized-AD1
 24432Looking up user in Active Directory - anonymized-AD0
 24325Resolving identity - <mac address anonymized>20
 24313Search for matching accounts at join point - anonymized.local1
 24318No matching account found in forest - anonymized.local0
 24367Skipping unusable domain - anonymized trust is one-way0
 24367Skipping unusable domain - anonymized trust is one-way0
 24367Skipping unusable domain - anonymized trust is one-way0
 24322Identity resolution detected no matching account0
 24352Identity resolution failed - ERROR_NO_SUCH_USER0
 24412User not found in Active Directory - anonymized-AD0
 15013Selected Identity Source - Internal Endpoints0
 24209Looking up Endpoint in Internal Endpoints IDStore - <mac address, anonymized>0
 24217The host is not found in the internal endpoints identity store2
 22016Identity sequence completed iterating the IDStores0
 22056Subject not found in the applicable identity store(s)1
 22058The advanced option that is configured for an unknown user is used0
 22060The 'Continue' advanced option is configured in case of a failed authentication request0
 15036Evaluating Authorization Policy0
 24209Looking up Endpoint in Internal Endpoints IDStore - <mac address anonymized>0
 24217The host is not found in the internal endpoints identity store2
 15048Queried PIP - EndPoints.EndPointPolicy6
 15048Queried PIP - EndPoints.LogicalProfile1
 15048Queried PIP - EndPoints.EndPointPolicy1
 15048Queried PIP - EndPoints.LogicalProfile1
 15048Queried PIP - EndPoints.EndPointPolicy1
 24432Looking up user in Active Directory - anonymized-AD1
 24325Resolving identity - <mac address, anonymized>4
 24313Search for matching accounts at join point - anonymized.domain0
 24318No matching account found in forest - anonymized.domain0
 24367Skipping unusable domain - anonymized,Domain trust is one-way0
 24367Skipping unusable domain - anonymizedDomain trust is one-way0
 24367Skipping unusable domain - anonymized,Domain trust is one-way0
 24322Identity resolution detected no matching account0
 24352Identity resolution failed - ERROR_NO_SUCH_USER0
 24412User not found in Active Directory - anonymized-AD0
 15048Queried PIP - anonymized-AD.ExternalGroups4
 15048Queried PIP - EndPoints.EndPointPolicy1
 15048Queried PIP - EndPoints.LogicalProfile1
 15048Queried PIP - EndPoints.LogicalProfile1
 15048Queried PIP - EndPoints.LogicalProfile0
 15048Queried PIP - EndPoints.LogicalProfile1
 15048Queried PIP - EndPoints.EndPointPolicy1
 15048Queried PIP - EndPoints.EndPointPolicy1
 15048Queried PIP - EndPoints.EndPointPolicy1
 15048Queried PIP - EndPoints.EndPointPolicy2
 15048Queried PIP - EndPoints.EndPointPolicy1
 15048Queried PIP - EndPoints.LogicalProfile1
 15016Selected Authorization Profile - DenyTest0
 15039Rejected per authorization profile0
 11003Returned RADIUS Access-Reject1

 

2th log after port bounce:

Steps

 Step IDDescriptionLatency (ms)
 11001Received RADIUS Access-Request
 11017RADIUS created a new session0
 11027Detected Host Lookup UseCase (Service-Type = Call Check (10))1
 15049Evaluating Policy Group0
 15008Evaluating Service Selection Policy0
 15041Evaluating Identity Policy1
 15048Queried PIP0
 22072Selected identity source sequence1
 15013Selected Identity Source - Internal Endpoints0
 24432Looking up user in Active Directory - <mac address, anonymized>0
 24325Resolving identity13
 24313Search for matching accounts at join point0
 24318No matching account found in forest0
 24367Skipping unusable domain0
 24367Skipping unusable domain0
 24367Skipping unusable domain0
 24322Identity resolution detected no matching account0
 24352Identity resolution failed0
 24412User not found in Active Directory1
 15013Selected Identity Source - Internal Endpoints0
 24209Looking up Endpoint in Internal Endpoints IDStore - <mac address, anonymized>0
 24211Found Endpoint in Internal Endpoints IDStore1
 22037Authentication Passed1
 15036Evaluating Authorization Policy0
 15048Queried PIP9
 15048Queried PIP0
 15016Selected Authorization Profile - anonymized-VLAN45-Printers1
 24209Looking up Endpoint in Internal Endpoints IDStore - <mac address>1
 24211Found Endpoint in Internal Endpoints IDStore1
 11002Returned RADIUS Access-Accept0
 5238Endpoint authentication problem was fixed0
1 Accepted Solution

Accepted Solutions

@Jagermeister - good point about the Access-Reject. I should have picked up on that sooner - with Monitor Mode and Low Impact Mode we should never have a default Access-Reject at the end of the Authorization Profile

My MAB Monitor Mode and Low Impact Authorization Policy Sets always end like this:

ArneBier_0-1728337018291.png

The final Default will never get matched and will always have zero hits.

 

View solution in original post

14 Replies 14

In ISE

OUI is take from first three numbers of MAC.

MHM

Thanks,

I don't think that is unique to ISE, its well documented in IEEE 802 related RFC's that the first 24 bits from the 48 bits MAC address is the OUI. 

ricoh <<- this make me think that OUI is wrong are you sure mac address start with this ? 

Also MAB for printer dont use CoA' CoA mainly use when you have guest.

MAB is straight process' send call-back ISE use wired-mab policy and then send access-accept with vlan/dacl authz.

Why you have CoA for what ? 

MHM

@MHM Cisco World you're way off target again in your responses. CoA has many use cases, not only "mainly used when you have guest". Profiling relies heavily on CoA and that's what we're discussing here. When ISE performs a MAB auth it might require multiple iterations of the ISE Policy Set to achieve the desired outcome - and CoA is the mechanism to reauthorize the endpoint until it matches the desired Authorization Rule 

I think I understand what you mean with the OUI part. 

ISE has multiple default profiler conditions like this;

Jagermeister_0-1728313841044.png

So the profiler condition looks at the 1th 24 bits of the MAC, looks it up in some kind of database to resolve the organization of this OUI number, and then compares the return value with this attribute value that is listed in the Profiler Condition.  So no, the MAC itself doesn't start with ricoh but the result of the OUI lookup does contain this.

Why CoA ? 

I can't clearly verify what I am thinking yet...  But i think the 1th attempt my printer tries to authenticate fails because ISE didn't profile it yet.  After being correctly profiled, the authorization changed and a reauthentication CoA request is being used for that (?).  I'm not completely sure about this, so please correct me if I'm wrong :). 

Thanks for reply' check my comment below for using CoA with profiling 

MHM

Arne Bier
VIP
VIP

@Jagermeister what you're describing is a text book example of what happens when CoA (Change of Authorization) is not working. CoA allows the RADIUS server to send a message to the NAD to re-authorize the session it can do other things too but for profiling ISE will send a CoA Reauth). Therefore check that your Network Device in ISE has CoA/Dynamic Authorization checkbox ticked - Cisco uses UDP/1700 for this.  On the NAD, check that dynamic authorization is enabled - and also, ensure that the RADIUS shared secret matches that of the device define in ISE. And ... this caught me recently, if your RADIUS traffic run inside a VRF on the switch, then ensure that the dynamic authorization mentions the vrf name. This of course applies to all other RADIUS commands.

Once you have working CoA, you will see this in the ISE Live Logs, and then profiling becomes a plug-and-play experience.

@Arne Bier ,

Hi Arne, thanks for replying. 

I expected issues with CoA indeed so I already made sure that all the settings were correct. I checked again, and my NAD configuration seems OK. 

I currently am reproducing the situation in the following manner: 

1. I delete the endpoint from the endpoint store, this should trigger a CoA 

2. supplicant on switchport is deauthenticated 

3. Supplicant is appearing again in endpoint store now, hitting on my default deny authorization policy

4. After waiting quite some time (~15 minutes), the supplicant is granted access to the network and the Meraki switch event logs show "event type; RADIUS dynamic VLAN assignment"

The take a closer look i've made a pcap and I have let it run until the client got authenticated again (hiding first 2 octets for privacy):

 

Jagermeister_1-1728167128630.png

It seems that it does send the CoA that's triggered by the default 'Endpoint Delete' profiler exception action.  As you can see it gets acknowledged as well. After that I see a bunch of new CoA requests, all containing VSA: t=Cisco-AVPair(1) l=35 val=subscriber:command=reauthenticate, but the switch never sends an ACK on those.   Even though it doesn't acknowledge the last, the supplicant still gains access after waiting for ~15 minutes. Manually triggering CoA's from the end point store also seems to work (getting ack's on those) . 

Any idea?

 

 

The Wireshark decode is quite revealing. I have had many issues with Meraki and its RADIUS implementation (esp the MS390 - what an awful product) - they often lack features that Cisco switches have had for over 10 years, and then still contain many bugs. I'd open a ticket with Meraki. Not responding to a CoA is a bug. If the NAD believes the CoA was sent in error, it must respond with a CoA NAK. I see those sent by Catalyst switches. I assume you've checked the Meraki release notes or tried to update the switch as well?

Do you know why you have so many duplicate packets shown in your Wireshark? 

Hi Arne, Thanks for replying again. 

I've did some more research today and it seems that Meraki expects the following for a CoA reauth request:

- Calling-Station-ID

- Cisco AV Pair: 

  • subscriber:command=reauthenticate
  • audit-session-id

After I delete the supplicant from the endpoint store, it is issueing a CoA which contains both the subscriber command and the audit session ID. Shortly after this, ISE is sending CoA reauthentication requests again, but they do not contain the audit-session-id.  So I think the switch doesn't know for which client the CoA is destined for, according to the RFC the Meraki switch should reply with a NAK, bit Meraki seems to just ignore it...  According to the Meraki documentation, the Session ID is learned from the original Radius access accept message, the thing is that my device gets a rejected the 1th time (Acces-Reject), so that might be the reason it doesn't supply the CoA with a audit-session-id (?). 

How I reproduce it:

1. Delete supplicant from endpoint store, this is triggering a CoA reauthentication request, which is getting acknowledged by the Meraki switch. Switchport reauthentication is triggered and the supplicant is performing an Access-request again.

Jagermeister_0-1728312581736.png

2. Endpoint shows up again in endpoint store, gets rejected by the default deny authorization policy. In the PCAP an access-request and access-reject is seen

Jagermeister_1-1728312906728.png

3. After that the supplicant stays unauthenticated for quite some time. CoA requests are seen at this point, they do not contain a audit-session-ID. These packets do arrive at the Meraki switch but an ACK/NAK is never given.

Jagermeister_2-1728313142886.png

4. After manually cycling the port, or waiting for the supplicant to reauthenticate on its own again, a new access-request is being made, responded with Access-Accept, which contains the correct profile. The client works now. 

Jagermeister_3-1728313348447.png

I'm still looking into the duplicated packets, not sure what is causing that. 

Do you think it is correct to assume that the supplicant didn't get profiled yet on the 1th try, causing an access-reject. After ISE profiles it, ISE sends a CoA to trigger the client to perform a reauthentication request again? 

 

 

 

@Jagermeister - good point about the Access-Reject. I should have picked up on that sooner - with Monitor Mode and Low Impact Mode we should never have a default Access-Reject at the end of the Authorization Profile

My MAB Monitor Mode and Low Impact Authorization Policy Sets always end like this:

ArneBier_0-1728337018291.png

The final Default will never get matched and will always have zero hits.

 

Hi Arne,

Yes sir, that is it !

After thinking this through it makes sense. The Meraki switch learns the CoA session ID from the access-accept messages but putting a default deny in it prevents CoA to work properly.  I've created a catchall policy with limited access, which will provide the unprofiled client an access-accept with a session ID, now the Session ID can be learned and is present in the CoA after ISE profiles the client. Result; works perfect, yay!

Thanks a lot for your help, I've accepted your response as the solution. 

there are three option for profiling 
no CoA 

port bounce 

ReAuth

since as I understand you want to use profiling for printer try use port bounce instead of CoA, again no need CoA 

Screenshot (179).png

Hi,

Port bounce is a type of CoA. There is a valid need for CoA since the authorization changes after the supplicant gets profiled by ISE. If I wouldn't use CoA, then I will have to wait until the device itself decides to do a reauthentication request or I would have to cycle the switchport, which is not desired behavior.