DataSunrise erreicht AWS DevOps Kompetenz Status in AWS DevSecOps und Überwachung, Protokollierung, Performance

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 user1_backend@DOMAIN.COM /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/user1.domain.com@DOMAIN.COM /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.

Countryx
United States
United Kingdom
France
Germany
Australia
Afghanistan
Islands
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antarctica
Antigua and Barbuda
Argentina
Armenia
Aruba
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bosnia and Herzegovina
Botswana
Bouvet
Brazil
British Indian Ocean Territory
Brunei Darussalam
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
Cape Verde
Cayman Islands
Central African Republic
Chad
Chile
China
Christmas Island
Cocos (Keeling) Islands
Colombia
Comoros
Congo, Republic of the
Congo, The Democratic Republic of the
Cook Islands
Costa Rica
Cote D'Ivoire
Croatia
Cuba
Cyprus
Czech Republic
Denmark
Djibouti
Dominica
Dominican Republic
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands (Malvinas)
Faroe Islands
Fiji
Finland
French Guiana
French Polynesia
French Southern Territories
Gabon
Gambia
Georgia
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guernsey
Guinea
Guinea-Bissau
Guyana
Haiti
Heard Island and Mcdonald Islands
Holy See (Vatican City State)
Honduras
Hong Kong
Hungary
Iceland
India
Indonesia
Iran, Islamic Republic Of
Iraq
Ireland
Isle of Man
Israel
Italy
Jamaica
Japan
Jersey
Jordan
Kazakhstan
Kenya
Kiribati
Korea, Democratic People's Republic of
Korea, Republic of
Kuwait
Kyrgyzstan
Lao People's Democratic Republic
Latvia
Lebanon
Lesotho
Liberia
Libyan Arab Jamahiriya
Liechtenstein
Lithuania
Luxembourg
Macao
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Martinique
Mauritania
Mauritius
Mayotte
Mexico
Micronesia, Federated States of
Moldova, Republic of
Monaco
Mongolia
Montserrat
Morocco
Mozambique
Myanmar
Namibia
Nauru
Nepal
Netherlands
Netherlands Antilles
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
North Macedonia, Republic of
Northern Mariana Islands
Norway
Oman
Pakistan
Palau
Palestinian Territory, Occupied
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Pitcairn
Poland
Portugal
Puerto Rico
Qatar
Reunion
Romania
Russian Federation
Rwanda
Saint Helena
Saint Kitts and Nevis
Saint Lucia
Saint Pierre and Miquelon
Saint Vincent and the Grenadines
Samoa
San Marino
Sao Tome and Principe
Saudi Arabia
Senegal
Serbia and Montenegro
Seychelles
Sierra Leone
Singapore
Slovakia
Slovenia
Solomon Islands
Somalia
South Africa
South Georgia and the South Sandwich Islands
Spain
Sri Lanka
Sudan
Suriname
Svalbard and Jan Mayen
Swaziland
Sweden
Switzerland
Syrian Arab Republic
Taiwan, Province of China
Tajikistan
Tanzania, United Republic of
Thailand
Timor-Leste
Togo
Tokelau
Tonga
Trinidad and Tobago
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United States Minor Outlying Islands
Uruguay
Uzbekistan
Vanuatu
Venezuela
Viet Nam
Virgin Islands, British
Virgin Islands, U.S.
Wallis and Futuna
Western Sahara
Yemen
Zambia
Zimbabwe
Choose a topicx
Allgemeine Informationen
Vertrieb
Kundenservice und technischer Support
Partnerschafts- und Allianz-Anfragen
Allgemeine Informationen:
info@datasunrise.com
Kundenservice und technischer Support:
support.datasunrise.com
Partnerschafts- und Allianz-Anfragen:
partner@datasunrise.com