Featured image

Table of Contents Link to heading

AAA: Authentication, Authorisation, and Accounting Link to heading

AAA is the framework that controls who can access network devices, what they can do once connected, and what they did during the session.

Concept Question Example Key Technologies
Authentication Who are you? Username + password at SSH login RADIUS, TACACS+, local login
Authorisation What can you do? Allow show but deny configure terminal ACLs, RBAC, per-command auth
Accounting What did you do? Log every command run in a privileged session Syslog, AAA logs, SNMP

When AAA is enabled on a Cisco device (aaa new-model), the device stops using line-level passwords entirely and routes all login attempts through the configured AAA method list. The method list defines an ordered sequence of authentication sources — typically an external server first, with local accounts as fallback.

Method Protocol/Server
Local Username/password database on the device itself
RADIUS Centralised AAA server — UDP 1812/1813 or 1645/1646
TACACS+ Cisco device administration server — TCP 49
Warning
Always configure a local fallback account before enabling AAA. Without it, a RADIUS/TACACS+ server outage will lock everyone out of the device — including the console.

RADIUS: Network Access Authentication Link to heading

RADIUS (Remote Authentication Dial-In User Service) was designed for authenticating end users connecting to the network — not for managing network devices themselves.

Primary use cases:

  • 802.1X wired and wireless authentication — the standard protocol for EAP-based NAC
  • VPN remote access — authenticates users connecting via IPsec or SSL VPN
  • Web authentication portals — guest and BYOD onboarding

RADIUS encrypts only the password field in the authentication packet. All other attributes — including the username — are transmitted in cleartext, which is acceptable for end-user access but inappropriate for device administration sessions where command sequences are sensitive.

TACACS+: Device Administration Link to heading

TACACS+ (Terminal Access Controller Access-Control System Plus) is a Cisco-proprietary protocol designed specifically for managing access to network device CLIs.

Primary use cases:

  • SSH and console login to routers, switches, and firewalls
  • Privilege-level control — control which privilege level a user lands in after authentication
  • Per-command authorisation — the defining capability of TACACS+, allowing the AAA server to approve or deny individual IOS commands before they execute

Unlike RADIUS, TACACS+ encrypts the entire payload of every packet — not just the password. This matters in device administration contexts where the commands being authorised are themselves sensitive.

RADIUS vs TACACS+: Choosing the Right Protocol Link to heading

Feature RADIUS TACACS+
Primary purpose Network access (end users) Device administration (admins)
Typical use case 802.1X, VPN, WebAuth SSH, console, CLI management
Transport UDP TCP
Standard ports 1812 (auth), 1813 (acct) 49
Legacy Cisco ports 1645 (auth), 1646 (acct) 49
Packet encryption Password field only Entire payload
EAP support Yes — required for 802.1X No
Per-command authz No Yes — key differentiator
Cisco ISE role 802.1X policy enforcement TACACS+ device admin policy
Note
In a typical enterprise, both protocols run simultaneously on Cisco ISE: RADIUS handles 802.1X for wired/wireless endpoints, TACACS+ handles SSH access to network infrastructure. They serve different populations and different threat models.

Configuration Link to heading

Enable AAA Link to heading

conf t
aaa new-model

aaa new-model is a global command that immediately disables all line-level passwords and activates the AAA framework. Apply this before configuring servers or method lists — the order matters.

Local AAA Fallback Link to heading

Used as emergency fallback when external servers are unreachable, and for console access in environments where TACACS+ is not applied to the console line.

username admin privilege 15 secret Cisco123
aaa authentication login default local
line vty 0 4
 login authentication default
 transport input ssh
Tip
Create at least one local account with privilege 15 and name it something distinct from production accounts (e.g., backup or breakglass). Store the password in a secrets vault. This account exists purely for emergency access when the AAA server is unreachable.

RADIUS Configuration for Network Access Link to heading

Used for 802.1X, VPN authentication, and end-user network access.

Define the RADIUS server:

radius server ISE
 address ipv4 10.10.10.10 auth-port 1812 acct-port 1813
 key radiuskey

Create a server group:

aaa group server radius ISE-GROUP
 server name ISE

Configure authentication method list:

aaa authentication login default group ISE-GROUP local

This translates to: try RADIUS first → if the server is unreachable, fall back to local accounts. A RADIUS reject (wrong password) does not trigger fallback — fallback only occurs on server timeout or unreachability.

Enable accounting:

aaa accounting exec default start-stop group ISE-GROUP

TACACS+ Configuration for Device Administration Link to heading

Used for SSH/console login to network devices, with per-command authorisation.

Define the TACACS+ server:

tacacs server ISE_TACACS
 address ipv4 10.10.10.10
 key tacacskey

Create a server group:

aaa group server tacacs+ TAC-GROUP
 server name ISE_TACACS

Configure authentication:

aaa authentication login default group TAC-GROUP local

Configure exec and command authorisation:

aaa authorization exec default group TAC-GROUP local
aaa authorization commands 15 default group TAC-GROUP local

Per-command authorisation (commands 15) sends every privilege-15 command to TACACS+ for approval before execution. This is the mechanism that allows ISE to enforce command-level RBAC — for example, permitting show commands but denying no shutdown for a read-only operator account.

Warning
Enable command authorisation only after confirming the TACACS+ server is reachable and the user profiles are correctly defined. If authorisation is configured but the server is unreachable, and there is no local fallback, all privilege-15 commands will be denied — including the commands needed to fix the problem.

Enable accounting:

aaa accounting commands 15 default start-stop group TAC-GROUP
aaa accounting exec default start-stop group TAC-GROUP

Command accounting records every command executed at privilege level 15 to the TACACS+ server, creating a complete audit trail of administrator activity.

Apply AAA to Lines Link to heading

line vty 0 4
 login authentication default
 authorization exec default
 transport input ssh

Enterprise Configuration Template Link to heading

Example
aaa new-model

tacacs server ISE_TACACS
 address ipv4 10.10.10.10
 key tacacskey

aaa group server tacacs+ TAC-GROUP
 server name ISE_TACACS

aaa authentication login default group TAC-GROUP local
aaa authorization exec default group TAC-GROUP local
aaa authorization commands 15 default group TAC-GROUP local
aaa accounting exec default start-stop group TAC-GROUP
aaa accounting commands 15 default start-stop group TAC-GROUP

username backup privilege 15 secret Backup123

line vty 0 4
 login authentication default
 authorization exec default
 transport input ssh

Verification Link to heading

show aaa servers
show run | section aaa
show tacacs
show radius
debug tacacs
debug radius

show aaa servers shows request/response counters per server — a quick way to confirm the device is successfully reaching the AAA server and receiving responses. Rising error counters or zero responses indicate a connectivity or shared-secret mismatch.