Recent from talks
Nothing was collected or created yet.
TACACS
View on WikipediaTerminal Access Controller Access-Control System (TACACS, /ˈtækæks/) refers to a family of related protocols handling remote authentication and related services for network access control through a centralized server. The original TACACS protocol, which dates back to 1984, was used for communicating with an authentication server, common in older UNIX networks including but not limited to the ARPANET, MILNET and BBNNET. It spawned related protocols:
- Extended TACACS (XTACACS) is a proprietary extension to TACACS introduced by Cisco Systems in 1990 without backwards compatibility to the original protocol. TACACS and XTACACS both allow a remote access server to communicate with an authentication server in order to determine if the user has access to the network.
- TACACS Plus (TACACS+) is a protocol developed by Cisco and released as an open standard beginning in 1993. Although derived from TACACS, TACACS+ is a separate protocol that handles authentication, authorization, and accounting (AAA) services. TACACS+ has largely replaced its predecessors.
History
[edit]TACACS was originally developed in 1984 by BBN, later known as BBN Technologies, for administration of ARPANET and MILNET, which ran unclassified network traffic for DARPA at the time and would later evolve into the U.S. Department of Defense's NIPRNet. Originally designed as a means to automate authentication – allowing someone who was already logged into one host in the network to connect to another on the same network without needing to re-authenticate – it was first formally described by BBN's Brian Anderson TAC Access Control System Protocols, BBN Tech Memo CC-0045 with minor TELNET double login avoidance change in December 1984 in IETF RFC 927.[1][2] Cisco Systems began supporting TACACS in its networking products in the late 1980s, eventually adding several extensions to the protocol. In 1990, Cisco's extensions on top of TACACS became a proprietary protocol called Extended TACACS (XTACACS). Although TACACS and XTACACS are not open standards, Craig Finseth of the University of Minnesota, with Cisco's assistance, published a description of the protocols in 1993 as IETF RFC 1492 for informational purposes.[1][3][4]
Technical descriptions
[edit]TACACS
[edit]TACACS is defined in RFC 1492, and uses (either TCP or UDP) port 49 by default. TACACS allows a client to accept a username and password and send a query to a TACACS authentication server, sometimes called a TACACS daemon. It determines whether to accept or deny the authentication request and sends a response back. The TIP (routing node accepting dial-up line connections, which the user would normally want to log in into) would then allow access or not, based upon the response. In this way, the process of making the decision is "opened up" and the algorithms and data used to make the decision are under the complete control of whoever is running the TACACS daemon.
XTACACS
[edit]Extended TACACS (XTACACS) extends the TACACS protocol with additional functionality. It also separates the authentication, authorization, and accounting (AAA) functions out into separate processes, allowing them to be handled by separate servers and technologies.[5]
TACACS+
[edit]TACACS+ is a Cisco designed extension to TACACS that is described in RFC 8907. TACACS+ includes a mechanism that can be used to obfuscate the body of each packet, while leaving the header clear-text. Moreover, it provides granular control in the form of command-by-command authorization.[6]
TACACS+ has generally replaced TACACS and XTACACS in more recently built or updated networks. TACACS+ is an entirely new protocol which is not compatible with its predecessors, TACACS and XTACACS.
There are a number of differences between the two protocols which make them substantially different in normal usage.
TACACS+ can only use TCP, while RADIUS normally operates over UDP,[7] but can also use TCP (RFC6613), and for additional security, TLS (RFC 6614) and DTLS (RFC7360).
TACACS+ can operate in two modes. One mode is where all traffic including passwords are sent in clear-text, and the only security is IP address filtering. The other mode is data obfuscation (RFC 8907 Section 4.5), where the packet header is clear-text, but the body including passwords is obfuscated with an MD5-based method. The MD5-based obfuscation method is similar to that used for the RADIUS User-Password attribute (RFC 2865 Section 5.2), and therefore has similar security properties.
Another difference is that TACACS+ is used only for administrator access to networking equipment, while RADIUS is most often used for end-user authentication. TACACS+ supports "command authorization", where an administrator can log in to a piece of networking equipment, and attempt to issue commands. The equipment will use TACACS+ to send each command to a TACACS+ server, which can choose to authorize, or reject the command.
Similar functionality exists in RADIUS in RFC 5607, but support for that standard appears to be poor or non-existent.
TACACS+ offers robust functionality for administrator authentication and command authorization, but is essentially never used for authenticating end-user access to networks. In contrast, RADIUS offers minimal functionality for administrator authentication and command authorization, while offering strong support (and is widely used) for end-user authentication, authorization, and accounting.
As such, the two protocols have little overlap in functionality or in common usage.
Implementations
[edit]This section may contain unverified or indiscriminate information in embedded lists. (September 2022) |
Client implementations
- Arista EOS, a proprietary implementation
- Cisco IOS, a proprietary implementation
- Extreme Networks, a proprietary implementation
- Fortinet FortiOS, a proprietary implementation
- Juniper Junos OS, a proprietary implementation
- Palo Alto Networks PAN-OS, a proprietary implementation
- Pam_tacplus, a TACACS+ protocol client library and PAM module
- Augur Systems TACACS+, a free open-source Java library
Server implementations
- FreeRADIUS TACACS+ module, an open-source implementation available since version 4.0
- Tac_plus by Shrubbery, an open-source implementation for Linux
- Tac_plus-ng by Pro-Bono-Publico, an open-source implementation for Linux
- Tac_plus VM, tac_plus with an added webadmin in a VM (no longer updated)
- Aruba ClearPass Policy Manager, a proprietary implementation
- Cisco Identity Services Engine, a proprietary implementation
- Portnox TACACS+-as-a-Service, a proprietary implementation as a cloud-hosted service
- Pulse Secure Pulse Policy Secure, a proprietary implementation
- TACACS.net, a proprietary implementation of TACACS+ for Windows
- Augur Systems TACACS+, a free open-source Java library (full client, with framework for a server)
Standards documents
[edit]See also
[edit]References
[edit]- ^ a b Dooley, Kevin; Brown, Ian (2003). Cisco Cookbook. O'Reilly Media. p. 137. ISBN 9781449390952. Archived from the original on 2016-06-24.
- ^ Brian A. Anderson (December 1984). TACACS User Identification Telnet Option. Network Working Group. doi:10.17487/RFC0927. RFC 927. Proposed Standard.
- ^ Ballad, Bill; Ballad, Tricia; Banks, Erin (2011). Access Control, Authentication, and Public Key Infrastructure. Jones & Bartlett Learning. pp. 278–280. ISBN 9780763791285.
- ^ C. Finseth (July 1993). An Access Control Protocol, Sometimes Called TACACS. Network Working Group. doi:10.17487/RFC1492. RFC 1492. Informational.
- ^ "Mike Meyers' CompTIA Security+ Certification Passport, Second Edition - PDF Free Download". epdf.pub. Retrieved 2019-08-03.
- ^ T. Dahm; A. Ota; D.C. Medway Gash; D. Carrel; L. Grant (September 2020). The Terminal Access Controller Access-Control System Plus (TACACS+) Protocol. Internet Engineering Task Force. doi:10.17487/RFC8907. ISSN 2070-1721. RFC 8907. Informational.
- ^ "TACACS+ and RADIUS Comparison". Cisco. 14 January 2008. Archived from the original on 7 September 2014. Retrieved 9 September 2014.
External links
[edit]- An Analysis of the TACACS+ Protocol and its Implementations from a security standpoint, by Openwall
- TACACS+ Benefits and Best Practices
TACACS
View on GrokipediaOverview
Definition and Purpose
TACACS, or Terminal Access Controller Access-Control System, refers to a family of related protocols designed for remote authentication and access control in networked environments, encompassing the original TACACS, its extension XTACACS, and the enhanced TACACS+ variant.[4] These protocols operate within a client-server model to provide Authentication, Authorization, and Accounting (AAA) services, enabling centralized management of user access to network resources.[5] Originally developed by BBN Technologies for the MILNET and ARPANET networks, TACACS protocols have evolved to support modern IP-based infrastructures.[6] The primary purpose of TACACS protocols is to secure remote access by verifying user and device identities, granting permissions for specific operations, and logging activities for auditing and billing. In authentication, the protocol confirms "who" a user or device is through mechanisms like username-password pairs or challenge-response interactions. Authorization then determines "what" actions are permitted, such as executing commands on a router or accessing particular network services, while accounting tracks "what happened" during sessions, including session duration, executed commands, and resource usage.[4] In TACACS+, this separation of AAA functions allows for modular implementation, where each component can be configured independently to enhance security and flexibility in client-server interactions.[5] At a high level, TACACS is commonly used to control access to network devices such as routers, switches, and firewalls, ensuring that only authorized entities can connect and perform administrative tasks. Initially tailored for the defense-oriented ARPANET and MILNET to automate identity verification and prevent unauthorized logins, the protocols now apply broadly to enterprise IP networks for robust security management.[6] By centralizing AAA in a dedicated server, TACACS reduces administrative overhead and supports scalable security policies across distributed systems.[4]Fundamental Principles
TACACS operates on a client-server architecture, where network access servers (NAS) or similar devices function as clients that initiate communication with a centralized TACACS server to handle authentication, authorization, and accounting (AAA) functions.[3][7] This model enables centralized control over user access to network resources, with the client sending requests and the server providing responses to validate or log activities. The original TACACS and XTACACS use UDP on port 49, while TACACS+ uses TCP on the same port, which is the standard port assigned for TACACS traffic by IANA.[3][7] The original TACACS protocol is inherently stateless, treating each request-response exchange as independent without maintaining session state between interactions.[3] In contrast, TACACS+ introduces session-oriented elements with a session identifier to track ongoing interactions and support more complex AAA workflows across multiple packets, while XTACACS remains stateless like the original.[7] Encryption in TACACS varies by variant: the original protocol transmits data, including credentials, in clear text, relying on underlying network security such as point-to-point links for protection.[3] TACACS+ enhances security through partial encryption, obfuscating the packet body using a shared secret-derived key but leaving the header unencrypted to facilitate routing and basic protocol identification, while XTACACS transmits data in clear text.[7] Central to TACACS security and integrity across variants is the use of shared secrets—pre-configured keys known only to the client and server—which authenticate messages and prevent tampering.[3][7] In TACACS+, efficiency is further improved via single-connection multiplexing, allowing multiple AAA requests and responses to share a single TCP connection, reducing overhead in high-volume environments.[7] At a high level, the TACACS request-response cycle begins with the client forwarding a user's credentials or session details to the server for authentication, followed by authorization queries for permissions and accounting logs for auditing, all processed sequentially or in parallel depending on the variant's capabilities.[3][7] This cycle ensures discrete handling of AAA components, enabling granular control without embedding all functions into a single transaction.History
Development of Original TACACS
The original TACACS (Terminal Access Controller Access-Control System) protocol was developed in 1984 by BBN Technologies (then known as Bolt, Beranek and Newman) under contract to the Defense Advanced Research Projects Agency (DARPA).[2][6] It was created specifically for managing access on ARPANET and the newly established MILNET, which were unclassified packet-switched networks operated by DARPA to support research and military communications, respectively.[8] MILNET had been split from ARPANET in October 1983 to segregate military traffic, creating an urgent need for standardized security mechanisms across these interconnected systems.[9] The primary goal of TACACS was to enable secure remote login and authentication for users connecting to terminal access controllers (TACs), which served as gateways to hosts on these networks.[2] This addressed emerging threats in early networked environments by replacing informal, community-trust-based access controls—reliant on shared knowledge within the small ARPANET research community—with a formalized password verification system.[6] TACACS operated over UDP to verify user credentials at TACs before granting connections, thereby limiting unauthorized access in government and military settings where network growth was amplifying vulnerability risks.[8] Key milestones included the protocol's initial deployment on MILNET in February 1984, marking its operational rollout to enforce login controls on TACs.[10] The first implementations targeted UNIX-based systems for running TACACS daemons, allowing centralized authentication servers to manage access for remote terminals.[5] In December 1984, BBN published RFC 927, which defined a Telnet option for TACACS user identification, specifying basic authentication procedures using a 32-bit user ID to streamline secure connections without redundant logins.[2] This RFC formalized the protocol's core authentication elements for the ARPA-Internet community, responding to the security demands of expanding defense networks.[11]Introduction of XTACACS and TACACS+
In the early 1990s, as network infrastructures expanded beyond government and military applications, Cisco Systems sought to enhance the original TACACS protocol to better support enterprise router and access server environments. In 1990, Cisco developed XTACACS (Extended TACACS), a proprietary extension that introduced greater separation of authentication, authorization, and accounting (AAA) functions, allowing for more granular control over user access. XTACACS utilized UDP on port 49 for communication, maintaining compatibility with the original protocol's datagram-oriented design while addressing limitations such as the original's bundled authentication and accounting without dedicated authorization mechanisms. This evolution was driven by the need to integrate TACACS more seamlessly with Cisco's growing lineup of routers, enabling centralized management for emerging commercial networks.[3] Building on XTACACS, Cisco introduced TACACS+ in 1995 as a comprehensive redesign, positioning it as a de facto standard for AAA in device administration. Unlike its predecessors, TACACS+ employed TCP for transport to ensure reliable, connection-oriented delivery of packets, mitigating issues with UDP's potential for lost or out-of-order messages in complex networks. The protocol fully decoupled AAA processes, permitting independent handling of authentication (verifying user identity), authorization (defining permissions), and accounting (logging activities), which addressed the original TACACS's lack of robust authorization and its vulnerability to incomplete separation of concerns. Although Cisco released TACACS+ as an open protocol with publicly available specifications, certain implementation details remained proprietary to maintain compatibility within its ecosystem.[1][12] These developments were motivated by the rapid growth of enterprise networks in the 1990s, where the original TACACS's simplicity proved inadequate for scalable security in diverse, multi-vendor environments. Cisco's dominant position in the routing market—capturing over 70% share by the mid-1990s through aggressive acquisitions and innovation—facilitated widespread adoption of XTACACS and TACACS+, as administrators prioritized interoperability with Cisco hardware. A pivotal event was the IETF's publication of RFC 1492 in July 1993, which documented XTACACS as an informational update to TACACS, standardizing its extensions for broader use while highlighting its role in flexible, server-based access control. This RFC, authored with Cisco's input, underscored the protocols' shift toward supporting authorization in addition to authentication and accounting, solidifying their relevance for secure network management.[3][13][14]Technical Details
Original TACACS Protocol
The original TACACS protocol, introduced in 1984, served as a foundational access control system for authenticating users on early networks like MILNET and ARPANET. It operates over UDP on port 49, encapsulating authentication, basic authorization, and rudimentary accounting within individual packets to enable centralized validation by a dedicated server, typically running a daemon on a UNIX host. Unlike later variants, it provides no built-in encryption, transmitting sensitive data such as usernames and passwords in cleartext, which exposes it to eavesdropping.[3][15] The protocol employs a compact packet format in its simple implementation (version 0), prioritizing efficiency for resource-constrained environments. Requests and responses share a similar structure, with a fixed 6-byte header followed by optional body data containing credential strings. The header fields are defined as follows:| Offset | Size (bytes) | Field | Description |
|---|---|---|---|
| 0 | 1 | Version | Set to 0 for the simple form. |
| 1 | 1 | Type | Encodes the packet purpose (e.g., 1 for LOGIN request, 2 for REPLY). |
| 2 | 2 | Nonce | A client-generated 16-bit value used to correlate requests with responses. |
| 4 | 1 | Username Length (request) / Response (reply) | In requests, length of username (0-255 bytes); in replies, outcome code (1=accepted, 2=refused). |
| 5 | 1 | Password Length (request) / Reason (reply) | In requests, length of password (0-255 bytes); in replies, failure reason (e.g., 0=none, 1=login invalid, 3=user denied). |
| 6 | Variable | Body Data | Concatenated username and password strings, padded if necessary; absent in replies without additional data. |
XTACACS Protocol
XTACACS, or Extended TACACS, represents Cisco Systems' proprietary extension to the original TACACS protocol, introduced in the early 1990s to address limitations in handling modern network access control. Like its predecessor, XTACACS operates over UDP on port 49, ensuring low-overhead communication between network devices and authentication servers, but it fundamentally enhances functionality by separating authentication, authorization, and accounting (AAA) into distinct packet exchanges rather than combining them in a single interaction. This separation allows for more modular processing, where authentication verifies user identity, authorization determines access privileges, and accounting logs usage details independently.[3][15] The packet structure in XTACACS builds on the original TACACS header, which includes fields for version (set to 128 to indicate the extended variant), type, a 16-bit nonce for sequencing, and lengths for variable data such as usernames and passwords. XTACACS separates AAA by sending separate UDP packets for each phase, using extended packet types based on the original TACACS format (version 128), such as authentication requests followed by separate authorization and accounting packets, without the dedicated type fields of TACACS+. These packets encapsulate relevant data in a binary format, supporting additional fields for reasons, results, and optional attributes to facilitate detailed server responses without altering the core UDP datagram efficiency.[3] Among its key enhancements, XTACACS provides robust support for AAA in router-based environments, enabling Cisco devices to offload access decisions to central servers while maintaining compatibility with terminal server operations. It also improves logging through expanded response codes (e.g., accept, reject with specific reasons) and inclusion of metadata like line identifiers and connection types, aiding in audit trails for enterprise security monitoring. Notably, XTACACS does not incorporate encryption, leaving communications vulnerable to interception, which was a deliberate design choice to prioritize simplicity over confidentiality in its era.[3][15] In practice, XTACACS found primary adoption for Cisco IOS integration within early 1990s enterprise networks, where it facilitated centralized control for dial-up and terminal access in growing IP infrastructures, often deployed alongside UNIX-based TACACS daemons modified for Cisco compatibility.[15]TACACS+ Protocol
TACACS+ is a binary protocol designed for device administration, providing centralized Authentication, Authorization, and Accounting (AAA) services through dedicated packet types that fully separate these functions.[16] It operates over TCP on port 49 to ensure reliable delivery of packets between clients (such as network devices) and servers, unlike its UDP-based predecessors.[4] The protocol supports multiplexing of multiple sessions over a single TCP connection, allowing efficient handling of concurrent AAA requests by including a unique session identifier in each packet.[16] The TACACS+ packet consists of a fixed 12-byte header followed by an optional body, where the entire body is obfuscated using a repeating 16-byte key derived from the MD5 hash of the shared secret concatenated with the session ID.[16] The header includes: a 1-byte version field with major version 12 (0xC in the high 4 bits) and minor version 0 (0x0 in the low 4 bits), i.e., 0xC0 for the standard TACACS+ version 1.0; a 1-byte type field indicating Authentication (0x01), Authorization (0x02), or Accounting (0x03); a 1-byte sequence number for ordering packets within a session (starting at 1 for clients and 2 for servers, incrementing alternately); a 1-byte flags field (e.g., bit 0x04 for single-connect mode enabling multiplexing); a 4-byte session ID that is randomly generated and used for encryption and session continuity; and a 4-byte length field specifying the length of the body (data following the header).[4] This structure ensures secure, ordered communication, with the obfuscation mechanism protecting the body to hide sensitive data like credentials.[16] Authentication in TACACS+ follows a multi-packet exchange initiated by a client START packet, to which the server responds with a REPLY, potentially prompting further CONTINUE packets from the client until success or failure is determined.[4] It supports flexible methods including ASCII prompts, PAP (Password Authentication Protocol), CHAP (Challenge Handshake Authentication Protocol), and MS-CHAP, allowing arbitrary-length exchanges for custom authentication mechanisms.[16] Authorization occurs separately, often per-command, where the client sends a request with details like the proposed command, and the server approves, denies, or modifies it based on policy.[4] Accounting records events such as session start, stop, or updates, capturing attributes like user actions and resource usage without altering the ongoing session.[16] Advanced features enhance TACACS+'s flexibility through Argument-Value Pairs (AVPs), which are type-length-value encoded attributes in authorization and accounting packets, such as "service=shell", "cmd=show", or "cmd-arg=interface" for granular control.[4] Session IDs provide continuity across AAA phases, ensuring that authentication, authorization, and accounting for a single user interaction remain linked, even in multiplexed connections.[16] These elements allow TACACS+ to support diverse network environments while maintaining security through its integrated obfuscation.[4]Comparisons with Other Protocols
Comparison with RADIUS
TACACS+ and RADIUS are both protocols for Authentication, Authorization, and Accounting (AAA) in network environments, but they differ significantly in design philosophy and application, with TACACS+ optimized for device administration and RADIUS geared toward broader user access control.[1] A primary distinction lies in their transport mechanisms: TACACS+ operates over TCP on port 49, providing reliable, connection-oriented communication that ensures packet delivery and reduces issues from network congestion or loss. In contrast, RADIUS uses UDP on ports 1812 (authentication) or 1645 (legacy), prioritizing speed over reliability, which can lead to occasional packet drops in unreliable networks.[1] In handling AAA functions, TACACS+ fully separates authentication, authorization, and accounting into distinct processes, enabling granular command-level authorization—for instance, permitting a user to execute specific router commands while denying others. RADIUS, however, combines authentication and authorization into a single step, with accounting handled separately, making it more efficient for simpler end-user access but less flexible for detailed administrative controls.[1] TACACS+ is predominantly employed for securing administrative access to network devices, such as CLI sessions on routers and switches, where precise control over privileged operations is essential. RADIUS, on the other hand, excels in scenarios involving user authentication for services like dial-up connections, Network Access Servers (NAS), VPNs, and wireless networks.[1] Regarding attribute support, TACACS+ utilizes flexible attribute-value (AV) pairs that allow for customizable, vendor-specific extensions tailored to administrative tasks, such as per-command auditing. RADIUS relies on a standardized set of attributes defined in its protocol specifications, which promotes interoperability but limits adaptability for complex, device-centric authorizations.[1]| Aspect | TACACS+ | RADIUS |
|---|---|---|
| Transport Protocol | TCP (reliable, connection-oriented) | UDP (fast, but prone to packet loss) |
| AAA Separation | Fully separate (granular authorization) | Combined auth/authz; separate accounting |
| Primary Use Cases | Device administration (e.g., CLI access) | User access (e.g., dial-up, NAS, VPN) |
| Attribute Flexibility | Flexible AV pairs for admin tasks | Standardized attributes for interoperability |
