Kerberos is an enterprise-grade network authentication protocol designed to enable secure authentication between multiple parties over an insecure network. It uses secret-key cryptography and ticket authentication to verify user identities and establish encrypted communications.
On Linux systems, Kerberos is implemented through a sophisticated suite of services, utilities, and integration with the underlying operating system authentication and authorization mechanisms. Developing expertise in these Linux Kerberos commands is essential for Linux system administrators looking to configure and manage robust, secure enterprise authentication infrastructure.
In this comprehensive 3200+ word guide, we will provide an expert breakdown of the most essential Linux Kerberos commands for authentication, security and centralized identity management across major enterprise Linux distributions.
1. kinit – Obtain and Manage Kerberos Credentials
The kinit command is the user‘s gateway to obtaining Kerberos credentials in the form of Ticket Granting Tickets (TGTs) from the Key Distribution Center (KDC). The KDC forms the backbone of any Kerberos infrastructure, providing the centralized repository of principals and encryption keys and issuing TGTs to authenticated users.
A TGT allows a user to request Service Tickets for accessing various services and machines configured to use Kerberos authentication. The kinit command handles all interactions with the KDC.
Here is the basic syntax for kinit usage:
kinit [options] principal
To obtain credentials for the user ‘bob‘, authenticating them against the KDC:
kinit bob
On the first kinit execution, the user is prompted for their Kerberos password which is used to authenticate them and verify their identity. Common options for kinit include:
Renewable tickets
kinit -R -l 10h bob@DOMAIN
-R– Request renewable tickets, allowing periodic automated renewal-l time– Lifetime to specify ticket duration, e.g. 10 hours
This enables a long-lived Kerberos credential cache, renewed until explicit deauthentication with kdestroy.
Forwardable tickets
kinit -f bob@DOMAIN
-f– Issued tickets are forwardable, allowing their use from other machines.
This supports single sign-on to additional machines after initial Kerberos authentication.
Proxy tickets
kinit -p joe@DOMAIN
-p– Request proxy tickets allowing authenticated access to services on behalf of another principal.
Allows administrators to authenticate and act as users for troubleshooting.
Caching options
kinit -c /tmp/my_cache joe@DOMAIN
-c path– Use a custom credential cache location instead of the default.
This enables advanced usage like managing isolated credentials on disk.
These kinit features provide fine-grained control over Kerberos credentials for user authentication sessions tailored to specific infrastructure requirements.
2. klist – Inspect and Troubleshoot Kerberos Tickets
Following kinit authentication, the klist command allows administrators and users to view currently held Kerberos tickets. This grants visibility into authentication state and any issues.
Basic ticket inspection with klist:
klist
This displays any active Ticket Granting Tickets (TGTs) and Service Tickets held in the current user‘s credential cache.
For deeper analysis, klist supports outputting further ticket details:
klist -efA
-e– Also output the encType attribute, displaying encryption types utilized by each credential-f– Show the full domain name and principal instead of the hostname-A– Dump the full network addresses associated with each ticket
Adding these options is invaluable for diagnosing issues around ticket encryption types or client addresses.
Here is sample detailed klist output:
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: bob@EXAMPLE.COM
Valid starting Expires Service principal
03/02/2023 13:55:56 03/02/2023 23:55:56 krbtgt/EXAMPLE.COM@EXAMPLE.COM
renew until 03/03/2023 13:55:56, Etype (skey,tkt): arcfour-hmac,aes256-cts-hmac-sha1-96
03/02/2023 13:55:56 03/03/2023 13:55:56 host/server@EXAMPLE.COM
Etype (skey,tkt): arcfour-hmac,aes256-cts-hmac-sha1-96
Addresses: server.example.com
This exposes detailed ticket parameters like encryption types, issuance dates, validity periods, associated services principals, renewable lifetimes, and network address information.
Combined with kinit options, klist provides critical operational insight for diagnosing Kerberos issues and designing a resilient infrastructure.
3. kdestroy – Explicitly Revoke Kerberos Credentials
To manually revoke Kerberos credentials and deauthenticate, Linux provides the kdestroy command. This destroys any Ticket Granting Tickets and derivative service tickets, formally logging out the user from Kerberos authentication.
Simple usage to destroy all tickets for the current user:
kdestroy
To precisely target specific credentials, kdestroy allows specifying an alternate credential cache or principal:
kdestroy -c /tmp/other-tickets
-c path– Destroy the tickets from the cache at the defined path
Or for a user:
kdestroy -p bob@DOMAIN
-p principal– Purge tickets for the given principal
This enables surgically deauthenticating users or destroying temporary credentials as needed for security.
4. kpasswd – Change User‘s Kerberos Password
The kpasswd command enables users or administrators to securely change the password for a Kerberos principal. This updates the user password without needing elevated privileges, unlike the system password.
Basic usage to update the current user‘s Kerberos password:
kpasswd
After entering the previous password, the user can input a new password complying with the defined complexity policies.
Alternatively target another principal by specifying their name:
kpasswd bob@DOMAIN
Then enter admin credentials to update that user‘s Kerberos password directly.
Integrating kpasswd with existing Linux password policy frameworks like passwd rules and pam_cracklib modules allows enforcing enterprise password standards on Kerberos.
5. Administering the Kerberos Database with kadmin
For administrators overseeing the Kerberos infrastructure itself, the kadmin and kadmin.local commands provide powerful options for managing the backend Key Distribution Center databases.
These tools give a flexible interface for interrogating, maintaining, and editing the core KDC components – the principals, policies, encryption keys, and authentication data that power the ecosystem.
Launching an interactive kadmin shell:
kadmin.local
From the shell, admins can issue database commands like:
add_principal– Add a new principal to the databaseget_principal– Retrieve and display a principal‘s attributeslist_principals– Query all principals in the databasemodify_principal– Edit principal metadata like the expiration date
Additionally, direct database operations can be executed from the command-line:
kadmin -q "get_principal admin"
Common kadmin use cases:
- Provisioning new principals – Add service and user accounts with
add_principal - Keytab administration – Use
ktaddandkeytabcommands to populate keytabs - Password management – Reset or change user passwords with
cpw - Principal metadata editing – Update metadata like expiry via
modify_principal
These database administration functions form the foundation for a properly maintained and secure KDC supporting enterprise needs.
6. kvno – Understand Key Version Numbers
A critical aspect of managing a Kerberos infrastructure is tracking encryption key versions for principals during routine key rotation. The kvno utility simplifies this by reporting the currently active key version numbers.
This is especially useful for service principals utilizing keytabs to ensure the new expected key versions have properly propagated after a change.
View the key version in use for a given principal:
kvno host/adminserver@DOMAIN
Checking kvno values provides a quick view into the key state:
Principal: host/adminserver@DOMAIN
Key version: 6
Monitoring kvno values helps guarantee seamless service continuity during security-critical encryption key rotations, avoiding deprecation of older keys still in use.
7. Manipulate Keytabs with k5srvutil and ktutil
Keytabs play a vital role in Linux Kerberos, acting as repositories of service principal encryption keys shared with client machines needing to authenticate against services.
k5srvutil – The k5srvutil command specifically manages the KDC‘s host keytab file, located at /etc/krb5.keytab on most Linux distributions. This contains the keys for the KDC service itself.
List all principals in the KDC host keytab:
k5srvutil -e -f /etc/krb5.keytab
Or merge additional key principals into the keytab from backups:
k5srvutil -e -f /etc/krb5.keytab -k newkeys.keytab
Ensuring the KDC host keytab stays properly maintained ensures resilient KDC system operation at scale.
ktutil – The ktutil interactive utility allows manipulating arbitrary keytabs for administrating service credentials:
ktutil
Inside the ktutil shell, admins can:
read_kt keytabfile– Read a service keytab for editingaddent– Append principals including encrypted key datawrite_kt– Write the finished keytab
This facilitates preparing and signing keytabs for services to enable Kerberos authentication.
8. Advanced Kerberos Ticket Management
Linux Kerberos includes advanced capabilities for manipulating credentials programmatically.
kswitch – Change the default credential cache opted in for ticket transactions:
kswitch -p other-cache-file
This seamlessly selects alternate ticket caches to use for authentication, useful in complex environments.
k5start – Launch any pluggable Kerberos daemons required for functionality like renewable tickets:
k5start
If Kerberos issues indicate a missing daemon, k5start spins up the necessary support processes for complete capability.
Conclusion: Master Linux Kerberos Security from End-to-End
Kerberos on Linux provides a sophisticated toolkit for constructing robust enterprise identity and access management infrastructure. Core user-facing commands like kinit, klist, and kdestroy enable seamless ticket-based authentication fully integrated with wider Linux security mechanisms.
At the same time, purpose-built admin tools like kadmin and ktutil deliver fine-grained control over managing massive database-backed Kerberos deployments securely at scale. Mastering this comprehensive Linux Kerberos command set cements an administrator‘s ability to architect resilient authentication systems handling millions of principals across an organization.
From inspecting complex encryption parameters during troubleshooting to instantiating keytabs for new services, these Linux capabilities support unparalleled flexibility and security compared proprietary single-sign on offerings. With Kerberos deeply embedded into major server and workstation Linux distributions, the powerful authentication protocol is here to stay as a critical enterprise IT backbone due to its robustness and defense of user identities against a range threats in modern networks.


