Home > Articles > Cisco Certification > CCNP Security / CCSP > CCSP Self-Study: Advanced AAA Security for Cisco Router Networks

CCSP Self-Study: Advanced AAA Security for Cisco Router Networks

Chapter Description

For CCSP candidates, John Roland discusses Cisco Secure ACS 3.0 for Windows 2000/NT Servers, Cisco Secure ACS for UNIX, and the security services of TACACS+, RADIUS, and Kerberos.

TACACS+ Overview

TACACS+ is an improved version of TACACS. TACACS+ forwards username and password information to a centralized security server. Figure 3-11 shows a typical TACACS+ topology.

Figure 11Figure 3-11 General Features

General Features

TACACS+ has the following features:

  • TCP packets for reliable data transport—TACACS+ uses TCP as the communication protocol between the remote client and security server.

    • —Supports the AAA architecture

  • Link is encrypted—The data payload of IP packets (TCP packets) is encrypted for security and is stored in encrypted form in the remote security database.

    • —Supports PAP, CHAP, and MS-CHAP authentication

    • —Useful for both LAN and WAN security

  • Serial Line Internet Protocol (SLIP), PPP, and ARA supported for dialup security—SLIP is TCP/IP over direct connections and modems, which allows one computer to connect to another or to a whole network. PPP is more robust than SLIP, supporting multiple protocols with built-in security. ARA provides to Macintosh users direct access to information and resources at a remote AppleTalk site. TN3270 and X.121 addresses used with X.25 are also supported.

    • —Auto-command supported

    • —Callback supported

    • —Per-user access lists can be assigned in authorization phase

There are at least three versions of TACACS:

  • TACACS—An industry-standard protocol specification (RFC 1492) that forwards username and password information to a centralized server. The centralized server can be either a TACACS database or a database such as the UNIX password file with TACACS protocol support. For example, the UNIX server with TACACS passes requests to the UNIX database and sends an accept or reject message back to the access server.

  • XTACACS—Defines the extensions that Cisco added to the TACACS protocol to support new and advanced features. XTACACS is multiprotocol and can authorize connections with SLIP, PPP (IP or Internet Packet Exchange [IPX]), ARA, EXEC, and Telnet. XTACACS supports multiple TACACS servers, syslog for sending accounting information to a UNIX host, connects where the user is authenticated into the access server "shell," and can Telnet or initiate SLIP, PPP, or ARA after initial authentication. XTACACS is essentially obsolete concerning Cisco AAA features and products.

  • TACACS+—Enhanced and continually improved version of TACACS that allows a TACACS+ server to provide the services of AAA independently. Each service can be tied into its own database or can use the other services available on that server or on the network. TACACS+ was introduced in Cisco IOS Release 10.3. This protocol is a completely new version of the TACACS protocol referenced by RFC 1492 and developed by Cisco. It is not compatible with XTACACS. TACACS+ has been submitted to the IETF as a draft proposal.

The rich feature set of the TACACS+ client/server security protocol is fully supported in Cisco Secure ACS for Windows software.

The first steps in configuring the router are as follows:

Step 1

 

Enable TACACS+.

Step 2

 

Specify the list of Cisco Secure ACS for Windows servers that will provide AAA services for the router.

Step 3

 

Configure the encryption key that is used to encrypt the data transfer between the router and the Cisco Secure ACS for Windows server.


The aaa new-model command forces the router to override every other authentication method previously configured for the router lines. If an administrative Telnet or console session is lost while enabling AAA on a Cisco router, and no enable password is specified, the administrator may be locked out of the router and may need to perform the password-recovery process specific to that router to regain access to the device.

CAUTION

When using the Cisco IOS aaa new-model command, always provide for an enable password login method. This guards against the risk of being locked out of the router if the administrative session fails while you are in the process of enabling AAA, or if the TACACS+ server becomes unavailable.

Configuring TACACS+

When configuring a NAS to support AAA, as shown in Figure 3-12, at a minimum the following commands should be entered, in the order shown:

Router(config)# aaa new-model
Router(config)# aaa authentication login default tacacs+ enable

Figure 12Figure 3-12 Globally Enabling AAA

Specifying the "enable" authentication method enables you to reestablish your Telnet or console session and use the enable password to access the router once more. If you fail to do this, and you become locked out of the router, physical access to the router is required (console session), with a minimum of having to perform a password-recovery sequence. At worst, the entire configuration saved in nonvolatile random-access memory (NVRAM) can be lost.

To begin global configuration, enter the following commands, using the correct IP address of the Cisco Secure ACS for Windows servers and your own encryption key:

router(config)# tacacs-server key 2bor!2b@?
router(config)# tacacs-server host 10.1.2.4

Or use the following:

router(config)# tacacs-server host 10.1.2.4 key 2bor!2b@?

In this example, the 2bor!2b@? key is the encryption key that is shared between the router and the Cisco Secure ACS for Windows server. The encryption key you choose for your environment should be kept secret to protect the privacy of passwords that are sent between the Cisco Secure ACS for Windows server and the router during the authentication process.

When configuring a TACACS+ key for use on multiple TACACS+ servers, remember that the key must be the same for all TACACS+ servers listed for a given router.

You can specify multiple Cisco Secure ACS for Windows servers by repeating the tacacs-server host command.

After you enable AAA globally on the access server, define the authentication method lists, and then apply them to lines and interfaces. These authentication method lists are security profiles that indicate the protocol (ARAP or PPP) or login and authentication method (TACACS+, RADIUS, or local authentication).

To define an authentication method list using the aaa authentication command, complete the following steps:

Step 1

 

Specify the dial-in protocol (ARAP, PPP, or NetWare Access Server Interface [NASI]) or login authentication.

Step 2

 

Identify a list name or default. A list name is any alphanumeric string you choose. You assign different authentication methods to different named lists. You can specify only one dial-in protocol per authentication method list. However, you can create multiple authentication method lists with each of these options. You must give each list a different name.

Step 3

 

Specify the authentication method. You can specify up to four methods. For example, you could specify TACACS+, followed by local. This would permit you to log in with a local username and password in case a TACACS+ server is not available on the network.


After defining these authentication method lists, apply them to one of the following:

  • Lines—tty lines or the console port for login and asynchronous lines (in most cases) for ARA

  • Interfaces—Interfaces (synchronous or asynchronous) configured for PPP

Use the aaa authentication command, as described in Chapter 2, in global configuration mode to enable AAA authentication processes.

The NAS configuration in Example 3-1 shows only commands important to AAA security.

Example 3-1 Important AAA Security Commands

aaa new-model
aaa authentication login default tacacs+ enable
aaa authentication ppp default tacacs+
aaa authorization exec tacacs+
aaa authorization network tacacs+
aaa accounting exec start-stop tacacs+
aaa accounting network start-stop tacacs+
enable secret 5 $1$x1EE$33AXd2VTVvhbWL0A37tQ3.
enable password 7 15141905172924
!
username admin password 7 094E4F0A1201181D19
!
interface Serial2
 ppp authentication pap
!
tacacs-server host 10.1.1.4
tacacs-server key ciscosecure
!
line con 0
 login authentication no_tacacs

Referring to this configuration, the meanings of the configuration entries are as follows:

  • aaa new-model—Enables the AAA access control model. Use of the no form of this command disables this functionality. You can subsequently restore previously configured AAA commands by reissuing the command.

You could use the aaa authentication login default tacacs+ enable command to specify that if your TACACS+ server fails to respond, you can log in to the access server by using your enable password. If you do not have an enable password set on the router, you will not be able to log in to it until you have a functioning TACACS+ UNIX daemon or Windows NT or Windows 2000 server process configured with usernames and passwords. The enable password in this case is a last-resort authentication method. You also can specify none as the last-resort method, which means that no authentication is required if all other methods failed.

  • aaa authentication login default tacacs+ enable—Sets AAA authentication at login using the default list against the TACACS+ server. For this code, the enable password would be used if the TACACS+ server became unavailable.

  • aaa authentication ppp default tacacs+—Sets AAA authentication for PPP connections using the default list against the TACACS+ database.

  • aaa authorization exec tacacs+—Sets AAA authorization to determine if the user is allowed to run an EXEC shell on the NAS against the TACACS+ database.

  • aaa authorization network tacacs+—Sets AAA authorization for all network-related service requests, including SLIP, PPP, PPP NCPs, and ARA protocols, against the TACACS+ database. The TACACS+ database and the NAS must be configured to specify the authorized services.

  • aaa accounting exec start-stop tacacs+—Sets AAA accounting for EXEC processes on the NAS to record the start and stop time of the session against the TACACS+ database.

  • aaa accounting network start-stop tacacs+—Sets AAA accounting for all network-related service requests, including SLIP, PPP, PPP NCPs, and ARA protocols, to record the start and stop time of the session against the TACACS+ database.

  • username admin password 7 094E4F0A1201181D19—Sets a username and password in the local security database for use with the aaa authentication local-override command.

NOTE

This command shows the password after it has been encrypted, as it would be shown in a display of the router's configuration as a result of the service password-encryption command. The password would be entered as clear text and Cisco IOS would take care of the encryption.

  • ppp authentication pap—Sets PPP authentication to use PAP, CHAP, or both CHAP and PAP. MS-CHAP could also be specified. The ppp authentication if-needed command causes the NAS to not perform CHAP or PAP authentication if the user has already provided authentication. This option is available only on asynchronous interfaces.

  • tacacs-server host 10.1.1.4—Provides the IP address of the TACACS+ server.

  • tacacs-server key ciscosecure—Provides the shared-secret key that authenticates the router on the TACACS+ server. This password permits AAA communications between the router and the TACACS+ server.

The following are the first steps in configuring the router:

Step 1

 

Enable TACACS+.

Step 2

 

Specify the list of Cisco Secure ACS for Windows servers that will provide AAA services for the router.

Step 3

 

Configure the encryption key that is used to encrypt the data transfer between the router and the Cisco Secure ACS for Windows server.


The tacacs-server command is described as follows:

  • tacacs-server host (hostname | ip-address)—Specifies the IP address or the host name of the remote TACACS+ server host. This host is typically a UNIX system running TACACS+ software.

  • tacacs-server key shared-secret-text-string—Specifies a shared secret text string used between the access server and the TACACS+ server. The access server and TACACS+ server use this text string to encrypt passwords and exchange responses. The shared key set with the tacacs-server key command is a default key to be used if a per-host key was not set. It is a better practice to set specific keys per tacacs-server host.

It is possible to configure TACACS+ without a shared key at both the client device (that is, NAS) and the security server (that is, Cisco Secure) if you do not want the connection to be encrypted. This might be useful for a lab or training environment but is strongly discouraged in a production environment.

NOTE

A router can have only one tacacs-server key command even though it might have multiple tacacs-server host commands to configure multiple TACACS+ servers for continuity of service. Therefore, the password that is assigned to the router on each of the TACACS+ servers must be identical and will be the password used in the tacacs-server key command on the router.

On the other hand, the TACACS+ server can communicate with multiple host routers, each of which can use a unique key. The TACACS+ server associates the key with the individual router identities in its database.

The following command specifies that the AAA authentication list called no_tacacs is to be used on the console:

line con 0
 login authentication no_tacacs

Verifying TACACS+

This section explains how to verify AAA TACACS+ operations using the following Cisco IOS debug commands:

debug aaa authentication
debug tacacs
debug tacacs events

Use the debug tacacs command on the router to trace TACACS+ packets and display debugging messages for TACACS+ packet traces.

The output listing below shows part of the debug aaa authentication command output for a TACACS login attempt that was successful. The information indicates that TACACS+ is the authentication method used.

14:01:17: AAA/AUTHEN (567936829): Method=TACACS+
14:01:17: TAC+: send AUTHEN/CONT packet
14:01:17: TAC+ (567936829): received authen response status = PASS
14:01:17: AAA/AUTHEN (567936829): status = PASS

Also, note that the AAA/AUTHEN status indicates that the authentication has passed.

There are three possible results of an AAA session:

  • Pass

  • Fail

  • Error

Pass is the desired output. If you see a Fail or Error result in the debug aaa authentication output, it could be the result of a configuration or hardware error. Check the configuration on the router first to make sure the TACACS+ server information is correct, and then check connectivity to the server. If you find no problems, it could indicate a misconfiguration of the TACACS+ server.

Troubleshooting follows a basic tenant—look for what changed last. If you made a configuration change and the AAA process quit working, double-check the configuration, going so far as to restore the configuration that you saved before making the change (You did do that, didn't you?) to see if AAA service is restored. If your router and AAA server have been communicating with no problems, no configuration changes have been made, and no new users have been added, then that points toward a hardware or circuit problem.

The next two sections examine the debug output for successful and failed attempts.

debug tacacs Command Example Output—Failure

Example 3-2 shows part of the debug tacacs command output for a TACACS+ login attempt that was unsuccessful as indicated by the status FAIL. The status fields are probably the most useful part of the debug tacacs command.

Example 3-2 debug tacacs Command Output for a TACACS Unsuccessful Login Attempt

13:53:35: TAC+: Opening TCP/IP connection to 10.1.1.4/49 
13:53:35: TAC+: Sending TCP/IP packet number 416942312-1 to 10.1.1.4/49
(AUTHEN/START)
13:53:35: TAC+: Receiving TCP/IP packet number 416942312-2 from 10.1.1.4/49
13:53:35: TAC+ (416942312): received authen response status = GETUSER
13:53:37: TAC+: send AUTHEN/CONT packet
13:53:37: TAC+: Sending TCP/IP packet number 416942312-3 to 10.1.1.4/49
(AUTHEN/CONT)
13:53:37: TAC+: Receiving TCP/IP packet number 416942312-4 from 10.1.1.4/49
13:53:37: TAC+ (416942312): received authen response status = GETPASS
13:53:38: TAC+: send AUTHEN/CONT packet
13:53:38: TAC+: Sending TCP/IP packet number 416942312-5 to 10.1.1.4/49
(AUTHEN/CONT)
13:53:38: TAC+: Receiving TCP/IP packet number 416942312-6 from 10.1.1.4/49 
13:53:38: TAC+ (416942312): received authen response status = FAIL
13:53:40: TAC+: Closing TCP/IP connection to 10.1.1.4/49

debug tacacs Command Example Output—Pass

Example 3-3 shows part of the debug tacacs command output for a TACACS login attempt that was successful, as indicated by the status PASS.

Example 3-3 debug tacacs Command Output for a TACACS Successful Login Attempt

14:00:09: TAC+: Opening TCP/IP connection to 10.1.1.4/49
14:00:09: TAC+: Sending TCP/IP packet number 383258052-1 to 10.1.1.4/49 (AUTHEN/START) 
14:00:09: TAC+: Receiving TCP/IP packet number 383258052-2 from 10.1.1.4/49
14:00:09: TAC+ (383258052): received authen response status = GETUSER
14:00:10: TAC+: send AUTHEN/CONT packet
14:00:10: TAC+: Sending TCP/IP packet number 383258052-3 to 10.1.1.4/49 (AUTHEN/CONT) 
14:00:10: TAC+: Receiving TCP/IP packet number 383258052-4 from 10.1.1.4/49
14:00:10: TAC+ (383258052): received authen response status = GETPASS 
14:00:14: TAC+: send AUTHEN/CONT packet
14:00:14: TAC+: Sending TCP/IP packet number 383258052-5 to 10.1.1.4/49 (AUTHEN/CONT) 
14:00:14: TAC+: Receiving TCP/IP packet number 383258052-6 from 10.1.1.4/49
14:00:14: TAC+ (383258052): received authen response status = PASS
14:00:14: TAC+: Closing TCP/IP connection to 10.1.1.4/49

debug tacacs events Output

Example 3-4 shows sample debug tacacs events command output.

Example 3-4 debug tacacs events Command Output

router# debug tacacs events
%LINK-3-UPDOWN: Interface Async2, changed state to up 
00:03:16: TAC+: Opening TCP/IP to 10.1.1.4/49 timeout=15 
00:03:16: TAC+: Opened TCP/IP handle 0x48A87C to 10.1.1.4/49
00:03:16: TAC+: periodic timer started
00:03:16: TAC+: 10.1.1.4 req=3BD868 id=-1242409656 ver=193 handle=0x48A87C (ESTAB)
expire=14 AUTHEN/START/SENDAUTH/CHAP queued 
00:03:17: TAC+: 10.1.1.4 ESTAB 3BD868 wrote 46 of 46 bytes 
00:03:22: TAC+: 10.1.1.4 CLOSEWAIT read=12 wanted=12 alloc=12 got=12 
00:03:22: TAC+: 10.1.1.4 CLOSEWAIT read=61 wanted=61 alloc=61 got=49 
00:03:22: TAC+: 10.1.1.4 received 61 byte reply for 3BD868 
00:03:22: TAC+: req=3BD868 id=-1242409656 ver=193 handle=0x48A87C (CLOSEWAIT) expire=9 
AUTHEN/START/SENDAUTH/CHAP processed 
00:03:22: TAC+: periodic timer stopped (queue empty) 
continues
00:03:22: TAC+: Closing TCP/IP 0x48A87C connection to 10.1.1.4/49 
00:03:22: TAC+: Opening TCP/IP to 10.1.1.4/49 timeout=15 
00:03:22: TAC+: Opened TCP/IP handle 0x489F08 to 10.1.1.4/49 
00:03:22: TAC+: periodic timer started
00:03:22: TAC+: 10.1.1.4 req=3BD868 id=299214410 ver=192 handle=0x489F08 (ESTAB)
expire=14 AUTHEN/START/SENDPASS/CHAP queued 
00:03:23: TAC+: 10.1.1.4 ESTAB 3BD868 wrote 41 of 41 bytes 
00:03:23: TAC+: 10.1.1.4 CLOSEWAIT read=12 wanted=12 alloc=12 got=12 
00:03:23: TAC+: 10.1.1.4 CLOSEWAIT read=21 wanted=21 alloc=21 got=9 
00:03:23: TAC+: 10.1.1.4 received 21 byte reply for 3BD868 
00:03:23: TAC+: req=3BD868 id=299214410 ver=192 handle=0x489F08 (CLOSEWAIT) expire=13
AUTHEN/START/SENDPASS/CHAP processed 
00:03:23: TAC+: periodic timer stopped (queue empty)

In this example, the opening and closing of a TCP connection to a TACACS+ server are shown, and also the bytes read and written over the connection and the connection's TCP status.

The TACACS messages are intended to be self-explanatory or for consumption by service personnel only. However, the following two messages that may be shown require a brief explanation:

  • 00:03:16: TAC+: Opening TCP/IP to 10.1.1.4/49 timeout=15—Indicates that a TCP open request to host 10.1.1.4 on port 49 will time out in 15 seconds if it gets no response.

  • 00:03:16: TAC+: Opened TCP/IP handle 0x48A87C to 10.1.1.4/49—Indicates a successful open operation and provides the address of the internal TCP "handle" for this connection.

There is certainly more information provided in the output than there is time or space to address in this book. For more detailed information, refer to the Debug Command Reference on the documentation CD-ROM, the Cisco.com website, or in printed form.

You can get more meaningful output from debug commands if you first configure the router using the service timestamps type [uptime] datetime [msec] [localtime] [show-timezone] command. The following describes the service timestamps command parameters (the parameters in brackets in the preceding sentence are optional):

  • type—Type of message to time-stamp; debug or log.

  • uptime—Time-stamp with time since the system was rebooted.

  • datetime—Time-stamp with the date and time.

  • msec—Include milliseconds in the date and timestamp.

  • localtime—Time-stamp relative to the local time zone.

  • show-timezone—Include the time zone name in the timestamp.

5. RADIUS Overview | Next Section Previous Section