Kerberos ist ein verteilter Authentifizierungsdienst, der plattform- und systemunabhängiges Single-Sign-On ermöglicht. Mittlerweile wird Kerberos von etlichen Diensten unterstützt und ermöglicht so ein effektives und sicheres Arbeiten im Netz. Die Administration wird durch Kerberos transparenter und einfacher. Da mittlerweile auch in Windows 2000-Domänen Kerberos- Authentifizierung Standard ist, vereinfacht es ebenfalls die Integration von Windows/Linux. In dieser Session geht es um die Grundlagen von Kerberos V5 und die Installation sowie dem Betrieb auf einem Debian 3.1 System.
Vorgestellt wird das Einrichten eines KDCs, die Einbindung in PAM, der Betrieb eines kerberized Services und die Integrationsmöglichkeiten mit Windows
2. Copyright (C) 2007 Mike Wiesner
Dieses Werk kann durch jedermann gemäß den
Bestimmungen der Lizenz für die freie Nutzung
unveränderter Inhalte genutzt werden. Die
Lizenzbedingungen können unter http://www.uvm.nrw.de/
opencontent abgerufen oder bei der Geschäftsstelle des
Kompetenznetzwerkes Universitätsverbund MultiMedia
NRW, Universitätsstraße 11, D-58097 Hagen, schriftlich
angefordert werden.
Eine Nutzung außerhalb dieser Lizenz bedarf der schriftlichen
Genehmigung des Rechteinhabers.
Dieser Hinweis darf nicht entfernt werden!
5. Identitätsmanagement Begriffe
• Authentifizierung (Authentication)
• Identitätsfeststellung
• z.B. Personalausweis, Pass, ...
• Autorisierung (Authorization)
• Zuweisung von Rechten
• z.B. Mitgliedsausweis, Access Control Lists
• Überwachung (Auditing)
• Aufzeichnen von Authentifizierungen und
Autorisierungen
• z.B. Auth-Log bei Linux
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
6. Identitätsnachweis
• Benutzername/Kennwort
• Key bzw. Zertifikat
• Smart Card
• Foto
• Fingerabdruck
• Iris
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
7. Kryptographische Grundlagen
• symmetrische Verschlüsselung
• Ein Key zum Ver- und Entschlüsseln
• schwierige Verwaltung, dafür sehr schnell
• z.B. DES, 3DES, AES, RC5
• Verwendung: Kerberos, SSL
• asymmetrische Verschlüsselung
• Zwei Keys jeweils zum Ver- und Entschlüsseln
• einfachere Verwaltung aber dafür langsam
• z.B. RSA, DSA, ElGamal
• Verwendung: PGP, Signaturen, SSL
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
8. Agenda
✓ Identitätsmanagement
๏ Single Sign-On
➡ Was bedeutet Single Sign-On?
➡ Wieso brauchen wir das?
➡ Lösungsansätze
๏ Kerberos Grundlagen
๏ Implementierungen
๏ Installation & Konfiguration Linux
๏ Integrationsmöglichkeiten Linux/Windows
๏ Ausblick
9. Was bedeutet Single Sign-On?
• Benutzerauthentifizierung nur einmal
• Anschließend Zugriff auf (alle) Systeme
• Führt i.d.R. keine Autorisierung durch
• Eine Stufe darunter: Single Credential
• Ein Benutzername/Kennwort für alle Systeme
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
10. Wieso brauchen wir das?
• Produktivitätssteigerung
• Arbeitsfluss wird nicht gestört
• Einfachere Administration
• Erhöhte Sicherheit, denn ohne SSO...
• wird oft das gleiche Kennwort benutzt
• wird das Kennwort auf mehreren Systemen
gespeichert
• geht das Kennwort mehrmals über das
Netzwerk
• Nachteil: Bei einer Kompromittierung erhält der
Angreifer Vollzugriff.
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
11. Lösungsansätze
• „Lokale Lösungen“
• Benutzername/Kennwort wird lokal
gespeichert (z.B. durch Browser, Outlook, ...)
• Portale
• Einloggen bei einem zentralen Portal
• Portal steuert weitere Zugriffe
• Ticket Systeme
• Ticket mit Identitätsnachweis wird bei
der ersten Anmeldung erstellt
• Authentifizierung anschließend über
dieses Ticket
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
12. Agenda
✓ Identitätsmanagement
✓ Single Sign-On
๏ Kerberos Grundlagen
➡ Was ist Kerberos?
➡ Funktionsweise
➡ Vor-/Nachteile
๏ Implementierungen
๏ Installation & Konfiguration Linux
๏ Integrationsmöglichkeiten Linux/Windows
๏ Ausblick
13. Was ist Kerberos?
• Kerberos...
• ... ist ein verteilter Authentifizierungsdienst.
• ... ist konzipiert für offene und unsichere
Netze.
• ... ermöglicht Single Sign-On.
• ... ist Plattform- und Systemunabhängig.
• ... verwendet symmetrische Verschlüsselung.
• ... ist in RFC 1510 beschrieben.
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
14. Principals & Realms
• Kerberos Principals bestehen aus:
• component[/component]...@REALM
• z.B.: mike/admin@SECPOD.DE
• Die erste component gibt den Benutzernamen
an.
• Die zweite (optionale) component die „Rolle“.
• Der Realm gibt die Authentifizierungs-Domäne
an.
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
15. KDC
• KDC = Key Distribution Center
• Besteht aus:
• Principal Database
• Speichert Principals und Keys
• Authentication Server (AS)
• Erstellt das Ticket Granting Ticket (TGT)
• Ticket Granting Server (TGS)
• Erstellt Service Tickets für ein TGT
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
16. Client Principal
Client timestamp
krbgt principal name
Client
Requested lifetime
AS session key
krbtgt principal name
Ticket lifetime
User's key
AS session key
Client principal Authentication Server
Ticket lifetime
KDC timestamp
Client IP address
TGT
TGS key
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
17. Service principal
AS session key
Client principal
Ticket lifetime
KDC timestamp
Client IP address
TGT
TGS key
Client
Client principal
Client timestamp
TGS
Authenticator AS Session key
Requested lifetime
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
18. TGS session key
Service principal name
Ticket lifetime
AS Session key
TGS session key
Client principal
Client
Ticket lifetime
KDC timestamp
Client IP address
TG S
Service Ticket Service key
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
19. Service Specific Information
TGS session key
Client principal
Ticket lifetime
KDC timestamp
Client IP address
Client Service Ticket Service key
Client principal
Service
Client timestamp
Authenticator TGS Session key
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
20. Vorteile von Kerberos
• Sichere, gegenseitige Authentifizierung aller
Beteiligten
• Keine Verbindung zwischen KDC und Services
nötig
• Geringe Belastung des KDCs
• Autorisierung wird dem Service überlassen
• Plattform- und Systemunabhängig
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
21. Nachteile von Kerberos
• Keys müssen zu den Services verteilt werden
• Uhrzeiten müssen synchronisiert sein (ntpdate,
rdate)
• nicht ohne weiteres mit Firewalls einsetzbar
(NAT)
• mangelnde Unterstützung bei den Clients
(derzeit)
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
22. Vorteile gegenüber NTLM
• Kerberos ist Standard
• „Passwort“ geht nur einmal über das Netz
• Gegenseitige Authentifizierung
• Delegation möglich
• Keine Kommunikation zwischen Server und KDC
• Tickets werden beim Client gecached =>
schneller
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
23. weitere Protokolle/APIs
• Generic Security Services API (GSSAPI):
• generisches Interface zur Unterstützung von
„strong Authentication“, wie z.B. Kerberos
• wird oft von Services verwendet um Kerberos
zu unterstützen
• Security Support Provider Interface (SSPI):
• Microsoft Pendant zu GSSAPI
• Simple and Protected GSSAPI Negotiation
Mechanism (SPNEGO):
• Übermittlung eines Kerberos-Tickets z.B. per
HTTP
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
24. Agenda
✓ Identitätsmanagement
✓ Single Sign-On
✓ Kerberos Grundlagen
๏ Implementierungen
➡ MIT
➡ Heimdal
➡ Microsoft
๏ Installation & Konfiguration Linux
๏ Integrationsmöglichkeiten Linux/Windows
๏ Ausblick
25. MIT
• Referenzimplementierung
• für Linux und Windows erhältlich
• weit verbreitet
• wird in den USA entwickelt
• Unterstützt seit 1.3 unter anderem RC4 und AES
zur Verschlüsselung
• wird von vielen Anwendungen unterstützt
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
26. Heimdal
• neuere Implementierung
• nur für Linux erhältlich
• wird außerhalb der USA entwickelt
• bessere Master/Slave Synchronisierung
• Unterstützung von (3)DES, AES und RC4
• Kerberos API und GSSAPI unterscheiden sich
jedoch von den MIT APIs
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
27. Microsoft
• neueste Implementierung (seit Windows 2000)
• unterstützt nur Kerberos 5
• unterstützt nur RC4 und DES, kein 3DES
• Unix Clients mit Windows KDC ist möglich
• Windows Clients mit Unix KDC ist nicht ohne
weiteres möglich.
• kein GSSAPI (dafür SSPI)
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
32. KDC einrichten (3)
Admin Benutzer Rechte zuweisen
kdc# vi /etc/krb5kdc/kadm5.acl
mike/admin@SECPOD.DE *
Keytab mit Kadmin Principals erzeugen
kdc# kadmin.local
kadmin.local: ktadd -k /etc/krb5kdc/kadm5.keytab kadmin/admin kadmin/
changepw
kadmin.local: exit
kdc# /etc/init.d/krb5-adminserver restart
Benutzer anlegen und testen
kdc# kadmin
kadmin: addprinc mike
kadmin: addprinc root
kadmin: exit
kdc# kdestroy
kdc# kinit mike
kdc# klist
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
33. KDC einrichten (4)
In der DNS-Zone für secpod.de (forward) folgende Einträge einfügen:
_kerberos._udp.SECPOD.DE. IN SRV 1 0 88 kdc.secpod.de.
_kerberos._tcp.SECPOD.DE. IN SRV 1 0 88 kdc.secpod.de.
_kerberos-adm._tcp.SECPOD.DE. IN SRV 1 0 749 kdc.secpod.de.
_kpasswd._udp.SECPOD.DE. IN SRV 1 0 464 kdc.secpod.de.
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
34. Client einrichten (1)
• Kerberos Client-Pakete installieren
• Testen
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
35. Client einrichten (2)
Kerberos Client-Pakete installieren:
client# apt-get install krb5-user krb5-clients ssh-krb5
Testen:
client# kinit mike/admin
client# kadmin
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
36. Kerberos Login anlegen (1)
• Host-Principal anlegen und Key exportieren
• lokalen Benutzer anlegen
• PAM Modul installieren
• PAM einrichten
• testen
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
37. Kerberos Login anlegen (2)
Host-Principal anlegen und Key exportieren
client# kadmin
kadmin: addprinc host/client.secpod.de
kadmin: ktadd host/client.secpod.de
kadmin: exit
lokalen Benutzer anlegen
client# adduser -–disabled-password mike
PAM Modul installieren
client# apt-get install libpam-krb5
PAM einrichten
client# vi /etc/pam.d/common-auth
auth sufficient pam_krb5.so forwardable
auth required pam_unix.so nullok_secure
client# vi /etc/pam.d/common-password
password sufficient pam_krb5.so use_authtok
password sufficient pam_unix.so ...
client# vi /etc/login.defs
CLOSE_SESSIONS yes
login mike
klist
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
38. Kerberized SSH (1)
• Kerberized SSH installieren
• Principal anlegen und Key exportieren
• Benutzer anlegen
• testen
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
39. Kerberized SSH (2)
Kerberized SSH installieren
server# apt-get install ssh-krb5 krb5-user
Principal anlegen und Key exportieren
server# kinit mike/admin
server# kadmin
kadmin: addprinc host/server.secpod.de
kadmin: ktadd host/server.secpod.de
kadmin: exit
Benutzer anlegen
server# adduser –-disabled-password mike
Testen
client# login mike
mike@client$ ssh server
mike@server$ klist
mike@server$ exit
mike@client$ klist
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
40. weitere Services
• Cyrus IMAP
• OpenLDAP
• Putty
• Reflection X
• Eudora
• Apple Mail.app
• Telnet
• ...
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
41. Agenda
✓ Identitätsmanagement
✓ Single Sign-On
✓ Kerberos Grundlagen
✓ Implementierungen
✓ Installation & Konfiguration Linux
๏ Integrationsmöglichkeiten Linux/Windows
➡ Windows Clients mit Linux KDC
➡ Linux Clients mit Windows KDC
➡ Linux Kerberized Service mit Windows
KDC
๏ Ausblick
42. Windows Clients mit Linux KDC
• mit Hilfe eines Windows Domain Controllers via
Cross-Realm Trust
• Authentifizierung über den Linux KDC
• Autorisierung über Windows Domain
Controller
• mit Windows Standalone PCs über das Tool
ksetup
• Authentifizierung über den Linux KDC
• Autorisierung über lokale Benutzerrechte
• Achtung: Einige Windows Programme haben
Probleme mit einem Linux-KDC!
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
43. Linux Clients mit Windows KDC
• Windows Domain Controller in der /etc/
krb5.conf als kdc eintragen
• Kerberos Client muss RC4 Verschlüsselung
unterstützen
• Kennwortänderung und Administration nur mit
Hilfe von Samba möglich
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
44. Fallbeispiel Linux/Windows
• Betriebssystem: MS Windows 2003 Server
Standard
• Domain: winsecpod.de, Realm: WINSECPOD.DE
• Benutzer: administrator, mike
winkdc server
(MS Kerberos) (samba,http)
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
45. Samba einrichten (1)
• Samba-Pakete installieren
• Samba konfigurieren
• Windows Domäne beitreten
• testen
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
46. Samba einrichten (2)
Samba-Pakete installieren
server# apt-get install samba
Samba konfigurieren
server# vi /etc/samba/smb.conf
security = ADS
client use spnego = yes
realm = WINSECPOD.DE
password server = winkdc.winsecpod.de
add user script = /usr/sbin/useradd -g winusers -m %u
use kerberos keytab = yes
Windows Domäne beitreten
server# net join -U administrator
server# /etc/init.d/samba restart
Testen
- Windows Explorer öffnen und „server“ eingeben.
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
47. HTTP einrichten (1)
• Benutzer im ActiveDirectory anlegen
• Apache Kerberos Modul installieren
• Service Key erzeugen
• Apache Kerberos Modul konfigurieren
• testen
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com
48. HTTP einrichten (2)
Benutzer mike im ActiveDirectory anlegen
Apache Kerberos Modul installieren
server# apt-get install libapache2-mod-auth-kerb
Service Key erzeugen
- ktpass Installieren (CD support/tool)
- Benutzer http_server im Active Directory anlegen mit den Optionen „Kennwort läuft nie ab“ und
„Benutzer kann das Kennwort nicht ändern“
winkdc C:> ktpass -out http.keytab -princ HTTP/
server.winsecpod.de@WINSECPOD.DE -pass * -mapuser http_server
- http.keytab auf den Server kopieren
Apache Kerberos Modul konfigurieren
server# vi /var/www/test/.htaccess
AuthType Kerberos
AuthName „Kerberos Test Login“
KrbAuthRealms WINSECPOD.DE
Krb5Keytab /http.keytab
KrbServiceName HTTP
require valid-user
Testen
- URL im Internet Explorer aufrufen
Single Sign-On mit Kerberos - (C) 2007 Mike Wiesner - info@mwiesner.com