📄 Viewing: freeradius
##########################################################################
# freeradius logwatch filter
# written by Jonas Marczona 28.12.2011
#
## Covered under the included MIT/X-Consortium License:
## http://www.opensource.org/licenses/mit-license.php
## All modifications and contributions by other persons to
## this script are assumed to have been donated to the
## Logwatch project and thus assume the above copyright
## and licensing terms.
##########################################################################
$^W=1;
use strict;
my $Debug = $ENV{'LOGWATCH_DEBUG'} || 0;
my $Detail = $ENV{'LOGWATCH_DETAIL_LEVEL'} || 0;
my $DebugCounter = 0;
if ( $Debug >= 5 ) {
print STDERR "\n\nDEBUG: Inside freeradius Filter \n\n";
$DebugCounter = 1;
}
my %OtherList = ();
my %loginsOk = ();
my %wrongPassword = ();
my %wrongUser = ();
my %wrong_ip = ();
my $ThisLine;
while (defined($ThisLine = <STDIN>)) {
if ( $Debug >= 5 ) {
print STDERR "DEBUG($DebugCounter): $ThisLine";
$DebugCounter++;
}
chomp($ThisLine);
if ( my $user = ($ThisLine =~ m/^Auth: Login OK: \[(.+)\] \(from client [^ ]* port \d{1,10} cli \d+.\d+.\d+.\d+\)/) ) {
$loginsOk{$user}++;
} elsif ( my ($user, $ip) = ( $ThisLine =~ m/^Auth: Login incorrect \(rlm_pap: CLEAR TEXT password check failed\): \[(.+)\] \(from client [^ ]* port \d{1,10} cli (\d+.\d+.\d+.\d+)\)/) ) {
$wrongPassword{$ip}{$user}++;
$wrong_ip{$ip}++;
} elsif ( my ($user, $ip) = ($ThisLine =~ m/^Auth: Login incorrect: \[(.+)\] \(from client [^ ]* port \d{1,10} cli (\d+.\d+.\d+.\d+)\)/) ) {
$wrongUser{$ip}{$user}++;
$wrong_ip{$ip}++;
} else {
# Report any unmatched entries...
$OtherList{$ThisLine}++;
}
}
#################################
# Output section
################################
sub compPerIp {
return $wrong_ip{$b} <=> $wrong_ip{$a};
}
if ($Detail >= 10) {
if (keys %loginsOk) {
print "\nSuccessful logins:\n";
my $user;
foreach $user (sort {$loginsOk{$b} <=> $loginsOk{$a}} keys %loginsOk) {
# print $user, " ";
# print $loginsOk{$user};
printf " %10s : %3d time(s)\n", $user, $loginsOk{$user};
}
}
}
if ($Detail >= 5) {
if (keys %wrong_ip) {
print "\nSum of failed logins per ip (wrong password or user)\n";
foreach my $ip (sort compPerIp keys %wrong_ip) {
printf " %15s : %3d time(s)\n", $ip, $wrong_ip{$ip};
}
}
}
if (keys %wrongUser) {
print "\nFailed logins - wrong user name:\n";
foreach my $ip (sort compPerIp keys %wrongUser) {
printf " %15s\n", $ip;
my $users = $wrongUser{$ip};
foreach my $user (sort {$users->{$b} <=> $users->{$a}} keys %$users) {
printf "%20s : %3d time(s)\n", $user, $users->{$user};
}
}
}
if (keys %wrongPassword) {
print "\nFailed logins - wrong password:\n";
foreach my $ip (sort compPerIp keys %wrongPassword) {
my $users = $wrongPassword{$ip};
printf " %15s\n", $ip ;
foreach my $user (sort {$users->{$b} <=> $users->{$a}} keys %$users) {
#print " $user ", $users->{$user}, " time(s)\n";
printf "%20s : %3d time(s)\n", $user, $users->{$user};
}
}
}
if (keys %OtherList) {
print "\n**** Unmatched entries ****\n";
foreach (keys %OtherList) {
print " $_ : $OtherList{$_} Time(s)\n";
}
}
exit(0);
# vi: shiftwidth=3 tabstop=3 syntax=perl et
🌑 DarkStealth — WP Plugin Edition
Directory: /usr/share/logwatch/scripts/services