<ServerTACACSPLUS>
clause handles
TACACS+ AAA requests in the following way:<ServerTACACSPLUS>
clause. The
search function looks for a matching Client using this order of
preference:
TACACSPLUSKey
is defined, it is used as the key.<ServerTACACSPLUS>
Key
is defined, it is used as the key.Secret
is
defined, it is used as the key.action
,
priv_lvl
, authen_type
, and
service
values in the TACACS+ authentication
request are converted to OSC-TACACS-Action
,
OSC-TACACS-Privilege-Level
,
OSC-TACACS-Authen-Type
, and
OSC-TACACS-Service
RADIUS attributes. The RADIUS
Access-Request is dispatched to a matching
<Realm>
or
<Handler>
clause, which serve the request
locally using any of the Radiator AuthBy clauses or proxy the request to
another RADIUS server.AuthorizeGroupAttr
reply items from the previous
RADIUS Access-Accept and AuthorizeGroup
parameters
from the configuration file. In addition, any cisco-avpair reply items
from the previous RADIUS Access-Accept are used as authorisation
attribute-value pairs. TACACS+ authorisation requests can optionally be
converted to RADIUS Access-Requests.RewriteUsername
rules are applied. For
more information, see Section 3.7.29. RewriteUsername.
Client RewriteUsername
can also be used. See below
for more information about how
<ServerTACASCSPLUS>
uses Client clauses.%{Client:name}
format and
Client-Identifier
check item are made available.
The values are from a matching Client clause or ServerTACACSPLUS clause
when no Client clause matched.<Realm>
or
<Handler>
clause, using the same rules as
RADIUS requests.AllowAuthorizeOnly
is enabled, Radiator requests
authorisation information even if the user has not previously
authenticated with this Radiator instance. For more information, see Section 3.119.13. AllowAuthorizeOnly.<ServerTACACSPLUS>
is used
to authenticate administrator access to a Cisco device, you need to add
specific authorisation attributes to allow administrative access. For
example, to get administrative access to a Cisco Aironet wireless Access
Point requires that the authorisation include a TACACS+ attribute-value
pair like:
aironet:admin-capability=ident+admin
ciscouser User-Password=fred cisco-avpair="aironet:admin-capability=ident+admin"
<ServerTACACSPLUS>
clause:AuthorizationAdd aironet:admin-capability=ident+admin
<ServerTACACSPLUS>
can be used with any
Radiator authentication method that understands plain text passwords, such
as FILE, SQL, LDAP2, DBFILE, and also with any method that challenge the
user for additional authentication data,such as DIGIPASS, ACE, OTP,
INTERNAL.goodies/tacacsplustest
in your distribution to send
test TACACS+ requests.<Server
TACACSPLUS>
looks for a Client clause that matches the
origin of the TACACS+ request, as described above. If found, a number of
parameters from the Client clause are used during processing:TACACSPLUSKey
Secret
RewriteUsername
StripFromRequest
AddToRequest
AddToRequestIfNotExist
PreHandlerHook
DefaultRealm
(overrides
DefaultRealm
in
<ServerTACACSPLUS>
)<ServerTACACSPLUS>
tries to find a
key to use for decrypting that connection. It first looks for a matching
Client and then for a key until it finds one that has been defined:EncryptedTACACSPLUSKey
parameter is preferred
over TACACSPLUSKey
parameterEncryptedKey
Key
parameterEncryptedSecret
parameter is preferred over
Secret
parameterEncryptedTACACSPLUSKey
and
EncryptedSecret
are currently experimental and will
be documented later.Key
parameter. If some or
all of your TACACS+ devices use different keys, define a Client and
TACACSPLUSKey
for each differing one and set this
Key
as the default for the rest. If some TACACS+
clients are also RADIUS clients, define a Client clause for each one,
specifying the RADIUS secret in Secret
, and the
TACACS+ key in TACACSPLUSKey
.Key mysecret
Port 1024
# Only listen on one IPv4 address and the IPv6 loopback BindAddress 203.63.154.1, ::1
AuthorizationReplace
parameters as you wish, one for
each Tacacs+ authorisation attribute-value pair:AuthorizationReplace service=aironet AuthorizationReplace protocol=shell AuthorizationReplace aironet:admin-capability=ident+admin
AuthorizationAdd
parameters as you wish, one for each
Tacacs+ authorisation attribute-value pair:AuthorizationAdd aironet:admin-capability=ident+admin
AddToRequest NAS-Identifier=TACACS
# Realmless logins to this NAS will be treated # as if they are for realm open.com.au <ServerTACACSPLUS> Key .... DefaultRealm open.com.au </ServerTACACSPLUS> <Realm open.com.au> ..... </Realm>
# Name of the pseudo attribute containing the TACACS group name # in RADIUS Access-Accepts: GroupMemberAttr tacacsgroup
AuthorizeGroup
parameters can be used to specify
privilege levels, permitted TACACS commands, and TACACS restrictions for
various TACACS+ privilege groups. If no
AuthorizeGroup
parameters are specified in the
Radiator configuration file, all TACACS+ commands are authorised by
<Server TACSCPLUS>
.AuthorizeGroup
.
AuthorizeGroup
parameter is this:# Note: Whitespace is not allowed after and before {} AuthorizeGroup <groupname> <permit|permitreplace|deny> pattern1 pattern2 ... {attr1=val attr2=val ...} {extra_check1=val extra_check2="val 2" ...}
peeraddr
AuthorizeGroup
parameter specifies a
privilege rule for a TACACS+ privilege group. You can specify zero or more
AuthorizeGroup
parameters for each privilege group
that is used in your organisation. The AuthorizeGroup
parameters are considered for a group in the order in which they are given
in the Radiator configuration file.AuthorizeGroup
rules
is searched for rules matching the group name identified by the
GroupMemberAttr
attribute. For more information, see
Section 3.119.10. GroupMemberAttr. Each
rule is examined in order until a matching rule is found. The patterns are
used to do the matching. Each pattern is a Perl Regular Expression
(regexp). Pattern1 is matched against the first TACACS+ request argument
(usually service=xyz
), pattern2 is matched against
the second TACACS+ request argument and so on. If every pattern matches
its TACACS+ argument, then the rule matches.service=shell
is a single request argument.
The pattern to match two values for service is
service=(shell|exec)
.
deny
, the authorisation is denied.permit
, the request is authorised,
and the list of reply attr=val
entries are sent back
to the TACACS+ client to be added to the user's command
arguments.permitreplace
, the request is authorised, and the
list of reply attr=val
entries are sent back to the
TACACS+ client and are used to replace the user's requested command
arguments.shell:contextname
in the authorisation request. Only
the set of roles corresponding to the requested
contextname
is returned.
AuthorizeGroup group1 permit service=shell \ {shell:contextname1*"role1 role2 role3" \ shell:contextname2*role2}
AuthorizeGroup
replaces the old
CommandAuth
parameter. Support for
CommandAuth
will be removed some time in the
future.GroupMemberAttr
.AuthorizeGroup
parameters
specifying the privileges for all of the possible group names from
step 1 above.AuthorizeGroup group1 permit service=shell cmd=show cmd-arg=.* AuthorizeGroup group1 permit service=ppp protocol=ip {inacl=101 outacl=102} AuthorizeGroup group1 deny .* AuthorizeGroup group2 permit .*
show
commands for group1
. Users
coming from client that connects from 127.0.0.1 are explicitly permitted.
Users coming from client that has identifier
Some-TACACSPLUS-client
are explicitly denied. The
rest of the users are permitted.AuthorizeGroup group1 permit service=shell cmd=show cmd-arg=.* {} \ {peeraddr=127.0.0.1} AuthorizeGroup group1 deny service=shell cmd=show cmd-arg=.* {} \ {Client-Identifier="Some-TACACSPLUS-client"} AuthorizeGroup group1 permit service=shell cmd=show cmd-arg=.*
AuthorizeGroup
.AuthorizeGroup group3 permit service=shell cmd=logout \ cmd-arg=subscribers cmd-arg=username
AuthorizeGroup group3 permit service=shell cmd\* {priv-lvl=15}
goodies/tacacsplusserver.cfg
.AuthorizeGroup
parameter
above excluding the group name. These patterns are processed before any
configured-in AuthorizeGroup
parameters.GroupMemberAttr OSC-Group-Identifier
and
AuthorizeGroupAttr
OSC-Authorize-Group
.mikem User-Password=fred OSC-Group-Identifier = group1, OSC-Authorize-Group = "permit service=shell cmd=ping"
AuthorizationTimeout
has expired. This is disabled
by default.AllowAuthorizeOnly
is enabled, an existing
authorisation context is not required.PreHandlerHook
is called for
each request after per-Client user name rewriting and duplicate
rejection, and before the request is passed to a Realm or Handler
clause.PreHandlerHook
specifies a Perl hook to be called before the inner request is
re-dispatched to a matching Realm or Handler.EAP_LEAP_MSCHAP_Convert
flag is
set, PreHandlerHook
specifies a Perl hook to
be called before the converted request is re-dispatched to a
matching Realm or Handler.EAP_PEAP_MSCHAP_Convert
flag is set, PreHandlerHook
specifies a Perl
hook to be called before the converted request is re-dispatched to
a matching Realm or Handler.EAP_GTC_PAP_Convert
flag is
set, PreHandlerHook
specifies a Perl hook to
be called before the converted request is re-dispatched to a
matching Realm or Handler.PreHandlerHook
is
called for each request created by the clause before the request is
passed to a Realm or Handler clause.PreHandlerHook
is
called for each request after global and per-ServerRADSEC user name
rewriting and before the request is passed to a Realm or Handler
clause.PreHandlerHook
is
called for each request received by ServerDIAMETER before the request
is passed to a Realm or Handler clause.PreHandlerHook
is
called for each request before it is passed to a Realm or Handler
clause. If a Client is found for the request, Client's
PrehandlerHook
is run before ServerTACASPLUS's
PreHandlerHook
. Global and per-Client user name
rewriting and other processing is done before the hooks are
run.PreHandlerHook
can be an arbitrarily complicated Perl function, that might run external
processes, consult databases, change the contents of the current request
or many other things. Here is an example of using
PreHandlerHook
:# Fake a new attribute into the request PreHandlerHook sub { ${$_[0]}->add_attr('test-attr', \ 'test-value');}
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
0
. When connections are known to be short-lived, a
non-default value may be useful. This parameter is available for all
Stream based modules, such as <ServerDIAMETER>
and <AuthBy RADSEC>
.# Debug logging is enough for peer disconnects DisconnectTraceLevel 4
AuthBy
returns IGNORE message
because of an authentication backend database failure,
DisconnectWhenIgnore
flag parameter defines the
server behaviour. When this is set, the server disconnects the client
without returning TACACS+ error message before disconnecting. This may
cause the client to continue with local authentication after the
authentication backend failure.%2:%0
.# Base context lookup only on username ContextId %2
# Only accept connections from some addresses Clients 127.0.0.1, 203.63.154.29 Clients 203.63.154.27