Skip to content

Commit

Permalink
Select the first device that match the MFA method (#8400)
Browse files Browse the repository at this point in the history
* Try to find the device that match the method

* Added message in the radius reply

* Fixed indentation

* Log MFA status in radius reply
  • Loading branch information
fdurand authored Dec 3, 2024
1 parent 34f9686 commit 25edfa0
Show file tree
Hide file tree
Showing 24 changed files with 136 additions and 64 deletions.
2 changes: 2 additions & 0 deletions lib/pf/Switch/Aruba.pm
Original file line number Diff line number Diff line change
Expand Up @@ -630,6 +630,7 @@ sub returnAuthorizeWrite {
my $status;
$radius_reply_ref->{'Class'} = 'root';
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand All @@ -650,6 +651,7 @@ sub returnAuthorizeRead {
my $status;
$radius_reply_ref->{'Class'} = 'read-only';
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/Aruba/5400.pm
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ sub returnAuthorizeWrite {
my $status;
$radius_reply_ref->{'Service-Type'} = 'Administrative-User';
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand All @@ -99,6 +100,7 @@ sub returnAuthorizeRead {
my $status;
$radius_reply_ref->{'Service-Type'} = 'NAS-Prompt-User';
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/Aruba/ArubaOS_CX_10_x.pm
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ sub returnAuthorizeWrite {
my $status;
$radius_reply_ref->{'Service-Type'} = 'Administrative-User';
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand All @@ -105,6 +106,7 @@ sub returnAuthorizeRead {
my $status;
$radius_reply_ref->{'Service-Type'} = 'NAS-Prompt-User';
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/Avaya.pm
Original file line number Diff line number Diff line change
Expand Up @@ -652,6 +652,7 @@ sub returnAuthorizeRead {
my $status;
$radius_reply_ref->{'Service-Type'} = '7';
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand All @@ -672,6 +673,7 @@ sub returnAuthorizeWrite {
my $status;
$radius_reply_ref->{'Service-Type'} = '6';
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/Brocade.pm
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,7 @@ sub returnAuthorizeWrite {
my $status;
$radius_reply_ref->{'Foundry-Privilege-Level'} = '0';
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand All @@ -338,6 +339,7 @@ sub returnAuthorizeRead {
my $status;
$radius_reply_ref->{'Foundry-Privilege-Level'} = '5';
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/Cisco.pm
Original file line number Diff line number Diff line change
Expand Up @@ -1599,6 +1599,7 @@ sub returnAuthorizeWrite {
my $status;
$radius_reply_ref->{'Cisco-AVPair'} = 'shell:priv-lvl=15';
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand All @@ -1620,6 +1621,7 @@ sub returnAuthorizeRead {
my $status;
$radius_reply_ref->{'Cisco-AVPair'} = 'shell:priv-lvl=3';
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand Down
1 change: 1 addition & 0 deletions lib/pf/Switch/Cisco/ASA.pm
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ sub returnAuthorizeVPN {
my $status = shift @super_reply;
my %radius_reply = @super_reply;
my $radius_reply_ref = \%radius_reply;
$radius_reply_ref->{'Reply-Message'} = $args->{'message'} if exists $args->{'message'};
return [$status, %$radius_reply_ref] if($status == $RADIUS::RLM_MODULE_USERLOCK);
my $role;

Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/Cisco/Cisco_WLC_AireOS.pm
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,7 @@ sub returnAuthorizeWrite {
my $status;
$radius_reply_ref->{'Service-Type'} = 'Administrative-User';
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand All @@ -384,6 +385,7 @@ sub returnAuthorizeRead {
my $status;
$radius_reply_ref->{'Service-Type'} = 'NAS-Prompt-User';
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/Dell/N1500.pm
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ sub returnAuthorizeWrite {
my $status;
$radius_reply_ref->{'Cisco-AVPair'} = 'shell:priv-lvl=15';
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand All @@ -144,6 +145,7 @@ sub returnAuthorizeRead {
my $status;
$radius_reply_ref->{'Cisco-AVPair'} = 'shell:priv-lvl=3';
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/Extreme.pm
Original file line number Diff line number Diff line change
Expand Up @@ -1535,6 +1535,7 @@ sub returnAuthorizeRead {
my $status;
$radius_reply_ref->{'Service-Type'} = '0';
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand All @@ -1555,6 +1556,7 @@ sub returnAuthorizeWrite {
my $status;
$radius_reply_ref->{'Service-Type'} = '6';
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand Down
1 change: 1 addition & 0 deletions lib/pf/Switch/F5.pm
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ sub returnAuthorizeVPN {


my $radius_reply_ref = {};
$radius_reply_ref->{'Reply-Message'} = $args->{'message'} if exists $args->{'message'};
my $status;
# should this node be kicked out?
my $kick = $self->handleRadiusDeny($args);
Expand Down
1 change: 1 addition & 0 deletions lib/pf/Switch/Fortinet/FortiGate.pm
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,7 @@ sub returnAuthorizeVPN {


my $radius_reply_ref = {};
$radius_reply_ref->{'Reply-Message'} = $args->{'message'} if exists $args->{'message'};
my $status;
# should this node be kicked out?
my $kick = $self->handleRadiusDeny($args);
Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/Generic.pm
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ sub returnAuthorizeWrite {
my $radius_reply_ref;
my $status;
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand All @@ -67,6 +68,7 @@ sub returnAuthorizeRead {
my $radius_reply_ref;
my $status;
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand Down
1 change: 1 addition & 0 deletions lib/pf/Switch/GenericVPN.pm
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ sub returnAuthorizeVPN {


my $radius_reply_ref = {};
$radius_reply_ref->{'Reply-Message'} = $args->{'message'} if exists $args->{'message'};
my $status;
# should this node be kicked out?
my $kick = $self->handleRadiusDeny($args);
Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/H3C.pm
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@ sub returnAuthorizeWrite {
my $radius_reply_ref;
my $status;
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand All @@ -220,6 +221,7 @@ sub returnAuthorizeRead {
my $radius_reply_ref;
my $status;
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/HP.pm
Original file line number Diff line number Diff line change
Expand Up @@ -524,6 +524,7 @@ sub returnAuthorizeWrite {
my $status;
$radius_reply_ref->{'Service-Type'} = 'Administrative-User';
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand All @@ -544,6 +545,7 @@ sub returnAuthorizeRead {
my $status;
$radius_reply_ref->{'Service-Type'} = 'NAS-Prompt-User';
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/Juniper.pm
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ sub returnAuthorizeWrite {
my $status;
$radius_reply_ref->{'Juniper-Local-User-Name'} = 'super-user';
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand All @@ -93,6 +94,7 @@ sub returnAuthorizeRead {
my $status;
$radius_reply_ref->{'Juniper-Local-User-Name'} = 'read-only';
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand Down
1 change: 1 addition & 0 deletions lib/pf/Switch/OpenVPN.pm
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ sub returnAuthorizeVPN {


my $radius_reply_ref = {};
$radius_reply_ref->{'Reply-Message'} = $args->{'message'} if exists $args->{'message'};
my $status;
# should this node be kicked out?
my $kick = $self->handleRadiusDeny($args);
Expand Down
1 change: 1 addition & 0 deletions lib/pf/Switch/Template.pm
Original file line number Diff line number Diff line change
Expand Up @@ -570,6 +570,7 @@ sub returnCliAuthorize {
%radius_reply = @$attrs;
} else {
$radius_reply{'Reply-Message'} = "Switch $accessType access granted by PacketFence";
$radius_reply{'Reply-Message'} = $args->{'message'}." . ".$radius_reply{'Reply-Message'} if exists $args->{'message'};
}

$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with $accessType access");
Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/Ubiquiti/EdgeSwitch.pm
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ sub returnAuthorizeWrite {
my $status;
$radius_reply_ref->{'Cisco-AVPair'} = 'shell:priv-lvl=15';
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand All @@ -131,6 +132,7 @@ sub returnAuthorizeRead {
my $status;
$radius_reply_ref->{'Cisco-AVPair'} = 'shell:priv-lvl=3';
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand Down
2 changes: 2 additions & 0 deletions lib/pf/Switch/Xirrus.pm
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,7 @@ sub returnAuthorizeWrite {
my $status;
$radius_reply_ref->{'Xirrus-Admin-Role'} = 'read-write';
$radius_reply_ref->{'Reply-Message'} = "Switch enable access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with write access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeWrite', $args);
Expand All @@ -320,6 +321,7 @@ sub returnAuthorizeRead {
my $status;
$radius_reply_ref->{'Xirrus-Admin-Role'} = 'read-only';
$radius_reply_ref->{'Reply-Message'} = "Switch read access granted by PacketFence";
$radius_reply_ref->{'Reply-Message'} = $args->{'message'}." . ".$radius_reply_ref->{'Reply-Message'} if exists $args->{'message'};
$logger->info("User $args->{'user_name'} logged in $args->{'switch'}{'_id'} with read access");
my $filter = pf::access_filter::radius->new;
my $rule = $filter->test('returnAuthorizeRead', $args);
Expand Down
Loading

0 comments on commit 25edfa0

Please sign in to comment.