DataSunrise sponsert AWS re:Invent 2024 in Las Vegas, bitte besuchen Sie uns am Stand #2158 von DataSunrise

Konfiguration des Kerberos-Authentifizierungsprotokolls

Konfiguration des Kerberos-Authentifizierungsprotokolls

Benannt nach einem dreiköpfigen Hund, der in den alten griechischen Mythen die Tore der Unterwelt bewacht, bietet das Kerberos-Protokoll einen sicheren Authentifizierungsdienst für Computernetzwerke. Es führt eine gegenseitige Authentifizierung zwischen dem Benutzer und dem Server durch, unterstützt durch ein vertrauenswürdiges drittes Schlüsselverteilungszentrum (KDC), das Authentifizierungs- und Ticket-Dienste bereitstellt. Alle wichtigen Betriebssysteme, einschließlich Microsoft Windows, Linux, Apple OS X und FreeBSD, unterstützen das Kerberos-Protokoll.

Nachrichten des Kerberos-Protokolls sind durch Shared-Secret-Kryptographie gegen Replay-Angriffe und Abhören geschützt. Der Hauptzweck von Kerberos besteht darin, die Übertragung verschlüsselter Passwörter über das Netzwerk zu vermeiden. Es eliminiert die Bedrohung durch Paket-Sniffer und erhöht die allgemeine Netzwerksicherheit Sicherheit.

Obwohl der Kerberos-Sicherheitsanbieter effektiv mit schweren Sicherheitsbedrohungen umgeht, kann die Implementierung aufgrund einer Vielzahl von Einschränkungen schwierig sein:

  • Wenn der Kerberos-Server ausfällt, können sich Benutzer nicht anmelden. Das Problem kann durch Ersatz-Authentifizierungsmechanismen und mehrere Kerberos-Server gelöst werden.
  • Die Uhren der beteiligten Hosts müssen synchronisiert sein. Andernfalls schlägt die Authentifizierung fehl, da Kerberos-Tickets eine gewisse Verfügbarkeit haben.
  • Kerberos kann nicht verwendet werden, wenn Benutzer von unzuverlässigen Systemen aus auf Dienste zugreifen möchten.
  • Im Falle der Verwendung symmetrischer Kryptographie kann bei einem Kompromittieren der Authentifizierungsinfrastruktur ein Angreifer jeden Benutzer nachahmen.
  • Jeder Netzwerkdienst, der einen anderen Hostnamen benötigt, benötigt seinen eigenen Satz Kerberos-Schlüssel.

Wie Kerberos-Authentifizierung funktioniert

kerberos

Ein Schlüsselverteilungszentrum besteht aus einem Authentifizierungsserver (AS) und einem Ticket Granting Server (TGS). TGT ist ein Ticket Granting Ticket.

  1. Der Benutzer gibt den Login und das Passwort ein. Die Klartext-Benutzer-ID geht mit einer Dienstanforderung im Namen des Benutzers an den Authentifizierungsserver (AS).
  2. AS prüft, ob der Benutzer-Login in der Datenbank vorhanden ist. Wenn Informationen über diesen Benutzer vorhanden sind, kann AS einen geheimen Kundenschlüssel entsprechend der Benutzer-ID und dem Passwort erzeugen. AS sendet dem Benutzer:
    • Den Client/TSG-Sitzungsschlüssel (verschlüsselt mit dem geheimen Kundenschlüssel);
    • TGT einschließlich der Benutzer-ID, Netzwerkadresse und Ticket-Gültigkeitsdauer + Client/TGS-Sitzungsschlüssel (verschlüsselt mit dem geheimen TGS-Schlüssel).
  3. Der Benutzer entschlüsselt die erste Nachricht, kann aber die zweite nicht entschlüsseln, da der Benutzer nicht den geheimen TSG-Schlüssel hat. Der Client sendet eine Nachricht an den TGS:
    • Das von AS empfangene TGT + Server-ID + TGS/Klient-Geheimschlüssel (verschlüsselt mit dem geheimen TGS-Schlüssel);
    • Den Authentifikator einschließlich der Klient-ID und des Zeitstempels (verschlüsselt mit dem Client/TSG-Sitzungsschlüssel).
  4. Der TGS entschlüsselt die erste Nachricht, erhält das TGT + TGS/Klient-Sitzungsschlüssel, mit dem er die zweite Nachricht entschlüsselt. Der TGS prüft, ob die Benutzer-ID aus der ersten Nachricht mit der ID aus der zweiten Nachricht übereinstimmt und ob der Zeitstempel den Ticket-Gültigkeitszeitraum nicht überschreitet. Wenn alles korrekt ist, sendet der TSG dem Benutzer:
    • Die verwendete ID, Netzwerkadresse, Ticket-Gültigkeitsdauer + Client/Server-Sitzungsschlüssel (verschlüsselt mit dem geheimen Server-Schlüssel);
    • Den Client/Server-Sitzungsschlüssel (verschlüsselt mit dem Client/TGS-Geheimschlüssel).
  5. Der Client sendet Folgendes an den Server, auf den er zugreifen möchte:
    • Die verwendete ID, Netzwerkadresse, Ticket-Gültigkeitsdauer + Client/Server-Sitzungsschlüssel (verschlüsselt mit dem geheimen Server-Schlüssel);
    • Den Authentifikator einschließlich der ID und des Zeitstempels (verschlüsselt mit dem Client/Server-Sitzungsschlüssel).
  6. Der Zielserver entschlüsselt die Nachrichten des Benutzers, prüft, ob die Benutzer-ID aus beiden Nachrichten den gleichen Wert hat und ob die Gültigkeitsdauer nicht überschritten ist, und sendet dann dem Client den folgenden Parameter, um seine Identität zu bestätigen:
    • Zeitstempel + 1 (verschlüsselt mit dem Client/Server-Sitzungsschlüssel).

Der Client prüft, ob der Zeitstempelwert Zeitstempel + 1 ist, was die wahre Identität des Servers zeigt. Wenn dies der Fall ist, kann der Client dem Server vertrauen und mit ihm arbeiten.

Konfiguration des Kerberos-Authentifizierungsprotokolls

Um das Kerberos-Protokoll zu konfigurieren, müssen Sie Folgendes tun:

  1. Erstellen Sie einen Active Directory-Benutzer (Sie können auch einen bestehenden verwenden).
    • Melden Sie sich beim Domänencontroller-Server an, klicken Sie auf Start → Administrative Tools und starten Sie Active Directory Users and Computers.
    • Wenn noch nicht ausgewählt, klicken Sie auf den Knoten für Ihre Domäne (domain.com).
    • Klicken Sie mit der rechten Maustaste auf Benutzer, zeigen Sie auf Neu und klicken Sie dann auf Benutzer.
    • Geben Sie im Dialogfeld Neues Objekt → Benutzer die Parameter des neuen Benutzers an. Es könnte sich um einen regulären Benutzer handeln, es sind keine zusätzlichen Rechte erforderlich. Das Benutzerkonto sollte aktiv sein (das Kontrollkästchen Account is disabled ist nicht aktiviert), und das Passwort für das Konto sollte dauerhaft sein (das Kontrollkästchen Password never expires ist aktiviert).
  2. Weisen Sie die Hauptnamen mit den verschlüsselten Schlüsseln auf dem Domänencontroller-Server zu. Für Maschinen unter Linux erstellen Sie eine keytab-Datei, die Kerberos-Hauptbenutzer und verschlüsselte Schlüsselpaare enthält. Eine keytab-Datei wird verwendet, um sich bei verschiedenen entfernten Systemen mit Kerberos zu authentifizieren, ohne ein Passwort einzugeben.
    • Erstellen Sie einen Eintrag in der keytab-Datei mit dem ktpass-Tool: ktpass /princ [email protected] /mapuser user1_backend /pass /crypto all /ptype KRB5_NT_PRINCIPAL /out C:\Users\user1\Desktop\datasunrise.keytab -setupn
      /princDer Dienstprinzipalname (SPN) im folgenden Format: @
      /mapuserOrdnet den Kerberos-Prinzennamen, der durch den princ Parameter angegeben wird, dem angegebenen Domain-Konto zu.
      /passGibt das Passwort für den Name des Prinzipalbesitzers an.
      /ptypeGibt den Prinzipaltyp an. Verwenden Sie KRB5_NT_PRINCIPAL.
      /cryptoGibt die Schlüssel an, die in der keytab-Datei generiert werden.
      /outWeisen Sie ein Verzeichnis und einen Namen für die Ausgabedatei *.keytab zu.
      -setupnSetzt den Hauptbenutzernamen nicht zusammen mit dem Dienstprinzipalnamen.
    • Erstellen Sie einen zweiten Eintrag in der keytab-Datei, um mit dem AD-Benutzer eine Verbindung zur Datenbank herzustellen. Das Beispiel zeigt die Erstellung von keytab-Einträgen zur Verbindung mit der Vertica-Datenbank unter Verwendung des AD-Benutzers. Für andere Datenbanken oder GUI-Authentifizierung führen Sie den gleichen Befehl mit dem entsprechenden Dienstnamen im Parameter /princ aus. ktpass /out ./datasunrise.keytab /princ vertica/[email protected] /mapuser user1 /mapop set /pass /ptype KRB5_NT_PRINCIPAL /crypto RC4-HMAC-NT
    • Sie müssen die keytab-Datei auf die Linux-Maschine übertragen.
  3. Konfigurieren Sie die Active Directory-Delegierung.
    • Rufen Sie auf dem Domänencontroller-Server Active Directory-Benutzer und -Computer auf, suchen Sie das Konto der Maschine, für die Sie Kerberos konfigurieren möchten.
    • Gehen Sie in den Eigenschaften-Bereich, zum Register Delegation und wählen Sie Vertrau diese Maschine nur für die einer bestimmten Dienstebindung und klicken Sie auf Hinzufügen.
    • Geben Sie im Fenster Benutzer und Computer das Benutzerkonto an, das zum Starten der Datenbank verwendet wurde, oder den Namen des Servers, auf dem das RDBMS installiert ist.
    • Optional können Sie Namen überprüfen, um zu prüfen, ob ein bestimmter Benutzer oder Computer existiert und klicken Sie auf OK, dann wählen Sie den benötigten Dienst aus und klicken Sie auf OK.
  4. Installieren und konfigurieren Sie den Kerberos-Client auf Ihrer Maschine. sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config

    Bearbeiten Sie die Datei /etc/krb5.conf, um den vollständigen Domänennamen, den Domänencontroller-Namen und den realm-Parameter hinzuzufügen

    Wichtig: Lassen Sie keine Kommentare mit dem “#” Zeichen im Konfigurationsfile.

    [libdefaults]
        default_realm       =           DOMAIN.COM    # domainspezifischer Parameter (vollständiger Domainname)
        clockskew           =           300
        ticket_lifetime     =           1d
        forwardable         =           true
        proxiable           =           true
        dns_lookup_realm    =           true
        dns_lookup_kdc      =           true
       
     
       [realms]
            DOMAIN.COM = {
            kdc            =       hostname.domain.com   # domainspezifischer Parameter (Domänencontroller-Name)
            admin_server   =       hostname.domain.com   # domainspezifischer Parameter (Domänencontroller-Name)
            default_domain =       DOMAIN.COM         # domainspezifischer Parameter (vollständiger Domainname)
            }
     
    [domain_realm]
            .domain.com = DOMAIN.COM  # domainspezifischer Parameter (Domainname für DNS-Namen)
            domain.com = DOMAIN.COM   # domainspezifischer Parameter (Domainname für DNS-Namen)
     
    [appdefaults]
            pam = {
            ticket_lifetime         = 1d
            renew_lifetime          = 1d
            forwardable             = true
            proxiable               = false
            retain_after_close      = false
            minimum_uid             = 0
            debug                   = false
            }

Für Maschinen auf dem Windows OS müssen Sie das Kerberos-Protokoll weder installieren noch konfigurieren, es muss jedoch in der Active Directory-Domäne enthalten sein. Auch um die Dienstprinzipalnamen zu setzen, wird der setspn-Befehl verwendet. Unten ist ein Beispiel für die Konfiguration einer Windows-Maschine zur Verbindung mit der MS SQL Server Datenbank unter Verwendung der AD-Benutzerinformationen.

Die Proxy-Adresse muss mit dem registrierten SPN des MSSQLSvc-Dienstes abgleichen. Verwenden Sie das SetSPN-Tool, um die beiden benötigten SPNs für das Konto der Maschine zu registrieren, für die Sie die Delegation erlaubt haben:

setspn -A MSSQLSvc/proxy-host:proxy-port proxy-host setspn -A MSSQLSvc/full-fqdn-proxy-host:proxy-port proxy-host

Die Liste aller registrierten SPNs kann mit folgendem Befehl abgerufen werden:

setspn -L proxy-host

Um den SPN-Proxy zu löschen, führen Sie Folgendes aus:

setspn -D MSSQLSvc/proxy-host:proxy-port proxy-host

Zur Überprüfung des Authentifizierungsschemas führen Sie nach dem Verbinden mit dem Server folgenden Befehl aus:

select auth_scheme from sys.dm_exec_connections where session_id=@@spid

Das Ergebnis wird dem Authentifizierungsschema entsprechen, das vom Server verwendet wurde: SQL, NTLM oder KERBEROS.

Falls Sie den Fehler “Kann den SSPI-Kontext nicht erstellen” erhalten, beziehen Sie sich auf die Microsoft-Support-Anweisungen wie Sie das Problem mit dem Sicherheitsanbieterschnittstelle beheben können.

DataSunrise kann als Authentifizierungsproxy für Cloud- und lokale Datenbanken funktionieren, um die Risiken eines unbefugten Benutzerzugriffs zu minimieren und die Authentifizierungsrichtlinien von Microsoft Active Directory und Kerberos-Protokoll aufrechtzuerhalten.

Nächste

Erstellung einer DataSunrise-VM auf Microsoft Azure

Erstellung einer DataSunrise-VM auf Microsoft Azure

Erfahren Sie mehr

Benötigen Sie die Hilfe unseres Support-Teams?

Unsere Experten beantworten gerne Ihre Fragen.

Allgemeine Informationen:
[email protected]
Kundenservice und technischer Support:
support.datasunrise.com
Partnerschafts- und Allianz-Anfragen:
[email protected]