ON THIS PAGE
RADIUS Authentication
Junos OS Evolved supports RADIUS for central authentication of users on network devices. To use RADIUS authentication on the device, you (the network administrator) must configure information about one or more RADIUS servers on the network. You can also configure RADIUS accounting on the device to collect statistical data about the users logging in to or out of a LAN and send the data to a RADIUS accounting server.
Configure RADIUS Server Authentication
RADIUS authentication is a method of authenticating users who attempt to access a network device. The following sections describe why you would use RADIUS and how to configure it.
Why Use RADIUS
You (the network administrator) can use different protocols for the central authentication of users on network devices including RADIUS and TACACS+. We recommend RADIUS because it is a multivendor IETF standard and its features are more widely accepted than those of TACACS+ or other proprietary systems. In addition, we recommend using a one-time-password system for increased security, and all vendors of these systems support RADIUS.
You should use RADIUS when your priorities are interoperability and performance:
-
Interoperability—RADIUS is more interoperable than TACACS+, primarily because of the proprietary nature of TACACS+. While TACACS+ supports more protocols, RADIUS is universally supported.
-
Performance—RADIUS is much lighter on your routers and switches. For this reason, network engineers generally prefer RADIUS over TACACS+.
Configure RADIUS Server Details
To use RADIUS authentication on the device, configure information
about one or more RADIUS servers on the network by including
one radius-server
statement at the
[edit system]
hierarchy level for
each RADIUS server. The device queries the RADIUS servers in
the order in which they are configured. If the primary
server (the first one configured) is unavailable, the device
attempts to contact each server in the list until it
receives a response.
The network device can map RADIUS-authenticated users to a
locally defined user account or user template account, which
determines authorization. By default, Junos OS Evolved assigns
RADIUS-authenticated users to the user template account
remote
, if configured, when:
-
The authenticated user does not have a user account configured on the local device.
-
The RADIUS server either does not assign the user to a local user template, or the template that the server assigns is not configured on the local device.
The RADIUS server can assign an authenticated user to a different
user template to grant different administrative permissions
to that user. The user retains the same login name in the
CLI but inherits the login class, access privileges, and
effective user ID from the assigned template. If the
RADIUS-authenticated user does not map to any locally
defined user account or user template, and the
remote
template is not configured,
then authentication fails.
The remote
username is a special case in
Junos OS Evolved and must always
be lowercase. It acts as a template for users who
are authenticated by a remote server but do not have
a locally configured user account on the device. Junos OS Evolved applies the
permissions of the remote
template
to those authenticated users without a locally
defined account. All users mapped to the
remote
template are in the same
login class.
Because you configure remote authentication on multiple devices,
it is common to configure it inside of a configuration
group. The steps shown here are in a configuration group
called global
. Using a configuration group
is optional.
To configure authentication by a RADIUS server:
Configure RADIUS to Use the Management Instance
By default, Junos OS Evolved routes authentication, authorization, and accounting packets for RADIUS through the default routing instance. You can also route RADIUS packets through a management interface in a non-default VRF instance.
To route RADIUS packets through the mgmt_junos
management instance:
-
Enable the
mgmt_junos
management instance.[edit system] user@host# set management-instance
-
Configure the
routing-instance mgmt_junos
statement for the RADIUS authentication server and the RADIUS accounting server, if configured.[edit system] user@host# set radius-server server-address routing-instance mgmt_junos user@host# set accounting destination radius server server-address routing-instance mgmt_junos
Example: Configure a RADIUS Server for System Authentication
This example configures system authentication through a RADIUS server.
Requirements
Before you begin:
-
Perform the initial device configuration. See the Getting Started Guide for your device.
-
Set up at least one RADIUS server on your network.
Overview
In this example, you add a new RADIUS server with an IP address of 172.16.98.1. You specify the shared secret password of the RADIUS server as Radiussecret1. The device stores the secret in the configuration database as an encrypted value. Finally, you specify the source address that the device uses in RADIUS server requests. In most cases, you can use the loopback address of the device, which in this example is 10.0.0.1.
You can configure support for multiple user authentication methods, such as local password authentication, RADIUS, and TACACS+, on the network device, When you configure multiple authentication methods, you can prioritize the order in which the device tries the different methods. In this example, you configure the device to use RADIUS authentication services first and then, if that fails, to attempt local password authentication.
A RADIUS-authenticated user must map to a local user account or a local user template
account on the network device, which determines authorization. By default, if a
RADIUS-authenticated user does not map to a local user account or a specific user
template, the user is assigned to the remote
user template, if
configured. This example configures the remote
user template.
Configuration
Procedure
CLI Quick Configuration
To quickly configure this example, copy the following commands, paste them
into a text file, remove any line breaks, change any details necessary to
match your network configuration, copy and paste the commands into the CLI
at the [edit]
hierarchy level, and then enter
commit
from configuration mode.
set system radius-server 172.16.98.1 set system radius-server 172.16.98.1 secret Radiussecret1 set system radius-server 172.16.98.1 source-address 10.0.0.1 set system authentication-order [radius password] set system login user remote class operator
Step-by-Step Procedure
To configure a RADIUS server for system authentication:
-
Add a new RADIUS server and set its IP address.
[edit system] user@host# set radius-server 172.16.98.1
-
Specify the shared secret (password) of the RADIUS server.
[edit system] user@host# set radius-server 172.16.98.1 secret Radiussecret1
-
Specify the device’s loopback address as the source address.
[edit system] user@host# set radius-server 172.16.98.1 source-address 10.0.0.1
-
Specify the device's order of authentication, and include the
radius
option.[edit system] user@host# set authentication-order [radius password]
- Configure the
remote
user template and its login class.[edit system] user@host# set login user remote class operator
Results
In configuration mode, confirm your configuration by entering the
show system
command. If the output does not display the
intended configuration, repeat the configuration instructions in this
example to correct it.
The following output includes only those portions of the configuration hierarchy that are relevant to this example.
[edit] user@host# show system login { user remote { class operator; } } authentication-order [ radius password ]; radius-server { 172.16.98.1 { secret "$9$ABC123"; ## SECRET-DATA source-address 10.0.0.1; } }
After configuring the device, enter commit
in configuration
mode.
Verification
Confirm that the configuration is working properly.
Verify the RADIUS Server Configuration
Purpose
Verify that the RADIUS server authenticates users.
Action
Log in to the network device, and verify that the login is successful. To verify that the device uses the RADIUS server for authentication, you can attempt to log in with an account that does not define a local authentication password in the configuration.
Juniper Networks Vendor-Specific RADIUS Attributes
Junos OS Evolved supports configuring Juniper Networks RADIUS vendor-specific attributes (VSAs) on the RADIUS server. These VSAs are encapsulated in a RADIUS vendor-specific attribute with the vendor ID set to the Juniper Networks ID number, 2636.
Table 1 lists the Juniper Networks VSAs that you can configure.
Some of the attributes accept extended regular expressions, as defined in POSIX 1003.2. If the regular expression contains any spaces, operators, or wildcard characters, enclose it in quotation marks. For more information, see:
Name |
Description |
Type |
Length |
String |
---|---|---|---|---|
Juniper-Local-User-Name |
Indicates the name of the user template assigned to this user when the user logs in to a device. This attribute is used only in Access-Accept packets. |
1 |
≥3 |
One or more octets containing printable ASCII characters. |
Juniper-Allow-Commands |
Contains an extended regular expression that enables the user to run commands in addition to those commands authorized by the user’s login class permission bits. This attribute is used only in Access-Accept packets. |
2 |
≥3 |
One or more octets containing printable ASCII characters, in the form of an extended regular expression. |
Juniper-Deny-Commands |
Contains an extended regular expression that denies the user permission to run commands authorized by the user’s login class permission bits. This attribute is used only in Access-Accept packets. |
3 |
≥3 |
One or more octets containing printable ASCII characters, in the form of an extended regular expression. |
Juniper-Allow-Configuration |
Contains an extended regular expression that enables the user to view and modify configuration statements in addition to those statements authorized by the user’s login class permission bits. This attribute is used only in Access-Accept packets. |
4 |
≥3 |
One or more octets containing printable ASCII characters, in the form of an extended regular expression. |
Juniper-Deny-Configuration |
Contains an extended regular expression that denies the user permission to view or modify configuration statements authorized by the user’s login class permission bits. This attribute is used only in Access-Accept packets. |
5 |
≥3 |
One or more octets containing printable ASCII characters, in the form of an extended regular expression. |
Juniper-Interactive-Command |
Indicates the interactive command entered by the user. This attribute is used only in Accounting-Request packets. |
8 |
≥3 |
One or more octets containing printable ASCII characters. |
Juniper-Configuration-Change |
Indicates the interactive command that results in a configuration (database) change. This attribute is used only in Accounting-Request packets. |
9 |
≥3 |
One or more octets containing printable ASCII characters. |
Juniper-User-Permissions |
Contains information the server uses to specify user permissions. This attribute is used only in Access-Accept packets. Note:
When the RADIUS server defines the
|
10 |
≥3 |
One or more octets containing printable ASCII characters. The string is a list of permission flags separated by a space. The exact name of each flag must be specified in its entirety. |
Juniper-Authentication-Type |
Indicates the authentication method (local database or RADIUS server) used to authenticate a user. If the user is authenticated using a local database, the attribute value shows 'local'. If the user is authenticated using a RADIUS or LDAP server, the attribute value shows 'remote'. |
11 |
≥5 |
One or more octets containing printable ASCII characters. |
Juniper-Session-Port |
Indicates the source port number of the established session. |
12 |
size of integer |
Integer |
Juniper-Allow-Configuration-Regexps |
Contains an extended regular expression that enables the user to view and modify configuration statements in addition to those statements authorized by the user’s login class permission bits. This attribute is used only in Access-Accept packets. |
13 |
≥3 |
One or more octets containing printable ASCII characters, in the form of an extended regular expression. |
Juniper-Deny-Configuration-Regexps |
Contains an extended regular expression that denies the user permission to view or modify configuration statements authorized by the user’s login class permission bits. This attribute is used only in Access-Accept packets. |
14 |
≥3 |
One or more octets containing printable ASCII characters, in the form of an extended regular expression. |
For more information about the VSAs, see RFC 2138, Remote Authentication Dial In User Service (RADIUS).
Use Regular Expressions on a RADIUS or TACACS+ Server to Allow or Deny Commands
Junos OS Evolved can map RADIUS- and TACACS+-authenticated users to a locally defined user account or user template account, which defines the user's access privileges. You can also optionally configure a user's access privileges by defining Juniper Networks RADIUS and TACACS+ vendor-specific attributes (VSAs) on the respective authentication server.
A user's login class defines the set of permissions that determines which operational mode and configuration mode commands a user is authorized to execute and which areas of the configuration a user can view and modify. A login class can also define regular expressions that allow or deny a user the ability to execute certain commands or view and modify certain areas of the configuration, in addition to what the permission flags authorize. A login class can include the following statements to define user authorization:
-
permissions
-
allow-commands
-
allow-commands-regexps
-
allow-configuration
-
allow-configuration-regexps
-
deny-commands
-
deny-commands-regexps
-
deny-configuration
-
deny-configuration-regexps
Similarly, a RADIUS or TACACS+ server configuration can use Juniper Networks VSAs to define specific permissions or regular expressions that determine a user's access privileges. For the list of supported RADIUS and TACACS+ VSAs, see the following:
- Juniper Networks Vendor-Specific RADIUS Attributes
- Juniper Networks Vendor-Specific TACACS+ Attributes
You can define user permissions on the RADIUS or TACACS+ server as a list of space-separated values.
-
A RADIUS server uses the following attribute and syntax:
Juniper-User-Permissions += "flag1 flag2 flag3",
For example:
Juniper-User-Permissions += "interface interface-control configure",
-
A TACACS+ server uses the following attribute and syntax:
user-permissions = "flag1 flag2 flag3"
For example:
user-permissions = "interface interface-control configure"
A RADIUS or TACACS+ server can also define Juniper Networks VSAs that use a single extended regular expression (as defined in POSIX 1003.2) to allow or deny a user the ability to execute certain commands or view and modify areas of the configuration. You enclose multiple commands or configuration hierarchies in parentheses and separate them using a pipe symbol. If the regular expression contains any spaces, operators, or wildcard characters, enclose it in quotation marks. When you configure authorization parameters both locally and remotely, the device merges the regular expressions received during TACACS+ or RADIUS authorization with any regular expressions defined on the local device.
-
A RADIUS server uses the following attributes and syntax:
Juniper-Allow-Commands += "(cmd1)|(cmd2)|(cmdn)", Juniper-Deny-Commands += "(cmd1)|(cmd2)|(cmdn)", Juniper-Allow-Configuration += "(config1)|(config2)|(confign)", Juniper-Deny-Configuration += "(config1)|(config2)|(confign)",
For example:
Juniper-Allow-Commands += "(test)|(ping)|(quit)", Juniper-Deny-Commands += "(request)|(restart)", Juniper-Allow-Configuration += "(groups re0)|(system radius-server)", Juniper-Deny-Configuration += "(system radius-options)|(system accounting)",
-
A TACACS+ server uses the following attributes and syntax:
allow-commands = "(cmd1)|(cmd2)|(cmdn)" deny-commands = "(cmd1)|(cmd2)|(cmdn)" allow-configuration = "(config1)|(config2)|(confign)" deny-configuration = "(config1)|(config2)|(confign)"
For example:
allow-commands = "(test)|(ping)|(quit)" deny-commands = "(request)|(restart)" allow-configuration = "(groups re0)|(system tacplus-server)" deny-configuration = "(system tacplus-options)|(system accounting)"
RADIUS and TACACS+ servers also support configuring attributes that correspond to the
same *-regexps
statements that you can configure on the local device.
The *-regexps
TACACS+ attributes and the *-Regexps
RADIUS attributes use the same regular expression syntax as the previous attributes, but
they enable you to configure regular expressions with variables.
-
A RADIUS server uses the following attributes and syntax:
Juniper-Allow-Configuration-Regexps += "(config1)|(config2)|(confign)", Juniper-Deny-Configuration-Regexps += "(config1)|(config2)|(confign)",
-
A TACACS+ server uses the following attributes and syntax:
allow-commands-regexps = "(cmd1)|(cmd2)|(cmdn)" deny-commands-regexps = "(cmd1)|(cmd2)|(cmdn)" allow-configuration-regexps = "(config1)|(config2)|(confign)" deny-configuration-regexps = "(config1)|(config2)|(confign)"
For example, the TACACS+ server configuration might define the following attributes:
allow-commands-regexps = "(show cli .*)|(ping 10.1.1..*)" deny-commands-regexps = "(configure .*)|(edit)|(commit)|(rollback .*)"
On a RADIUS or TACACS+ server, you can also define the attributes using a simplified syntax where you specify each individual expression on a separate line.
For a RADIUS server, specify the individual regular expressions using the following syntax:
Juniper-User-Permissions += "permission-flag1", Juniper-User-Permissions += "permission-flag2", Juniper-User-Permissions += "permission-flagn", Juniper-Allow-Commands += "cmd1", Juniper-Allow-Commands += "cmd2", Juniper-Allow-Commands += "cmdn", Juniper-Deny-Commands += "cmd1", Juniper-Deny-Commands += "cmd2", Juniper-Deny-Commands += "cmdn", Juniper-Allow-Configuration += "config1", Juniper-Allow-Configuration += "config2", Juniper-Allow-Configuration += "confign", Juniper-Deny-Configuration += "config1", Juniper-Deny-Configuration += "config2", Juniper-Deny-Configuration += "confign",
For a TACACS+ server, specify the individual regular expressions using the following syntax:
user-permissions1 = "permission-flag1" user-permissions2 = "permission-flag2" user-permissionsn = "permission-flagn" allow-commands1 = "cmd1" allow-commands2 = "cmd2" allow-commandsn = "cmdn" deny-commands1 = "cmd1" deny-commands2 = "cmd2" deny-commandsn = "cmdn" allow-configuration1 = "config1" allow-configuration2 = "config2" allow-configurationn = "confign" deny-configuration1 = "config1" deny-configuration2 = "config2" deny-configurationn = "confign"
-
In the TACACS+ server syntax, numeric values 1 through n must be unique but need not be sequential. For example, the following syntax is valid:
allow-commands1="cmd1" allow-commands3="cmd3" allow-commands2="cmd2" deny-commands3="cmd3" deny-commands2="cmd2" deny-commands1="cmd1"
-
The RADIUS or TACACS+ server imposes a limit on the number of individual regular expression lines.
-
When you issue the
show cli authorization
command, the command output displays the regular expression in a single line, even if you specify each individual expression on a separate line.
Users can verify their class, permissions, and command and configuration authorization by
issuing the show cli authorization
operational mode command.
user@host> show cli authorization
When you configure the authorization parameters both locally on the network device and remotely on the RADIUS or TACACS+ server, the device merges the regular expressions received during TACACS+ or RADIUS authorization with any locally configured regular expressions. If the final expression contains a syntax error, the overall result is an invalid regular expression.
Understanding RADIUS Accounting
Network devices support IETF RFC 2866, RADIUS Accounting. You can configure RADIUS accounting on a device to collect statistical data about users logging in to or out of a LAN and send the data to a RADIUS accounting server. The statistical data can be used for general network monitoring, analyzing and tracking usage patterns, or billing a user based on the duration of the session or type of services accessed.
To configure RADIUS accounting, specify:
-
One or more RADIUS accounting servers to receive the statistical data from the device
-
The type of accounting data to collect
You can use the same server for both RADIUS accounting and authentication, or you can use separate servers. You can specify a list of RADIUS accounting servers. The device queries the servers in the order in which they are configured. If the primary server (the first one configured) is unavailable, the device attempts to contact each server in the list until it receives a response.
The RADIUS accounting process between the device and a RADIUS server works like this:
-
A RADIUS accounting server listens for User Datagram Protocol (UDP) packets on a specific port. The default port for RADIUS accounting is 1813.
-
The device forwards an Accounting-Request packet containing an event record to the accounting server. The event record associated with this supplicant contains an Acct-Status-Type attribute whose value indicates the beginning of user service for this supplicant. When the supplicant’s session ends, the accounting request contains an Acct-Status-Type attribute value indicating the end of user service. The RADIUS accounting server records this as a stop-accounting record containing session information and the length of the session.
-
The RADIUS accounting server logs these events in a file as start-accounting or stop-accounting records. On FreeRADIUS, the filename is the server’s address, such as 192.0.2.0.
-
The accounting server sends an Accounting-Response packet to the device confirming that it has received the accounting request.
-
If the device does not receive an Accounting-Response packet from the server, it continues to send accounting requests until the server returns a response.
You can view the statistics collected through this process on the RADIUS server. To see those statistics, access the log file configured to receive them.
Configure RADIUS System Accounting
When you enable RADIUS accounting, Juniper Networks devices, acting as RADIUS clients, can notify the RADIUS server about user activities such as software logins, configuration changes, and interactive commands. The framework for RADIUS accounting is described in RFC 2866, RADIUS Accounting.
Configure Auditing of User Events on a RADIUS Server
To configure RADIUS accounting:
The following example configures three servers (10.5.5.5, 10.6.6.6, and 10.7.7.7) for RADIUS accounting:
system { accounting { events [ login change-log interactive-commands ]; destination { radius { server { 10.5.5.5 { accounting-port 3333; secret $ABC123; source-address 10.1.1.1; retry 3; timeout 3; } 10.6.6.6 secret $ABC123; 10.7.7.7 secret $ABC123; } } } } }