Hello everybody,
My company is presently running PF 6.5.0 and generally things seem to be
working well. Recently though I've experienced a problem (actually on two
separate occasions) with PF's ability to regulate CLI admin access to switches.
Specifically we are using Cisco 2960's (I think both of them were 2960G
models). In both instances, I deleted the switch from the switch group and then
had a reason to reconnect it to the switchgroup, which all seemed to go okay
without issues, but was then subsequently unable to login (ssh) into those
switches from the command line. PF refused the access and wrote a rejected
record in the audit log. There is a very, very slight difference in the log
entry, as viewed in "Details" in the auditing area. I will include an example
of both below. Note that in the "Bad Switch" version, the calling host's IP
address is placed into the "MAC Address" field in the "Switch Information"
entry. And there is no RADIUS reply. I have actually traced the FreeRADIUS
process and it is returning "Rejected" with a "Mac is empty" message, similar
to the one pasted below:
Thu May 4 12:04:37 2017 : ERROR: (307318) rest: ERROR: {"Reply-Message":"Mac
is empty","reply:PacketFence-Authorization-Status":"allow"}
It is useful to keep in mind that I have 16 of these switches set up and
running daily in PF. Two of them have developed this condition and in both
situations, the only thing which occurred on my part was deleting them from the
"switches" configuration (in the gui) and then adding them back using the same
gui a few minutes later, in the same manner I had originally added them, by
cloning one of the other entries. And this is the method I have used to add all
of the switches and all of them were originally working-- permitting admin
login from the cli-- without issue.
I have combed through all of the config files and the database tables looking
for something that's different and I can't find a thing. In the logs there is
one difference- which I described above. The Radius and PacketFence logs had
only once difference in the setup between the "Good Switch" and the "Bad
Switch" which are readily obvious in the portions I've included below. The only
thing I can find in the code seems to be in the "radius.pm" module at about
line 120 where it says:
my ($nas_port_type, $eap_type, $mac, $port, $user_name, $nas_port_id,
$session_id) = $switch->parseRequest($radius_request);
if (!$mac) { return [$RADIUS::RLM_MODULE_FAIL, ('Reply-Message' =>
"Mac is empty")]; }
Then later, when it goes to show the log entries, it instead puts in the
calling host's IP address (instead of the MAC address).
Bear in mind that the access from the calling host to the switch was identical
for both switches. E.g.
ssh admin@(switch_ip)
Followed by the appropriate password to login. The "Good Switch" accepted it,
the "Bad Switch" rejected it.
Does anybody have any thoughts about what could be happening or how to
troubleshoot this issue further?
Thanks
John Whitten
Good Switch, No issues:
Switch Information:
| MAC Address | ( blank ) <-- Blank, no entry |
| Auth Status | Accept |
| Auth Type | Accept |
| Auto Registration | no |
| Calling Station ID | |
| Computer name | N/A |
| EAP Type | |
| Event Type | Radius-Access-Request |
| IP Address | |
| Is a Phone | no |
| Node status | N/A |
| Domain | |
| Profile | N/A |
| Realm | null |
| Reason | |
| Role | N/A |
| Source | N/A |
| Stripped User Name | admin |
| User Name | admin |
| Unique ID
|
RADIUS Log:
| RADIUS Request | User-Name = "admin"User-Password = "******"NAS-IP-Address =
172.23.3.101NAS-Port = 1NAS-Port-Type = VirtualEvent-Timestamp = "May 4 2017
12:02:14 EDT"NAS-Port-Id = "tty1"Stripped-User-Name = "admin"Realm =
"null"FreeRADIUS-Client-IP-Address = 172.23.3.101SQL-User-Name = "admin" |
| RADIUS Reply | Reply-Message = "Switch enable access granted by
PacketFence"Cisco-AVPair = "shell:priv-lvl=15"PacketFence-Authorization-Status
= "allow" |
Switch Information:
| Switch ID | N/A |
| Switch MAC | N/A |
| Switch IP Address | N/A |
| Called Station ID | |
| Connection type | N/A |
| IfIndex | N/A |
| NAS identifier | |
| NAS IP Address | 172.23.3.101 |
| NAS Port | 1 |
| NAS Port ID | tty1 |
| NAS Port Type | Virtual |
| RADIUS Source IP Address | 172.23.3.101 |
| Wi-Fi Network SSID |
Bad Switch, Can't Login:
Node Information:
| MAC Address | (1.2.3.4) <-- Not blank, contains calling host ip addr |
| Auth Status | Reject |
| Auth Type | Accept |
| Auto Registration | no |
| Calling Station ID | 1.2.3.4 |
| Computer name | N/A |
| EAP Type | |
| Event Type | Radius-Access-Request |
| IP Address | |
| Is a Phone | no |
| Node status | N/A |
| Domain | |
| Profile | N/A |
| Realm | null |
| Reason | rest: Server returned: |
| Role | N/A |
| Source | N/A |
| Stripped User Name | admin |
| User Name | admin |
| Unique ID |
RADIUS Log:
|
| request_time | 0 |
| RADIUS Request | User-Name = "admin"User-Password = "******"NAS-IP-Address =
172.23.3.204NAS-Port = 1Calling-Station-Id = "1.2.3.4"NAS-Port-Type =
VirtualEvent-Timestamp = "May 4 2017 12:04:37 EDT"NAS-Port-Id =
"tty1"Stripped-User-Name = "admin"Realm = "null"FreeRADIUS-Client-IP-Address =
172.23.3.204Module-Failure-Message = "rest: Server
returned:"Module-Failure-Message = "rest: {\"Reply-Message\":\"Mac is
empty\",\"reply:PacketFence-Authorization-Status\":\"allow\"}"SQL-User-Name =
"admin" |
| RADIUS Reply |
Switch Information:
| Switch ID | N/A |
| Switch MAC | N/A |
| Switch IP Address | N/A |
| Called Station ID | |
| Connection type | N/A |
| IfIndex | N/A |
| NAS identifier | |
| NAS IP Address | 172.23.3.204 |
| NAS Port | 1 |
| NAS Port ID | tty1 |
| NAS Port Type | Virtual |
| RADIUS Source IP Address | 172.23.3.204 |
| Wi-Fi Network SSID |
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
PacketFence-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/packetfence-users