[RADIATOR] custom logging configuration
Hugh Irvine
hugh at open.com.au
Sun Feb 7 01:17:26 CST 2016
Hello All -
I have recently built some custom logging for a customer and I thought it might be interesting to post an overview here.
This will also be included in “goodies/hooks.txt” in future releases.
The requested feature was to forward for each session the username and associated IP address, together with a timestamp to a firewall and a security device using SYSLOG.
This example shows logging to SYSLOG, but any other <Log ….> target(s) will work equally well.
Here is the configuration file that I used for testing:
# log.cfg
Foreground
LogStdout
LogDir .
DbDir .
# User a lower trace level in production systems:
Trace 4
<Client DEFAULT>
Secret mysecret
</Client>
<AuthBy GROUP>
# define Log clauses here so they aren’t global loggers
<Log SYSLOG>
Identifier SyslogToFirewall
# add syslog specific details here
Trace 3
</Log>
<Log SYSLOG>
Identifier SyslogToSecurityDevice
# add syslog specific details here
Trace 3
</Log>
</AuthBy>
<Handler Request-Type = Accounting-Request>
PreAuthHook file:"%D/sysloglogger.pl"
<AuthBy INTERAL>
AuthResult REJECT
AcctResult ACCEPT
</AuthBy>
# Log accounting to a detail file
AcctLogFileName %L/detail
</Handler>
<Handler>
<AuthBy FILE>
Filename %D/users
</AuthBy>
</Handler>
and here is the hook code:
# sysloglogger.pl
# Radiator hook to send SYSLOG messages
# to firewall and security device with
# Timestamp, User-Name and Framed-IP-Address
#
# Hugh Irvine, OSC, 20160206
sub
{
my $p = ${$_[0]};
my $acctstatus = $p->get_attr('Acct-Status-Type');
return unless $acctstatus eq 'Start';
my $user = $p->get_attr('User-Name');
my $ipaddress = $p->get_attr('Framed-IP-Address');
my $message = "user = $user, ip = $ipaddress";
my $syslogtofw = Radius::Configurable::find('Log', 'SyslogToFirewall');
if ($syslogtofw)
{
$syslogtofw->log($main::LOG_INFO, $message, $p);
}
my $syslogtosd = Radius::Configurable::find('Log', 'SyslogToSecurityDevice');
if ($syslogtosd)
{
$syslogtosd->log($main::LOG_INFO, $message, $p);
}
return;
}
Hopefully someone finds this useful.
regards
Hugh
--
Hugh Irvine
hugh at open.com.au
Radiator: the most portable, flexible and configurable RADIUS server
anywhere. SQL, proxy, DBM, files, LDAP, NIS+, password, NT, Emerald,
Platypus, Freeside, TACACS+, PAM, external, Active Directory, EAP, TLS,
TTLS, PEAP, TNC, WiMAX, RSA, Vasco, Yubikey, MOTP, HOTP, TOTP,
DIAMETER, SIM, etc.
Full source on Unix, Linux, Windows, MacOSX, Solaris, VMS, NetWare etc.
More information about the radiator
mailing list