ACD Linux System Administration

Kerberos Notes

8-August-2002
Kerberos Testbed Notes are here

Goals

I'd like to create an MIT Kerberos server such that we can authenticate an AD user against the MIT Kerberos server. Authentication would pass through the MIT Kerberos server while authorization would be handled by the DC.
Here is a drawing of what I have in mind

What is Kerberos?

There is a somewhat good explanation on the Kerberos web site at http://web.mit.edu/kerberos/www/#what_is as well as a somewhat dated FAQ. It is a form of authentication that has been thought out over the years but is difficult to explain in a few words. In the Windows world it is faster than NTLM and contains features not possible with NTLM. The following 3 parties are involved: Thinking of the Myth of Kerberos (and forgetting most of it :-) ), I constructed a scenario. The KDC is played by Jupiter, the Kerberos Security Principal is played by the oarsman, and the Validating Server is played by Kerberos, the three-headed dog and guard of Hades. The resulting drawing is here.

Definitions

  1. authentication: The process by which a user's identity is verified (usually by a password exchange)
  2. authorization: Once authenticated, authorization is the determination of what what the user (or computer) is permitted to do.
  3. MIT Kerberos: Unix-based Kerberos -- see http://web.mit.edu/kerberos/www/. Also see my MIT Kerberos v5 server under RedHat Linux
  4. MS Kerberos: Microsoft implements kerberos 5 (RFC 1964) in the Active Directory. As a means of authentication it is meant to replace NTLM (Windows NT) style authentication.
  5. KDC: Kerberos Key Distribution Center. A key is pretty much the same as a ticket. The KDC authenticates and also issues tickets (in Windows 2000). Some kerberos servers use 2 separate servers for authentication and distribution. The Windows 2000 key distibution service is called KDCSVC and runs on DC's.
  6. Local Security Authority: portion of Windows that calls upon login services (WINLOGON and NETLOGON) to get security credentials from users. The user-side is the Local Security Subsystem (LSASS.EXE) and the server side is the Security Reference Monitor (SRM).
  7. Security Principal: This is an "entity" to be authenticated. Typically security principals are users or computers that desire access to network resources.
  8. Realm: A database of credentials. A windows domain is really a realm and vice versa. Security Principals are ojects within a realm.
  9. ticket: Encrypted information used by all parties to authenticate a security principal. When the principle attempts to access a server, a ticket must be presented.
  10. Validating Server: This is the server which the security principal is trying to access. In AD, this can be a Windows 2000 member server that offers a service. When a user attempts to access that service, his client server submits a ticket for that server which it previously obtained from the KDC. The member server validates that ticket determining that only an authorized security principal can be its holder.
  11. KRBTGT Account: This is a special account. The password associated with that account is combined with the realm name in order to create a ticket-granting ticket.
  12. Session Key: Random number generated by KDC when it builds a ticket. It is the shared secret that the KDC, the client, and the validating server have in common.
  13. Time Stamp: Date/Time that the ticket was issued and the Date/Time that the ticket will expire .

Steps to creating pass-through Authentication

[Click here for a printable form of these instructions]
So what we want to achieve is pass-through Authentication. Microsoft describes the process here The article is long but the only part we're really intersted in is the section "Setting Trust with a Kerberos Realm".

So to do pass-through authentication, we'll have to:

  1. Configure each workstation: Each workstation has to have the MIT Kerberos Realm defined for it. If the MIT Kerberos Realm is called UCAR.EDU, then I think this is done with the ksetup command:
    C:\ Ksetup /addkdc UCAR.EDU kdc.realm.ucar.edu
    
    ksetup sets a registry value -- if that's all it does, then we could look into a group policy object (GPO) to do the setting on an OU by OU basis.
  2. Help the Windows KDC trust the MIT Kerberos Realm:
  3. Help the MIT Kerberos Realm to trust the Windows KDC: Use the following MIT Kerberos administration commands to create cross-realm principals in the foreign MIT realm (note that the program is typically run on a UNIX system):
          % Kadmin -q "ank -pw password krbtgt/CIT.UCAR.EDU@UCAR.EDU"
          % Kadmin -q "ank -pw password krbtgt/UCAR.EDU@CIT.UCAR.EDU"
    
  4. Create Account Mappings: We may have to create account mappings between domain accounts and MIT Kerberos Realm accounts, even though we are using common usernames. These mappings are set up the Active Directory Management Tool. Once the mappings are set up, users should be able to change their Kerberos realm passwords from the CTRL-ALT-DEL sequence.

Configuring a Unix Kerberos 5 Server under Redhat Linux

There are notes on the RedHat page here and then I have written a document on how I set up diskserver2 to serve the realm ACD.UCAR.EDU here.

Problems and Concerns

References