Vorwort
In modernen komplexen Arbeitsumgebungen benötigen Benutzer häufig Zugriff auf mehrere Anwendungen, die sich zudem auf unterschiedlichen Rechnern befinden können. Dazu müssen sie oft verschiedene Kennungen und Kennwörter benutzen. Unterschiedliche Anwendungen legen möglicherweise auch unterschiedliche Regeln fest, denen die Kennwörter entsprechen müssen. Außerdem ist es häufig erforderlich, unterschiedliche Kennwörter in verschiedenen Intervallen zu ändern. All dies bedeutet einen erhöhten Verwaltungsaufwand. Dieser fällt nicht nur bei den Benutzern an, sondern auch bei der Benutzerverwaltung, die vergessene Kennwörter zurücksetzen und wegen abgelaufener Kennwörter gesperrte Kennungen freigeben muss.
Dieser erhöhte Verwaltungsaufwand kann durch den Einsatz eines Single-Sign-On-Systems (SSO-System) vermieden werden. Ein SSO-System ist ein System zur automatischen und komfortablen Anmeldung an Netzressourcen in heterogenen Netzwerken. Nach einer einmaligen Identifikation und Authentifikation – auch mit Hilfe einer Chipkarte – automatisiert ein SSO-System alle weitere Anmeldungen des Benutzers im Netz.
Kerberos-Konzept
Kerberos ist ein standardisiertes Netzwerk-Authentisierungsprotokoll, das am Massachusetts Institute of Technology (MIT) entwickelt wurde.
Es handelt sich um ein Sicherheitssystem, das auf kryptographischen
Verschlüsselungsverfahren basiert. Bei einer Authentisierung mit Kerberos werden keine Kennwörter im Klartext über das Netzwerk gesendet. Dadurch wird das Abfangen von Kennwörtern im Netzwerk verhindert.
Die aktuelle Version von Kerberos ist in RFC1510 (Request for Comments) standardisiert. Die Standards selber sind definiert durch die Internet Engineering Task Force (IETF) und die Internet Engineering Steering Group (IESG). Umfassende Informationen zu den RFCs sind auf der Homepage der IETF zu finden: http://www.ietf.org/rfc/
Kerberos arbeitet mit symmetrischer Verschlüsselung, d.h. alle Schlüssel liegen an zwei Stellen vor, beim Eigentümer eines Schlüssels (Principal) und beim KDC (Key Distribution Center). Ein Schlüssel wird vom Kennwort eines Principals abgeleitet.
Kerberos-Principal
Der Kerberos-Principal hat einen eindeutigen Namen, der aus beliebig vielen
Komponenten bestehen kann. SECOS unterstützt maximal 1800 Bytes für den Principal-Namen. Jede Komponente ist durch den Komponenten-Separator ’/' voneinander getrennt. Die letzte Komponente ist der Realm, der von den übrigen Komponenten durch den Realm-Separator ’@’ getrennt ist.
Der Name des Principal einer Anwendung ist üblicherweise aus drei Komponenten aufgebaut: Anwendung, Instanz und Realm. Das Format eines typischen Kerberos-V5-Principal-Namens ist:
Anwendung/Instanz@REALM
mit
Anwendung
’host’ für die Anwendung $DIALOG oder der Name der Anwendung
Instanz
DNS-Name des Rechners, auf dem die Anwendung läuft
REALM
Name der Kerberos-Domäne, per Konvention in Großbuchstaben dargestellt
Beispiel für einen typischen Kerberos-Principal im BS2000
host/bs2osd.fts.net@FTS.NET
Im BS2000 muss der Name des Principal mit dem SECOS-Kommando /ADD-KEYTAB-ENTRY in die Key-Tabelle aufgenommen werden.
Der Administrator des Windows Domain Controller muss einen Service Account für den Client einrichten (siehe dazu auch das Beispiel unten).
Voraussetzungen für den Einsatz von Kerberos
KDC
Es wird ein bestehender KDC vorausgesetzt, z.B. der „Domain Controller“ (PDC) von Windows 2000, der diese Funktionalität unterstützt.
Client
Wird am Client-PC über eine Terminal-Emulation eine Verbindungsanforderung zu BS2000 gestellt, so ist es Aufgabe der Terminal-Emulation, sich ein gültiges Ticket zu besorgen und dieses dann an das BS2000-System weiterzureichen.
Die Client-Betriebssysteme müssen „kerberos-fähig“ sein:
Windows-Systeme bieten die Kerberos-Unterstützung standardmäßig ab Windows 2000 ( aktuell bei Windows Server 2016 und 2019) in den SSPI-Bibliotheken. Die SSPI-Aufrufe sind bereits ab Windows 95 möglich.
für UNIX-Systeme stehen GSSAPI-Bibliotheken frei zur Verfügung, zudem sind sie in manche Betriebssysteme (zum Beispiele Solaris ab Sun OS 5.8) integriert. Die C-Bindings von GSSAPI sind standardisiert (RFC 2744).
Die Terminal-Emulation muss die Authentisierung mit Kerberos unterstützen. Wenden Sie sich bitte diesbezüglich an den Hersteller Ihrer Terminal-Emulation.
Server
Der Server (BS2000) muss erkennen, dass die Verbindung „kerberos-fähig“ ist. Dazu muss sich der Client (z.B. die Terminal-Emulation) beim Verbindungsaufbau als DSS9763 (Device Type
X’4F’
) anmelden.
Ablauf einer Authentisierung bei Start einer $DIALOG-Verbindung in das BS2000
Der Benutzer an einer Terminal-Emulation öffnet den BS2000-Dialog wie gewohnt.
Das BS2000 schickt eine LOGON-Aufforderung an die Emulation.
Der Benutzer gibt das Kommando /SET-LOGON-PARAMETERS mit Jobname, Benutzerkennung, Abrechnungsnummer und gegebenenfalls weiteren Operanden, jedoch ohne Kennwort, ein.
Für den Benutzer unsichtbar laufen daraufhin folgende Aktionen ab:
Das BS2000 schickt eine Ticket-Anforderung an die Terminal-Emulation.
Diese besorgt sich ein Ticket vom Key Distribution Center und schickt es an das BS2000.
Dort wird das Ticket durch Entschlüsseln validiert.
Schließlich wird im BS2000 geprüft, ob der als Kerberos-Principal identifizierte Besitzer des Tickets Zugriff auf die im Kommando /SET-LOGON-PARAMETERS angegebene Benutzerkennung hat. Abhängig vom Ergebnis dieser Prüfung wird der Zugang gewährt oder abgelehnt.
Das Ergebnis der Authentisierung wird in BS2000 als KTC event in einem SAT-Record abgelegt.
Bei Einsatz des Produkts Jobvariablen enthält die System-Jobvariable
$SYSJV.PRINCIPAL den Namen des Principal.
Kommandos zum Zugangsschutz
Die Kommandos zur Vereinbarung des Zugangsschutzes für eine Kennung wurden in der Zugangsklasse NET-DIALOG-ACCESS um die Kerberos-Principals erweitert. Damit kann festgelegt werden, welchen Principals der Zugang zu dieser Kennung erlaubt ist, und ob zur Gewährung des Zugangs ein Kennwort erforderlich ist.
Die betroffenen Kommandos sind:
/SET-LOGON-PROTECTION
/MODIFY-LOGON-PROTECTION
/SHOW-LOGON-PROTECTION
Verwaltung der Schlüssel in der Key-Tabelle
Die geheimen Schlüssel auf dem BS2000-Host werden in der Key-Tabelle verwaltet. Ein Eintrag in der Key-Tabelle besteht aus dem Namen des BS2000-Rechners, wie er im KDC (Key Distribution Center) eingetragen ist, und mehreren Schlüsseln, die über kryptographische Verfahren aus dem angegebenen Kennwort und dem Rechnernamen abgeleitet werden. Das Kennwort selbst wird nicht gespeichert.
Folgende Kommandos verwalten die Key-Tabelle:
/ADD-KEYTAB-ENTRY
/MODIFY-KEYTAB-ENTRY
/REMOVE-KEYTAB-ENTRY
/SHOW-KEYTAB-ENTRY
BS2000-Komponente SECOS-KRB
Die SECOS-Komponente SECOS-KRB enthält die Schnittstelle zur Abwicklung der Kerberos-Authentisierung im BS2000.
Beispiel
Eine BS2000-Benutzerkennung soll in ein Single-Sign-On-Verfahren auf Basis einer Windows-Domänenkennung eingebunden werden, so dass ein an Windows angemeldeter Benutzer beim Kommando /SET-LOGON-PARAMETERS kein Passwort mehr angeben muss.
Für das folgende Beispiel gelten folgende Voraussetzungen für die Software-Konfiguration:
Windows-Server (Domain-Controller)
Windows 2000 oder Windows Server 2003 sowie Windows Server 2016 oder 2019
Windows-Clients (PCs der BS2000-Nutzer)
Windows 2000, Windows XP oder Windows 10
Terminal-Emulation mit Unterstützung des Terminal-Protokolls für Kerberos im BS2000.
Gehen Sie dazu im Windows Domain Controller und im BS2000 wie folgt vor:
Im Windows Domain Controller
Stellvertreterkennung auf dem Domain Controller einrichten
Für das BS2000-System müssen auf dem Domain Controller Kerberos-Schlüssel hinterlegt werden. Dazu wird eine Stellvertreterkennung auf dem Domain-Controller eingerichtet:
- Rufen Sie den Server Manager auf und starten Sie das Local Security Policy-Tool
- Klicken Sie auf Local Policies und dann auf die Sicherheitsoptionen und legen Sie die für Kerberos zulässigen Verschlüsselungstypen fest.
- Starten Sie vom Server Manager aus das Active Directory Users and Computers-Tool.
- Klicken Sie mit der rechten Maustaste auf den Ordner „Benutzer“ und wählen Sie die Funktion Neu: Benutzer aus.
Tragen Sie den Namen der Benutzerkennung ein.
Speichern Sie die Benutzerkennung.
- Füllen Sie die Felder auf der Registerkarte „Account” aus.
Der Name der Benutzerkennung ist frei wählbar. Es ist sinnvoll, einen Namen zu wählen, der auf die Verwendung als Platzhalter für ein BS2000-System hinweist.
Im Domain Controller den Kerberos-Namen für das BS2000-System zuweisen
Der Stellvertreterkennung wird per „Account Mapping“ zusätzlich der Name eines BS2000-Rechners in Kerberos-Notation zugewiesen.
Geben Sie folgendes Kommondo im DOS-Fenster an:
ktpass -princ host/hostname@NT-DNS-REALM-NAME -mapuser account
-pass password -crypto encryption-type -ptype KRB5_NT_PRINCIPAL -out keytab-entry
Die Parameter sind:
hostname
DNS-Name des BS2000-Systems
NT-DNS-REALM-NAME
DNS-Name der Active-Directory-Domäne. Dieser Name
ist ein fester Wert für jede Active-Directory-Domäne.account
Stellvertreterkennung
password
Kennwort für die Stellvertreterkennung
(max.127 Zeichen)encryption-type Gibt die Schlüssel an, die im Keytab-Eintrag generiert werden KRB5_NT_PRINCIPAL
Kerberos Principal (ab Windows Server 2003)
keytab-entry
Ausgabedatei für Keytab-Eintrag
Hinweise
- Das Kommando ist in der zentralen Seite für Microsoft-Dokumentation und das Lernprogramm für Entwickler und Technologieexperten. Die Beschreibung finden Sie im Internet unter http://support.microsoft.com/en-us/.
Geben Sie unter SEARCH „ktpass“ ein und drücken Sie die Eingabetaste. Das gleiche Kennwort wird im nächsten Schritt auch im BS2000 angegeben. Verwenden Sie auf jeden Fall ein gutes, nicht erratbares Kennwort. Wer dieses Kennwort kennt und über Programmiererfahrung verfügt, kann sich dem BS2000 gegenüber nach Belieben identifizieren.
Windows und BS2000 verwenden unterschiedliche Zeichenkodierung (ASCII bzw. EBCDIC). Außerdem können auf beiden Systemen länderspezifische Zeichensatzvarianten installiert sein. Verwenden Sie deshalb nur Zeichen aus dem „Internationalen“ Zeichensatz, also keine Umlaute. Nehmen Sie lieber ein etwas längeres Kennwort, um das „Erraten“ zu erschweren, z. B.
ktpass -princ host/d016ze04.mch.fts.net@FTS.NET -mapuser d016ze04 -pass liebereinbisschenlaenger -ptype KRB5_NT_PRINCIPAL -out keytab-entry
Ab Windows Server versendet das KDC die Tickets mit einer Key Version Number (KVNO). Es muss sichergestellt werden, dass die entsprechende KVNO auch im BS2000 eingetragen wird. Beachten Sie dazu die
entsprechende Ausgabe desktpass
Kommandos.. . . Successfully mapped host/d016ze04.mch.fts.net to d016ze04. Key created. Output keytab to keytab-entry: Keytab version: 0x502 keysize 46 host/d016ze04.mch.fts.net@FTS.NET ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype 0x3 ...
Im BS2000
Kerberos-Schlüssel im BS2000 einrichten
Die Verwaltung der Kerberos-Schlüssel im BS2000 unterliegt dem
Sicherheitsbeauftragten (standardmäßig die Benutzerkennung SYSPRIV). Das Kommando dazu lautet:/ADD-KEYTAB-ENTRY *STD, 'host/hostname@NT-DNS-REALM-NAME' -
/ ,KEY = *PASSWORD('password',KEY-VERSION=<key_version_number>)
Für
hostname
,NT-DNS-REALM-NAME
,password
undkey version number
müssen dieselben Werte angegeben werden wie im Domain Controller. Bitte beachten Sie, dass speziell NT-DNS-REALM-NAME per Konvention in Großbuchstaben angegeben werden muss.Beispiel
/ADD-KEYTAB-ENTRY *STD, 'host/d016ze04.mch.fts.net@FTS.NET' -
/ ,KEY = *PASSWORD('liebereinbisschenlaenger',KEY-VERSION=3)
Alternativ steht das Kommando CONVERT-KEYTAB zur Verfügung mit dessen Hilfe das Einrichten des Kerberos-Schlüssels im BS2000 vereinfacht wird.
CONVERT-KEYTAB unterstützt bei Verfügbarkeit von openFT und entsprechender TRANSFER-ADMISSION die Übertragung der Ausgabedatei für den Keytab-Eintrag (im obigen Beispiel "keytab-entry") vom Domain Controller zum BS2000 und die automatische Umsetzung in entsprechende Kommandos zum Eintragen des Schlüssels im BS2000.
CONVERT-KEYTAB fügt die Schlüssel der verschiedenen Verschlüsselungsarten aus der Keytab-Datei hinzu (falls die Keytab-Datei mit dem ktpass-Befehl und der Option
crypto -all
erstellte wurde).Beispiel
/CONVERT-KEYTAB TRANSFER-ADMISSION=getktpass,PARTNER=DOMAINCTL
Die von CONVERT-KEYTAB erzeugte Kommandodatei CONVKTAB.JCL muss dann unter der Kennung des Sicherheitsbeauftragten zum Ablauf gebracht werden. Hierfür ist es erforderlich, dass die Kennung des Sicherheitsbeauftragten das Privileg STD-PROCESSING besitzt.
Benutzerkennung für Windows-Domänenkennung freischalten
Als letzter Schritt wird für eine BS2000-Benutzerkennung festgelegt, welche Windows-Kennungen zugriffsberechtigt sind. Für den „Single-Sign-On“-Gedanken ist es dabei sinnvoll, auf die Prüfung des BS2000-spezifischen Kennworts zu verzichten. Das Kommando, das der Benutzerverwalter eingeben muss, lautet:
/MODIFY-LOGON-PROTECTION userid - / ,NET-DIALOG-ACCESS=*YES - / (PASSWORD-CHECK=*NO - / ,ADD-PRINCIPAL='windowsaccount@NT-DNS-REALM-NAME')
Die Parameter sind:
userid
BS2000-Benutzerkennung, für die Single Sign On eingeführt werden soll windowsaccount
Domänen-Kennung des Benutzers, der Zugriff auf die BS2000-Benutzerkennung erhalten soll. NT-DNS-REALM-NAME
DNS-Name der Active-Directory-Domäne, wie schon beim Einrichten des Schlüssels vergeben. Beispiel
/MODIFY-LOGON-PROTECTION TSOS - / ,NET-DIALOG-ACCESS=*YES - / (PASSWORD-CHECK=*NO,ADD-PRINCIPAL='MCHHJoer@FTS.NET')
Hinweise
Für eine BS2000-Benutzerkennung können auch mehrere Windows-Accounts zugriffsberechtigt sein.
Die Windows-Benutzerkennung und der NT-DNS-REALM-NAME werden als Wildcard-Strings interpretiert.
Unterstützte Verschlüsselungsarten
SECOS unterstützt Verbindungen mit folgenden Verschlüsselungsarten:
DES-CBC-CRC
DES-CBC-MD5
AES128-CTS-HMAC-SHA1-96
AES256-CTS-HMAC-SHA1-96
- RC4-HMAC (ARCFOUR-HMAC-MD5)
- RC4-HMAC-EXP (ARCFOUR-HMAC-MD5-EXP)