<Realm DEFAULT> <AuthBy FILE> </AuthBy> </Realm> <AuthBy UNIX> Identifier System </AuthBy>
DEFAULT Auth-Type = System Framed-IP-Netmask ..... ...........
# Remove dangerous attributes from the reply StripFromReply Framed-IP-Netmask,Framed-Compression
StripFromReply
: It specifies the only attributes that
are permitted in an Access-Accept. It is useful, for example, to limit the
attributes that are passed back to the NAS from a proxy server. This way
you can prevent downstream customer RADIUS servers from sending back
illegal or troublesome attributes to your NAS.# Only permit a limited set of reply attributes. AllowInReply Session-Timeout, Framed-IP-Address
# Only permit a limited set of attributes in a reject. AllowInReject Message-Authenticator, EAP-Message
# Append some necessary attributes for our pops AddToReply cisco-avpair="ip:addr_pool=mypool"
StripFromReply
does never remove any attributes added
by DefaultReply
. Value is a list of comma separated
attribute value pairs all on one line, exactly as for any reply item. You
can use any of the special % formats in the attribute values. There is no
default.<AuthBy UNIX>
and <AuthBy SYSTEM>
, which do not have a way of
specifying per-user reply items. In other AuthBy methods you can also very
easily set up a standard set of reply items for all users, yet you can
still override reply items on a per-user basis.# If the user had no reply items set some DefaultReply Service-Type=Framed,Framed-Protocol=PPP
# Work out the users IP address from the first # FramedGroupBaseAddress specified in out client FramedGroup 0
# Save time by never looking for a default NoDefault
# do not fall through to DEFAULT if a users check item failed NoDefaultIfFound
AcceptIfMissing
, all reply attributes set for this
AuthBy (such as DefaultReply
,
AddToReply
,
AddToReplyIfNotExist
, etc.) will be
applied.# Apply some extra checks for those users in the users file, # then authenticate them with a SQL DB. <Handler> AuthByPolicy ContinueWhileAccept <AuthBy FILE> AcceptIfMissing Filename %D/users </AuthBy> <AuthBy SQL> # whatever </AuthBy> </Handler>
IgnoreIfMissing
does not change
database failure behaviour. When a database lookup fails, database failure
behaviour is triggered and ignore is returned while the database is deemed
to be in failed state. Database failure behaviour is not triggered when
IgnoreIfMissing
sets AuthBy result to
ignore.IgnoreIfMissing
does not
apply.# Consider the second LDAP server only when the user is not found # from the first LDAP server or the first LDAP server has failed. <Handler> # This is also the default AuthByPolicy AuthByPolicy ContinueWhileIgnore <AuthBy LDAP2> IgnoreIfMissing # Other configuration parameters </AuthBy> <AuthBy LDAP2> # LDAP configuration parameters </AuthBy> </Handler>
# Use sim-use of 2 unless there is a user-specific entry DefaultSimultaneousUse 2
AuthenProto
specifies which
authentication protocols are permitted for authentication. It is an
optional parameter. AuthenProto
is available for all
AuthBy
modules but its functionality depends on the
specific AuthBy
. It does not affect proxying or
special AuthBy
modules, such as <AuthBy
INTERNAL>
which do their own request handling.WARNING
in Radiator log, and
available for all AuthLog
clauses as the failure
reason.AuthenProto
are:PAP
CHAP
MSCHAP
MSCHAPv2
SIPDigest
EAP
AuthorizeOnly
Unknown
PAP, CHAP, MSCHAP, MSCHAPv2, EAP,
AuthorizeOnly
. The value is AuthorizeOnly
if the
request does not match any of the other values but has Service-Type
attribute set to Authorize-Only. The value is Unknown
when the authentication protocol cannot be determined. The default for
AuthenProto
covers the usual user authentication
protocols. Add Unknown
to those
AuthBy
s that need to handle the authentication
requests that do not have the correct combination of any of the
following:AuthenProto
:# Allow PAP only AuthenProto PAP # Allow all CHAP variants AuthenProto CHAP,MSCHAP,MSCHAPv2 # Empty list allows nothing AuthenProto # Unknown allows anything else. This allows PAP and requests that are not # CHAP, MSCHAP, MSCHAPv2, SIPDigest, EAP or AuthorizeOnly AuthenProto PAP, Unknown
# Permit case insensitive password checks CaseInsensitivePasswords
# Reject anything with an empty password RejectEmptyPassword
{rcrypt}anythingatall
will be interpreted as an
Rcrypt password and the function
Radius::Rcrypt::decrypt()
will be used to decrypt it
before any password comparisons are made. Rcrypt encrypted passwords are
compatible with PAP, CHAP, and MS-CHAP.Radius::Rcrypt
Perl module supplied with
Radiator.# Translate all passwords to UPPERCASE TranslatePasswordHook sub {$_[0] =~ tr/a-z/A-Z/; return $_[0]}
PacketTrace
set off or
0
.PacketTrace
is available
for the following clauses:Client
Handler
Realm
AuthBy
ServerDIAMETER
ServerRADSEC
ServerTACACSPLUS
PacketTrace
:# Debug any packets that pass through here PacketTrace
CachePasswords
is
enabled. %0
is replace by the current username which is
also the default key when CachePasswordKey
is not
set.# %0 expands to the current username which is the # hardcoded default when CachePasswordKey is not set. CachePasswordKey %0 # Use current username and an attribute from $p (current request) CachePasswordKey %0:%{X-Device-Group}
# Old NAS does not support encrypted Tunnel-Password ClearTextTunnelPassword AddToReply Tunnel-Password=xxxxxx
ConsumePassword
and
LeavePassword
are optional parameters that allow an
AuthBy to extract and use a portion of a password. This is typically
required with multiple AuthBys to implement two-factor or one-time
password authentication. When set for an AuthBy, only a portion of the
current password is used by the AuthBy. The remaining portion becomes the
new current password. This allows each AuthBy to check separate portions
of a password.ConsumePassword
causes an AuthBy
to extract a portion from the beginning of the current password.
Possible values for ConsumePassword
are: LeavePassword
causes an AuthBy to extract a
portion from the end of the current password. Possible values for
LeavePassword
are:
ConsumePassword
consumes the beginning of password
and LeavePassword
leaves it unchanged:part1:part2:part3
and
ConsumePassword
is :
, the next
AuthBy gets part2:part3
987654variablepart
and
ConsumePassword
is 6
, the next
AuthBy gets variablepart
variablepart987654
and
ConsumePassword
is -6
, the next
AuthBy gets 987654
part1:part2:part3
and
LeavePassword
is :
, the next
AuthBy gets part1:part2
variablepart987654
and
LeavePassword
is -6
, the next
AuthBy gets variablepart
987654variablepart
and
LeavePassword
is 6
, the next
AuthBy gets 987654
goodies/duo.cfg
and
goodies/digipassStatic.cfg
. This example shows how to
check a password, for example variablepart987654
, that
has a variable length static password followed by 6 digit TOTP
code.<Handler> AuthByPolicy ContinueWhileAccept <AuthBy SQL> # Current password is static password followed by a token code # SQL configuration to check static password and other check attributes # Fetch reply attribute configuration # Use and remove static password leaving the token code ConsumePassword -6 </AuthBy> <AuthBy SQLTOTP> # Current password is just the token code </AuthBy> </Handler>
# look up database based on Calling-Station-Id AuthenticateAttribute Calling-Station-Id
PostAuthHook
is called for each request when the AuthBy
is done
processing the request and has returned.PostAuthHook
.
For more information, see Section 3.31.11. PostAuthHook.AllowNULInUsername
:# User-Name attributes and EAP identities are allowed to have NUL octets AllowNULInUsername
<AuthBy INTERNAL>
rejects a
request. The enclosing Realm or Handler must also have
RejectHasReason
enabled.RejectReason
:RejectReason Your account has been disabled
# This AuthBy EXTERNAL program is very slow, and does lots of IO Fork
# Let users get addresses they ask for UseAddressHint
<AuthBy whatever> ...... UseAddressHint DynamicReply USR-IP-Input-Filter </AuthBy>
DEFAULT User-Password = "UNIX" Framed-IP-Address = 255.255.255.254, Framed-Routing = None, Framed-IP-Netmask = 255.255.255.255, USR-IP-Input-Filter = "1 REJECT src-addr != %a;", Service-Type = Framed-User
Dynamic
. That name is still recognised as a
synonym for DynamicReply
.<AuthBy whatever> ...... DynamicCheck Group </AuthBy>
DEFAULT Group=%{Shiva-VPN-Group} Framed-IP-Address = 255.255.255.254, Framed-Routing = None, Framed-IP-Netmask = 255.255.255.255, ........