AAA and your Cisco Equipment
As network security professionals, we have a tendency to think of ourselves as the first line of defense where our networks are concerned. However, the actual truth is we hand off a huge portion of that responsibility to the devices in the network themselves. Whether we are talking about routers, switches, or Adaptive Security Appliances (ASA), we know that we have to take the necessary steps to protect the network. We can do this in a number of ways, but specifically we can do it locally (local user database) or externally (AAA Server). In this blog we are going to explore the three A's in Triple-A, what they do, how they do it, and how to configure them on a device to work with external servers.
Authentication
Authentication is how a Cisco device decides if a particular user should be allowed to access the network. All CCNA's know how to create a local database of usernames and passwords to be used for Telnet access, or PPP authentication, and when authentication is configured in this fashion it is typically called a "self-contained AAA deployment"self-contained because it doesn't require the use of an external server. This configuration is accomplished simply by typing:
R1(config)#username MYNAME password CCNA2BE
When it comes down to authentication in the standard CCNA exam, that is about the extent of it; but for anyone hoping to successfully pass the CCNA Security exam, there is much more to learn. More often than not, we will be required to use an external server to maintain our user database. These servers will normally run one of two security protocols:
- TACACS+is a Cisco Proprietary, Transmission Control Protocol (TCP port 49) based security protocol.
- Encrypts the entire packet
- Considers Authentication, Authorization, and Accounting to be separate processes
- It allows other methods of authentication to be used while using TACACS+ for authorization and accounting.
- It controls the authorization level of users and router commands.
- RADIUSis a Standards-based, Universal Datagram Protocol (UDP port 1812) security protocol created by the IETF.
- Encrypts only the password in the initial client-server packet
- Combines the authentication and authorization process
- Cannot control the authorization level of users and router commands.
Regardless of which protocol we are going to run, AAA must be enabled globally with the aaa new-model command. After doing this we need to tell the router where to look for the external servers, and provide shared encryption keys. These keys must agree with those used by the server. We will use CCNA2BE in the following example:
R1(config)#aaa new-model R1(config)#tacacs-server host 10.1.13.3 key CCNA2BE R1(config)#radius-server host 10.1.14.4 key CCNA2BE
The aaa new-model command does two things for us:
- Enables AAA
- Renders every other configured method of authentication useless. This especially applies to the VTY lines!
We have configured R1 to be a client of both the TACACS+ server located at 10.1.13.3 and the RADIUS server at 10.1.14.4. Now we need to tell the router what servers to use for authentication and in what order to use them. We will configure a default list. Default lists are often times called method lists, because they list the methods of authentication to use. This is accomplished by the following command:
R1(config)#aaa authentication login default group radius group tacacs+ none
In this example, we will first try to authenticate to the RADIUS server, then to the TACACS+, but if neither of those are reachable then the next 'method' will be none. Meaning there will be no requirement for authentication. The use of the option 'none' only applies when the Radius server and TACACS+ server are not reachable, not if authentication fails. Be very careful when configuring Authentication, it is very easy to lock yourself out of your device!
Authorization
Now we are looking at the part of Triple-A where the control mechanism determines whether a user should have access to the network or network services. Authorization controls what users can do once they are logged in. This is accomplished as follows and assumes that the aaa new-model is already configured:
R1(config)#aaa authorization exec default Cache Use Cached-group Group Use server-group. If-authenticated succeed if user has authenticated. krb5-instance Use Kerberos instance privilege maps. Local Use local database None No authorization (always succeeds) R1(config)#aaa authorization exec default group tacacs
There is another element associated with authorization and that is Privilege Levels. These levels define what commands a user can actually run on a device. There are 3 privilege levels by default, Level 0, 1 and 15. You can create custom levels between 1 and 15. Keep in mind a custom level will have access to the commands at its level and all those below it.
Your current privilege level can be verified by the following:
R1>sh privilege Current privilege level is 1 R1>ping 1.1.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/8 ms
Note that we are at privilege level 1 and that we can ping the ip address 1.1.1.1.
We have to point out now that it is possible to move a command to another privilege level. We will move the ping command up to a custom privilege level of 5 in this example and then test from both Privilege level 1 and then level 15:
R1>sh privilege Current privilege level is 1 R1> R1>ping 1.1.1.1 ^ % Invalid input detected at '^' marker. R1>enable R1#sh privilege Current privilege level is 15 R1# R1#ping 1.1.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/5/8 ms
At privilege level 1, we could not execute the ping it was an invalid command. But at privilege level 15, which is greater than level 5, we not only can execute the ping we also get ICMP Echo Replies.
There are two ways to assign privilege levels to users. One method involves AAA and the other does not. To enable AAA authorization to use privilege levels, use the following command:
R1(config)#aaa authorization commands 5 default group tacacs+ local
But privilege commands can also be assigned by using the privilege option between the username and password command when the user database is local to the device:
R1(config)#username MYNAME privilege 5 password CCNA2BE
Accounting
This is where the resources used by an authorized user is tracked or audited. The tracking can be used for security purposes, or for monitoring network utilization for the purpose of billing. Accounting requires AAA to be globally enabled, and after that the aaa accounting command is used to define any specific parameters. It is important to note that there are a lot of capabilities with this feature.
The basic categories supported by the accounting mechanism are as follows:
- Commandsthis references the EXEC mode command a user may issue
- Connectionthe outbound connections made from network access servers
- Telnet
- EXECUser EXEC Terminal sessions
- NetworkNetwork Sessions
- Point-to-Point Protocol (PPP)
- Apple Talk Remote Access Protocol (ARAP)
- Serial Line Internet Protocol (SLIP)
- ResourcesStart and Stop records for passing authentication, Stop records for failing authentications.
- SystemSystem events that are not related to users.
As an example of how to deploy AAA Accounting, we will assume we want to audit all privilege mode commands:
R1(config)#aaa accounting command 15 default start-stop group tacacs
Conclusion
As a CCNA Security candidate, it is important to keep in mind that we are not responsible for master complex configurations involving AAA. However, we must know that no matter what aspect of AAA we are configuring Authentication, Authorization or Accounting we are required to globally enable aaa new-model. Next, we must, to have a firm grasp of the basic command syntax used to deploy AAA, coupled with a solid understanding of the functional aspects of this suite of control mechanisms. Additionally, we cannot afford to let ourselves get confused by the similarities between TACACS+ and RADIUS. It's been my experience that two protocols that perform similar or the same operations can and often do provide the test designers with a wealth of exam questions.