Blog

Konfigurieren von Samba4 und Cloudera Manager

Aktualisiert Oktober 22, 2025
26 Minuten

In diesem Blog beschreiben wir, wie wir Samba4 als Active Directory Domain Controller konfigurieren können, um den Kerberos Domain Controller zu ersetzen. Wir werden auch auf SSSD und PAM eingehen. Unser Ziel ist es, erneuerbare Zertifikate zu erhalten, die dann vom Cloudera Manager, den Hadoop-Dämonen und den Benutzern verwendet werden können. Sie fragen sich vielleicht, warum wir uns überhaupt die Mühe gemacht haben, diese Lösung zu implementieren. Wir haben uns dafür entschieden, diese Lösung zu implementieren, damit wir die Benutzer zentral verwalten können.

Hintergrund

Samba

Samba4 besteht aus mehreren Daemons:

  • nmbd -- Namensauflösung im alten Stil aus der NT4-Ära
  • smbd -- verwaltet Dateiübertragungen
  • winbindd -- verwaltet die Verbindungen zu Domänencontrollern - in diesem Szenario durch sssd ersetzt (scheint auch zugunsten von sssd veraltet zu sein)
  • ad - verwaltet die Authentifizierung. Die Samba Active Directory Domain Controller-Funktionalität ist als integrierter Kerberos-DLC, LDAP-Server, DNS-Server und SMB/CIFS-Server implementiert. Die AD DC-Funktionalität von Samba 4 stützt sich stark auf die Heimdal Kerberos-Implementierung. Samba 4 enthält das eingebettete Heimdal. Wenn es mit MIT Kerberos kompiliert wird, bietet Samba 4 derzeit keinerlei Active Directory Domain Controller-Funktionalität, sondern nur clientseitige Bibliotheken und Tools, die keine AD DC-Operationen beinhalten.

Unser Ziel ist es, Samba als Domain Controller einzurichten. Um zu sehen, wie das geht, können Sie das Samba AD DC Howto lesen. Die erforderlichen Schritte sind auch in diesem Blog aufgeführt.

HINWEIS: Samba4 ist recht neu und ein Großteil der Dokumentation bezieht sich noch auf Samba3.

PAM (Pluggable Authentication Modules)

PAM ist ein flexibler Mechanismus zur Authentifizierung von Benutzern. PAM bietet die Möglichkeit, Programme zu entwickeln, die unabhängig vom Authentifizierungsschema sind. Diese Programme benötigen "Authentifizierungsmodule", die zur Laufzeit an sie angehängt werden, damit sie funktionieren. Welches Authentifizierungsmodul angehängt werden soll, hängt von der lokalen Systemeinrichtung ab und liegt im Ermessen des lokalen Systemadministrators. Lesen Sie mehr unter : PAM (Pluggable Authentication Modules).

SSSD (System Security Services Daemon)

SSSD ist ein System-Daemon. Seine Hauptfunktion ist der Zugriff auf entfernte Identitäts- und Authentifizierungsressourcen über ein gemeinsames Framework, das Caching und Offline-Unterstützung für das System bieten kann. Er bietet PAM- und NSS-Module. Die Integration mit einem Domain Controller (wie einem Active Directory-Server oder in unserem Fall mit dem Samba AD DC) erfordert auf der Linux-Seite SSSD. Die gesamte Kommunikation zwischen dem PAM und den verschiedenen möglichen Backends wird über diesen Daemon vermittelt.

Unser Setup

Wir haben einen CentOS 6.5-Rechner für die Installation von Samba AD DC und SSSD verwendet. Auf diesem Rechner läuft auch der Cloudera Manager 4.8. Cloudera Manager 4.8 verwaltet einen CDH 4.5-Cluster, der aus 2 Knoten besteht. Für alle Rechner verwenden wir IPs.

Voraussetzungen

  1. Deaktivieren Sie SElinux. Stellen Sie sicher, dass in /etc/selinux/config die Zeile "SELINUX=disabled" vorhanden ist, oder verwenden Sie diese als Richtlinie. Wenn Sie dies ändern müssen, starten Sie neu.
  2. Legen Sie einen FQDN für Ihren Server fest
  3. Installieren Sie NTPD (>= 4.2.6, wenn Sie Windows-Clients haben und signierte ntp-Unterstützung nutzen möchten), da eine genaue Zeitsynchronisation erforderlich ist.
  4. Deaktivieren Sie IP-Tabellen.
service iptables stoppen
chkconfig iptables aus

HINWEIS: Samba verwendet die folgenden Ports: 88/tcp, 88/udp, 137/tcp, 137/udp, 138/tcp, 138/udp, 139/udp, 139/udp, 445/tcp, 445/udp. Wenn Sie also die IP-Tabellen nicht deaktivieren möchten, stellen Sie sicher, dass diese Ports offen sind. Wir haben diese Ports aus der Samba-Dokumentation entnommen. Wir haben nicht getestet, ob alle Ports in unserer Einrichtung verwendet werden. Wir befanden uns in einer geschützten Umgebung, so dass es kein Problem war, die IP-Tabellen zu deaktivieren.

Samba und den Kerberos-Client installieren, konfigurieren und testen

HINWEIS: Wir verwenden die sernet-Distribution von Samba4, da sie Samba4 4.1 enthält und Samba4 4.0 bei uns einige Probleme verursacht hat. Natürlich können Sie bei Bedarf auch vom Quellcode aus bauen.

  1. Holen Sie sich das sernet.repo (Sie müssen dafür ein Sernet-Konto auf der SerNet User Manager Seite anlegen)
cd 
/etc/yum.repos.d/
wget https://:@download.sernet.de/packages/samba/4.1/centos/6/sernet-samba-4.1.repo
  1. Repo-Datei mit dem von Sernet bereitgestellten Benutzer und Passwort bearbeiten
cat /etc/yum.repos.d/sernet-samba-4.1.repo

[sernet-samba-4.1]
Name=SerNet Samba 4.1 Pakete  (centos-6)
Typ=rpm-md
baseurl=https://USERNAME:ACCESSKEY@download.sernet.de/packages/samba/4.1/centos/6/
gpgcheck=1
gpgkey=https://USERNAME:ACCESSKEY@download.sernet.de/packages/samba/4.1/centos/6/repodata/repomd.xml.key
aktiviert=1
  1. Repo-Schlüssel installieren
yum install http://ftp.sernet.de/pub/sernet-build-key-1.1-4.noarch.rpm
  1. Installieren Sie die Sernet-PaketeHINWEIS: Wenn Sie das Paket krb5-server installiert haben, müssen Sie es deinstallieren, da es in Konflikt mit dem Paket sernet-samba-ad steht.
yum install -y sernet-samba sernet-samba-ad sernet-samba-client
  1. Konfigurieren Sie Samba als Domain Controller

Der einzige Parameter, den Sie ändern müssen, ist der Samba-Startmodus in /etc/default/sernet-samba

vi /etc/default/sernet-samba

# SAMBA_START_MODE definiert, wie Samba gestartet werden soll. Gültige Optionen sind eine der folgenden 
# "keine", um sie überhaupt nicht zu aktivieren,
# "classic", um die klassischen smbd/nmbd/winbind-Daemons zu verwenden
# "ad", um den Active Directory-Server zu verwenden (der den smbd selbständig startet)
# (Beachten Sie, dass Sie auch die Dienste/Init-Skripte aktivieren müssen, die
# automatisch die gewünschten Daemons starten.)
SAMBA_START_MODE="Anzeige"

# SAMBA_RESTART_ON_UPDATE legt fest, ob die Dienste neu gestartet werden sollen, wenn
# werden die RPMs aktualisiert. Wenn Sie dies auf "yes" setzen, wird die 
# Funktionalität des try-restart-Parameters der Init-Skripte.
SAMBA_NEUSTART_BEI_AKTUALISIERUNG="Nein"

# NMBD_EXTRA_OPTS kann zusätzliche Optionen enthalten, die als zusätzliche Optionen übergeben werden
# Argumente für den nmbd-Daemon
NMBD_EXTRA_OPTS=""

# WINBINDD_EXTRA_OPTS kann zusätzliche Optionen enthalten, die als Zusatzoptionen übergeben werden.
# Argumente für den winbindd-Daemon
WINBINDD_EXTRA_OPTS=""

# SMBD_EXTRA_OPTS kann zusätzliche Optionen enthalten, die als zusätzliche Optionen übergeben werden.
# Argumente für den smbd-Daemon
SMBD_EXTRA_OPTS=""

# SAMBA_EXTRA_OPTS kann zusätzliche Optionen enthalten, die als zusätzliche Optionen übergeben werden.
# Argumente für den Samba-Daemon
SAMBA_EXTRA_OPTS=""

# SAMBA_IGNORE_NSUPDATE_G definiert, ob der Samba-Daemon gestartet werden soll.
# wenn 'nsupdate -g' nicht verfügbar ist. Die Einstellung "ja" würde bedeuten, dass 
# Samba wird auch ohne 'nsupdate -g' gestartet. Dies führt zu schweren 
# Probleme ohne eine angemessene Abhilfe!
SAMBA_IGNORE_NSUPDATE_G="Nein"
  1. Jetzt müssen wir unsere smb.conf-Datei in /etc/samba erstellen.
vi /etc/samba/smb.conf

# Globale Parameter
[global]
  Arbeitsgruppe =  GDD
  Reich =  GDD.NL
  Server  Rolle =  active directory domain controller
  dns  Forwarder =  8.8.8.8
  idmap_ldb:use  rfc2307 =  ja
  kerberos  Methode =  System-Schlüsseltabelle
  Protokoll  Ebene =  1
  Vorlage  Shell = 
/bin/sh
  winbind  Abscheider =  +
  dns zulassen  aktualisiert =  unterzeichnet
  tls  aktiviert =  ja
  tls  Schlüsseldatei =  tls/key.pem
  tls  cafile =  tls/ca.pem
  tls  certfile =  tls/cert.pem

[netlogon]
  Pfad = 
/var/lib/samba/sysvol/gdd.nl/scripts
  lesen nur =  Nein

[sysvol]
  Pfad = 
/var/lib/samba/sysvol
  lesen nur =  Nein

Wir geben die Eigenschaft tls enabled an, damit Samba ein automatisch generiertes selbstsigniertes Zertifikat verwenden kann. Beim ersten Start erstellt Samba einen privaten Schlüssel, ein selbstsigniertes Zertifikat und ein CA-Zertifikat:

/usr/local/samba/private/tls/ca.pem
/usr/local/samba/private/tls/cert.pem
/usr/local/samba/private/tls/key.pem

Diese Zertifikate sind nach ihrer Erstellung 700 Tage lang gültig (die Lebensdauer, die bei der automatischen Erstellung der Zertifikate verwendet wird, ist in âsource4/lib/tls/tlscert.câ fest einkodiert). Da TLS standardmäßig aktiviert ist (âtls enabled = yesâ), werden die oben genannten Dateien verwendet, was den folgenden smb.conf-Parametern entspricht:

tls  aktiviert  =  ja
tls  Schlüsseldatei  =  tls/key.pem
tls  certfile =  tls/cert.pem
tls  cafile   =  tls/ca.pem

Wir konfigurieren den internen DNS-Server so, dass er die Anfragen an Google DNS weiterleitet, falls unser Samba-Server die Anfragen nicht bearbeiten kann. Sie müssen den Parameter "dns forwarder" auf den DNS-Server setzen, an den die Anfragen weitergeleitet werden können, wenn sie nicht von Samba selbst bearbeitet werden können.

Mit der Option winbind Trennzeichen können Sie festlegen, wie NT-Domänennamen und Benutzernamen zu Unix-Benutzernamen kombiniert werden, wenn sie den Benutzern angezeigt werden. Standardmäßig verwendet winbindd das traditionelle ''-Trennzeichen, so dass die Unix-Benutzernamen wie DOMAINutzername aussehen. Wir hatten deswegen Probleme mit Cloudera Manager und dem von cloudera manager verwendeten postgreSQL, so dass wir das Trennzeichen auf '+' geändert haben.

  1. Bereitstellen einer DomäneWenn dies der erste Domänencontroller in einer neuen Domäne ist (wovon dieser Blog ausgeht), müssen Sie die internen LDAP-, Kerberos- und DNS-Server einrichten und alle grundlegenden Konfigurationen für das Verzeichnis vornehmen. Hinweis: Wenn Sie nach einem Kennwort gefragt werden, geben Sie ein sicheres Kennwort ein, da die Einrichtung der Domäne sonst fehlschlägt. Hinweis: Das Argument rfc2307 fügt dem AD-Schema POSIX-Attribute (UID/GID) hinzu. Dies ist notwendig, wenn Sie neben Microsoft Windows auch Linux-, BSD- oder OS X-Clients (einschließlich des lokalen Rechners) authentifizieren wollen. Sie ist erforderlich, wenn Sie nicht wollen, dass Ihre Unix-Systeme mit Windows-Benutzernamen wie (SYSTEM) überhäuft werden. Sie müssen die Unix-Attribute für Benutzer hinzufügen, die Zugriff auf Ihre Hadoop-Umgebung benötigen.
samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2

#Sie müssen ein paar Fragen beantworten.

  Reich  [LOCALDOMAIN]: GDD.NL
  Domain  [GDD]: GDD
  Server-Rolle  (dc, Mitglied, eigenständig) [dc]:
  DNS-Backend  (SAMBA_INTERN, BIND9_FLATFILE, BIND9_DLZ, KEINE) [SAMBA_INTERNAL]:
  IP-Adresse des DNS-Forwarders  (Schreiben Sie  'keine'  um die Weiterleitung zu deaktivieren) [172.16.115.2]: keine
  Administrator-Passwort:
  Geben Sie das Passwort erneut ein:
  Nachschlagen von IPv4-Adressen
  Nachschlagen von IPv6-Adressen
  Es wird keine IPv6-Adresse zugewiesen
  Einrichten von secrets.ldb
  Einrichten der Registry
  Einrichten der Privilegien-Datenbank
  Einrichten der idmap db
  SAM db einrichten
  Einrichten von sam.ldb Partitionen und Einstellungen
  Einrichten von sam.ldb rootDSE
  Vorladen des Samba  4  und AD-Schema
  Hinzufügen der DomainDN:  DC=gdd,DC=nl
  Hinzufügen eines Konfigurationscontainers
  Einrichten des Schemas sam.ldb
  Einrichten der sam.ldb Konfigurationsdaten
  Einrichten von Display-Spezifizierern
  Ändern von Anzeigespezifikationen
  Container für Benutzer hinzufügen
  Container für Benutzer ändern
  Container für Computer hinzufügen
  Container für Computer ändern
  Einrichten der sam.ldb Daten
  Bekannte Sicherheitsprinzipien einrichten
  Einrichten von sam.ldb Benutzern und Gruppen
  Self Join einrichten
  Hinzufügen von DNS-Konten
  Erstellen von  CN=MicrosoftDNS,CN=System,DC=gdd,DC=nl
  Erstellen von DomainDnsZones und ForestDnsZones Partitionen
  Auffüllen der DomainDnsZones und ForestDnsZones Partitionen
  Einrichten von sam.ldb rootDSE Markierung als synchronisiert
  Fixierung von Bereitstellungs-GUIDs
  Eine geeignete Kerberos-Konfiguration  für  Samba  4  wurde unter /var/lib/samba/private/krb5.conf erstellt.
  Einrichten von gefälschten yp-Server-Einstellungen
  Sobald die oben genannten Dateien installiert sind, ist Ihr Samba4-Server einsatzbereit
  Server-Rolle: Active Directory-Domänencontroller
  Hostname: host1
  NetBIOS-Domäne: GDD
  DNS-Domäne: gdd.nl
  DOMAIN SID: S-1-5-21-4088664197-506966525-840056760
  1. Fügen Sie eine Reverse-Zone hinzu - wir benötigen diese, wenn wir die neuen Hosts hinzufügen. Für Hadoop ist es wichtig, dass wir die Vorwärts- und Rückwärtssuche korrekt durchführen können.
samba-tool dns zonecreate  [Optionen]

In unserem Fall wäre dies der Fall:

samba-tool dns zonecreate host1.gdd.nl 115.16.172.in-addr.arpa -Uadministrator%Passwort
  1. Installieren Sie den Kerberos-Client, d.h. wir müssen die Client-Pakete installieren und jeden Client mit einer gültigen krb5.conf-Konfigurationsdatei versehen.
yum install -y krb5-workstation
  1. Konfigurieren Sie Kerberos. Hier haben wir die folgenden Parameter geändert: dns_lookup_realm, dns_lookup_kdc, default_realm, kdc und admin_server.HINWEIS: Um die Kerberos-Parameter im Abschnitt libdefaults besser zu verstehen, lesen Sie die Kerberos-Dokumentation zu libdefaults. Beachten Sie jedoch, dass der interne KDC von Samba4 auf der Heimdal-Implementierung basiert, so dass es einige Unterschiede gibt.

Wir haben auch den Abschnitt appdefaults hinzugefügt (siehe defaults unter Kerberos appdefaults), da das Modul pam_krb5 im Abschnitt appdefaults einen Unterabschnitt pam erwartet, aus dem es seine Konfigurationsinformationen liest.

vi /etc/krb5.conf

[Protokollierung]
 Standard =  DATEI:/var/log/krb5libs.log
 kdc =  DATEI:/var/log/krb5kdc.log
 admin_server =  DATEI:/var/log/kadmind.log

[libdefaults]
 standard_realm =  GDD.NL
 dns_lookup_realm = true
 dns_lookup_kdc = true
 ticket_lifetime =  24h
 renew_lifetime =  7d
 weiterleitbar = true

[Reiche]
  GDD.NL  = {
        kdc =  host1.gdd.nl:88
        admin_server =  host1.gdd.nl:749
 }

[appdefaults]
     pam = {
          debuggen = false
          ticket_lifetime =  36000
          renew_lifetime =  36000
          weiterleitbar = true
          krb4_convert = false
     }
  1. Konnektivität testen
smbclient -L host1 -U%
  Domain=[GDD] OS=[Unix] Server=[Samba 4.1.5-SerNet-RedHat-7.el6]

  Sharename Typ Kommentar
  --------- ---- -------
  netlogon Diskette
  sysvol Festplatte
  IPC$ IPC IPC-Dienst  (Samba 4.1.5-SerNet-RedHat-7.el6)
  Domain=[GDD] OS=[Unix] Server=[Samba 4.1.5-SerNet-RedHat-7.el6]

  Server-Kommentar
  --------- -------

  Arbeitsgruppe Master
  --------- -------
  1. Authentifizierung testen
smbclient //host1/netlogon -UAdministrator -c  'ls'
Administrator eingeben's Passwort:
Domain=[GDD] OS=[Unix] Server=[Samba 4.1.5-SerNet-RedHat-7.el6]
  . D  0  Fr Feb  28  08:44:37 2014
  .. D  0  Fr Feb  28  08:44:37 2014

      54963  Blöcke der Größe 262144.  9834  Blöcke verfügbar
  1. Einen neuen Benutzer hinzufügen
  samba-tool benutzer hinzufügen  
  Neues Passwort:
  Geben Sie das Passwort erneut ein:
  Benutzer  'tunde'  erfolgreich erstellt
  samba-tool Benutzerliste
  Administrator
  krbtgt
  Gast
  tunde
  # Setzen Sie optional RFC2307 (NIS Schema) Attribute in samba-tool create. Hauptsächlich erforderlich, damit die UID-Zuordnung verwendet werden kann. 
  # Nicht alle Attribute können gesetzt werden, nur harmlose und nicht überlappende (uid, uidNumber, gidNumber, loginShell)
  samba-tool benutzer hinzufügen test1 --uid-nummer=1000  --gid-number=100  --login-shell=/bin/bash --uid=test1
  Neues Passwort:
  Geben Sie das Passwort erneut ein:
  Benutzer  'test1'  erfolgreich erstellt
  #Passwort sollte nicht ablaufen
  samba-tool user setexpiry test1 -k yes --noexpiry
  Verfallsdatum  für  Benutzer  'test1'  deaktiviert.
  #Löschen Sie einen Benutzer
  samba-tool benutzer löschen test1
  Gelöschter Benutzer test1
  1. Andere Möglichkeit, Benutzer aufzulisten
pdbedit -L -v
  ...
  ---------------
  Unix-Benutzername: Administrator
  NT-Benutzername:
  Konto-Flaggen:  [U  ]
  Benutzer-SID: S-1-5-21-3460841026-2796003680-2018327927-500
  Primäre Gruppe SID: S-1-5-21-3460841026-2796003680-2018327927-513
  Vollständiger Name:
  Home-Verzeichnis:
  HomeDir Drive:  (null)
  Anmeldeskript:
  Profil Pfad:
  Bereich:
  Beschreibung des Kontos: Eingebautes Konto  für  die Verwaltung des Computers/der Domäne
  Workstations:
  Mungedes Zifferblatt:
  Anmeldezeit: 0
  Abmeldezeit: 0
  Anstoßzeit: Mi,  13  Sep  30828  19:48:05 PDT
  Passwort zuletzt gesetzt: Fr,  28  Feb  2014  08:44:41 PST
  Das Passwort kann sich ändern: Fr,  28  Feb  2014  08:44:41 PST
  Passwort muss geändert werden: nie
  Letztes falsches Passwort : 0
  Anzahl falscher Passwörter : 0
  Anmeldestunden : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  ---------------
  Unix-Benutzername: tunde
  NT-Benutzername:
  Konto-Flaggen:  [U  ]
  Benutzer-SID: S-1-5-21-3460841026-2796003680-2018327927-1103
  Primäre Gruppe SID: S-1-5-21-3460841026-2796003680-2018327927-513
  Vollständiger Name:
  Home-Verzeichnis:
  HomeDir Drive:  (null)
  Anmeldeskript:
  Profil Pfad:
  Bereich:
  Beschreibung des Kontos:
  Workstations:
  Mungedes Zifferblatt:
  Anmeldezeit: 0
  Abmeldezeit: 0
  Anstoßzeit: Mi,  13  Sep  30828  19:48:05 PDT
  Passwort zuletzt gesetzt: Fr,  28  Feb  2014  09:00:05 PST
  Das Passwort kann sich ändern: Fr,  28  Feb  2014  09:00:05 PST
  Passwort muss geändert werden: nie
  Letztes falsches Passwort : 0
  Anzahl falscher Passwörter : 0
  Anmeldestunden : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  1. Testen Sie, ob Sie ein Zertifikat erhalten können
Kinit Tunde
  Passwort  für  tunde@GDD.NL:
  Warnung: Ihr Passwort läuft ab in  41  Tag am Fr Apr  11  10:00:05 2014
klist
  Ticket-Cache: DATEI:/tmp/krb5cc_0
  Standardmäßiger Auftraggeber: tunde@GDD.NL

  Gültig ab Expires Serviceprinzip
  02/28/14 09:00:21 02/28/14 19:00:21 krbtgt/GDD.NL@GDD.NL
  erneuern  bis  03/07/14 09:00:18
  1. Testen Sie, ob Ihre /etc/resolv.conf auf den richtigen Server verweist. Die resolv.conf sollte auf den Server zeigen, auf dem Samba AD läuft. Stellen Sie sicher, dass die /etc/resolv.conf nach dem Neustart nicht überschrieben wird.

SSSD installieren & konfigurieren & testen

  1. Installieren Sie SSSD (System Security Services Daemon), einen System-Daemon. Seine Hauptfunktion besteht darin, den Zugriff auf entfernte Identitäts- und Authentifizierungsressourcen über ein gemeinsames Framework zu ermöglichen, das dem System Zwischenspeicher und Offline-Unterstützung bieten kann. Er bietet PAM- und NSS-Module. Referenz: SSSD - System Security Services Daemon
yum install -y sssd
  1. Extrahieren Sie die keytab für ein Domänenkonto (Sie können auch das Maschinenkonto dafür verwenden) und stellen Sie sicher, dass sie nur für root lesbar ist.
samba-tool domain exportkeytab /etc/krb5.sssd.keytab --principal=HOST1$
chown root:root /etc/krb5.sssd.keytab
chmod  600 
/etc/krb5.sssd.keytab
  1. Sehen Sie sich an, was die keytab enthält:
  klist -k /etc/krb5.sssd.keytab
  Name der Schlüsseltabelle: FILE:/etc/krb5.sssd.keytab
  KVNO Direktor
  ---- --------------------------------------------------------------------------
     1  HOST1$@GDD.NL
     1  HOST1$@GDD.NL
     1  HOST1$@GDD.NL
     1  HOST1$@GDD.NL
     1  HOST1$@GDD.NL
  1. SSSD konfigurieren
vi /etc/sssd/sssd.conf

[sssd]
config_file_version =  2
Dienstleistungen =  nss, pam
Domains =  GDD.NL
debug_level =  10

[nss]
nss_filter_groups =  Wurzel
nss_filter_benutzer =  Wurzel
nss_entry_cache_timeout =  30
nss_enum_cache_timeout =  30

[Bereich/GDD.NL]
id_provider =  ad
ad_server=  host1.gdd.nl
ad_domain=  gdd.nl
ldap_schema =  ad
ldap_id_mapping =  False
krb5_keytab=/etc/krb5.sssd.keytab
aufzählen.=true
override_homedir=/home/%u
  1. Ändern Sie die Berechtigungen für die Datei /etc/sssd/sssd.conf
chmod  600 
/etc/sssd/sssd.conf
  1. Verwenden Sie authconfig, um NSS und PAM zu konfigurieren.

authconfig bietet eine einfache Methode zur Konfiguration von /etc/sysconfig/network für die Handhabung von NIS sowie von /etc/passwd und /etc/shadow, den Dateien für die Unterstützung von Shadow-Passwörtern. Außerdem werden grundlegende LDAP-, Kerberos 5 und SMB (Authentifizierung) Client-Konfigurationen angeboten.

authconfig --enablesssd --enablesssdauth --enablemkhomedir --update

Nach der Ausführung dieses Befehls erhalten wir eine Fehlermeldung:

Fehler beim Lesen von Informationen über den Dienst winbind: Keine solche Datei oder kein solches Verzeichnis

Aber als wir die nsswitch.conf und pam.d/system-auth überprüften, war alles richtig eingerichtet. Wir verwenden ohnehin kein Winbind.

  1. Alternativ zum vorherigen Schritt konfigurieren Sie NSS und PAM manuell (oder verwenden Sie die hier beschriebenen Schritte, um zu überprüfen, ob NSS und PAM korrekt konfiguriert wurden)
    • SSSD bietet ein NSS-Modul, sssd_nss, mit dem Sie Ihr System so konfigurieren können, dass es SSSD zum Abrufen von Benutzerinformationen verwendet. Bearbeiten Sie die Datei /etc/nsswitch.conf für Ihr System, um die Namensdatenbank sss zu verwenden.
  cat /etc/nsswitch.conf
    #
    # /etc/nsswitch.conf
    #
    # Ein Beispiel für die Konfigurationsdatei von Name Service Switch. Diese Datei sollte sein 
    # sortiert mit den meistgenutzten Diensten am Anfang.
    #
    # Der Eintrag '[NOTFOUND=return]' bedeutet, dass die Suche nach einem
    # Eintrag sollte aufhören, wenn die Suche im vorherigen Eintrag zu
    # nichts gefunden. Beachten Sie, dass wenn die Suche aus einem anderen Grund fehlgeschlagen ist 
    # (z.B. kein NIS-Server antwortet), dann wird die Suche mit dem
    # nächster Eintrag.
    #
    # Gültige Einträge sind:
    #
    # nisplus NIS+ verwenden (NIS Version 3)
    # nis NIS verwenden (NIS Version 2), auch YP genannt
    # dns DNS (Domain Name Service) verwenden
    # Dateien Verwenden Sie die lokalen Dateien
    # db Verwenden Sie die lokalen Datenbankdateien (.db)
    # compat NIS im Kompatibilitätsmodus verwenden
    # hesiod Hesiod für die Benutzersuche verwenden
    # [NOTFOUND=return] Suche beenden, wenn noch nicht gefunden
    #

    # Um db zu verwenden, setzen Sie das "db" vor "files" für Einträge, die Sie als
    # zuerst in den Datenbanken nachgeschlagen
    #
    # Beispiel:
    #passwd: db files nisplus nis
    #shadow: db files nisplus nis
    #Gruppe: db files nisplus nis

  passwd: Dateien sss
  Schatten: Dateien sss
  Gruppe: Dateien sss

    #hosts: db files nisplus nis dns
  hosts: Dateien dns

    # Beispiel - Befolgen Sie nur, was nisplus uns sagt...
    #Dienste: nisplus [NOTFOUND=return] Dateien
    #networks: nisplus [NOTFOUND=return] Dateien
    #protokolle: nisplus [NOTFOUND=return] Dateien
    #rpc: nisplus [NOTFOUND=return] Dateien
    #ethers: nisplus [NOTFOUND=return] Dateien
    #netmasks: nisplus [NOTFOUND=return] Dateien

  bootparams: nisplus  [NOTFOUND=return]  Dateien

  ethers: Dateien
  netmasks: Dateien
  Netzwerke: Dateien
  Protokolle: Dateien
  rpc: Dateien
  Dienstleistungen: Dateien sss

  netgroup: Dateien sss

  öffentlicher Schlüssel: nisplus

  automount: Dateien
  Aliasnamen: Dateien nisplus
  • PAM konfigurieren

HINWEIS: Ein Fehler in der PAM-Konfigurationsdatei kann dazu führen, dass Sie komplett aus dem System ausgesperrt werden. Sichern Sie immer Ihre Konfigurationsdateien, bevor Sie Änderungen vornehmen, und halten Sie eine Sitzung offen, damit Sie die vorgenommenen Änderungen bei Bedarf rückgängig machen können.

Um Ihr System für die Verwendung von SSSD für PAM zu aktivieren, müssen Sie die Standard-PAM-Konfigurationsdatei bearbeiten. Sichern Sie die PAM-Konfigurationsdatei.

cd 
/etc/pam.d/
cp system-auth system-auth.bck

Bearbeiten Sie diese Datei, um das folgende Beispiel wiederzugeben:

vi /etc/pam.d/system.auth

    #%PAM-1.0
    # Diese Datei wird automatisch generiert.
    # Die Benutzeränderungen werden bei der nächsten Ausführung von authconfig zerstört.
  auth erforderlich pam_env.so
  auth ausreichend pam_unix.so nullok try_first_pass
  auth requisite pam_succeed_if.so uid >= 500  ruhig
  auth ausreichend pam_sss.so use_first_pass
  auth erforderlich pam_deny.so

  Konto erforderlich pam_unix.so
  Konto ausreichend pam_localuser.so
  Konto ausreichend pam_succeed_if.so uid 500 quiet
  Konto  [Standard=schlecht  Erfolg=ok  user_unbekannt=Ignorieren Sie]  pam_sss.so
  Konto erforderlich pam_permit.so

  Passwort erforderlich pam_cracklib.so try_first_pass  erneut versuchen=3 Typ=
  Passwort ausreichend pam_unix.so sha512 shadow nullok try_first_pass use_authtok
  Passwort ausreichend pam_sss.so use_authtok
  Passwort erforderlich pam_deny.so

  Sitzung optional pam_keyinit.so revoke
  Sitzung erforderlich pam_limits.so
  Sitzung optional pam_mkhomedir.so
  Sitzung  [Erfolg=1 Standard=Ignorieren Sie]  pam_succeed_if.so Dienst in crond quiet use_uid
  Sitzung erforderlich pam_unix.so
  Sitzung optional pam_sss.so
  1. Um den SSSD-Daemon zu starten, starten Sie einfach den sssd-Dienst:
dienst sssd starten
chkconfig sssd ein

Zum Debuggen kann es bequemer sein, den Daemon im Vordergrund laufen zu lassen:

/usr/sbin/sssd -i
  1. Testen Sie, ob Sie die zum Samba AD hinzugefügten Benutzer sehen können:
getent passwd
  ...
  test1:*:1000:100:test1:/home/test1:/bin/bash
  ...

Wenn Sie sich die Ausgabe genau ansehen, werden Sie feststellen, dass der Benutzer Administrator und 'tunde' (in unserem Fall) nicht in dieser Liste erscheint. Das liegt daran, dass wir die Eigenschaften UID und GID nicht angegeben haben, als wir samba-tool zur Erstellung des Benutzers tunde verwendet haben.

HINWEIS: Es kann einige Zeit dauern, bis Sie den Benutzer test1 in der Ausgabe des Befehls 'getent passwd' sehen. Das liegt daran, dass die Synchronisierung ein wenig Zeit benötigt. Wenn Sie nicht warten möchten, können Sie einfach den Befehl 'getent passwd' verwenden:

getent passwd test1
 ```

### Andere Rechner in die Domäne einbinden  

Wenn wir  einstellen.  Wenn Sie einen Hadoop-Cluster aufbauen möchten, müssen alle Rechner, auf denen Hadoop-Dienste laufen, mit dem AD verbunden werden, das wir im vorherigen Schritt erstellt haben. In unserem   Fall  das sind die Extras  2  Maschinen, die vom Cloudera Manager verwaltet werden und die als Namenode, Datanode, Jobtracker und Tasktracker fungieren. Die Schritte, die wir durchführen müssen   tun  auf diesen Rechnern sind ziemlich ähnlich zu dem, was wir auf dem Rechner gemacht haben, auf dem Cloudera Manager, Samba und SSSD laufen... aber Sie müssen trotzdem aufpassen, es gibt ein paar Änderungen...

1. Überprüfen Sie, ob Ihre /etc/resolv.conf auf den richtigen Server verweist. Die resolv.conf sollte auf den Server zeigen, auf dem Samba AD läuft. Stellen Sie sicher, dass die /etc/resolv.conf nach dem Neustart nicht überschrieben wird.  

1. Holen Sie sernet.repo  (  müssen Sie ein Sernet-Konto erstellen  für  dies auf der  href="https://portal.enterprisesamba.com/">SerNet User Manager  Website)

```bash
cd 
/etc/yum.repos.d/
wget https://:@download.sernet.de/packages/samba/4.1/centos/6/sernet-samba-4.1.repo
  1. Repo-Datei mit dem von Sernet bereitgestellten Benutzer und Passwort bearbeiten
cat /etc/yum.repos.d/sernet-samba-4.1.repo

  [sernet-samba-4.1]
  Name=SerNet Samba 4.1 Pakete  (centos-6)
  Typ=rpm-md
  baseurl=https://USERNAME:ACCESSKEY@download.sernet.de/packages/samba/4.1/centos/6/
  gpgcheck=1
  gpgkey=https://USERNAME:ACCESSKEY@download.sernet.de/packages/samba/4.1/centos/6/repodata/repomd.xml.key
  aktiviert=1
  1. Repo-Schlüssel installieren
yum install http://ftp.sernet.de/pub/sernet-build-key-1.1-4.noarch.rpm
  1. Sernet-Pakete installieren

HINWEIS: Wenn Sie das Paket krb5-server installiert haben, müssen Sie es deinstallieren, da es in Konflikt mit dem Paket sernet-samba-ad steht.

yum install -y sernet-samba sernet-samba-ad sernet-samba-client
  1. Richten Sie Samba ein. Erstellen Sie die Datei smb.conf in /etc/samba
vi /etc/samba/smb.conf

[global]
   Arbeitsgruppe =  GDD
   Reich =  GDD.NL
   Sicherheit =  ADS
  idmap config * :  Reichweite =  16777216-33554431
  Vorlage  Shell = 
/bin/false
  winbind Standard verwenden  Domain = true
  winbind offline  Anmeldung = false
  winbind  Abscheider =  +

  verschlüsseln  Passwörter =  ja
  kerberos  Methode =  System-Schlüsseltabelle

  idmap config *:backend  =  tdb
  idmap-Konfiguration  {{  Domain  }}:backend  =  loswerden
  idmap-Konfiguration  {{  Domain  }}:range  =  5000-40000
  idmap-Konfiguration  {{  Domain  }}:base_rid  =  0

  winbind nss  Infos =  rfc2307
  winbind vertrauenswürdige Domänen  nur =  keine
  winbind enum  Benutzer  =  ja
  winbind enum  Gruppen =  ja

  Protokoll  Ebene =  1

Legen Sie die Berechtigungen fest:

chmod  644 
/etc/samba/smb.conf
  1. Installieren Sie den Kerberos-Client, d.h. wir müssen die Client-Pakete installieren und jeden Client mit einer gültigen krb5.conf-Konfigurationsdatei versehen.
yum install -y krb5-workstation
  1. Konfigurieren Sie Kerberos.
vi /etc/krb5.conf

[Protokollierung]
 Standard =  DATEI:/var/log/krb5libs.log
 kdc =  DATEI:/var/log/krb5kdc.log
 admin_server =  DATEI:/var/log/kadmind.log

[libdefaults]
 standard_realm =  GDD.NL
 dns_lookup_realm = true
 dns_lookup_kdc = true
 ticket_lifetime =  24h
 renew_lifetime =  7d
 weiterleitbar = true

[Reiche]
  GDD.NL  = {
        kdc =  host1.gdd.nl:88
        admin_server =  host1.gdd.nl:749
 }

[appdefaults]
     pam = {
          debuggen = false
          ticket_lifetime =  36000
          renew_lifetime =  36000
          weiterleitbar = true
          krb4_convert = false
     }

Legen Sie die Berechtigungen fest:

chmod  644 
/etc/krb5.conf
  1. SSSD installieren
yum install -y sssd
  1. SSSD konfigurieren
vi /etc/sssd/sssd.conf

[sssd]
config_file_version =  2
Dienstleistungen =  nss, pam
Domains =  Standard
debug_level =  10

[nss]
nss_filter_groups =  Wurzel
nss_filter_benutzer =  Wurzel
nss_entry_cache_timeout =  30
nss_enum_cache_timeout =  30

[Bereich/GDD.NL]
id_provider =  ad
ad_server=  host1.gdd.nl
ad_domain=  gdd.nl
ldap_schema =  ad
ldap_id_mapping =  False
aufzählen.=true
override_homedir=/home/%u

Ändern Sie die Berechtigungen für die Datei /etc/sssd/sssd.conf

chmod  600 
/etc/sssd/sssd.conf
  1. Domänenbeitritt prüfen
net ads testjoin -P

Dies wird wahrscheinlich fehlschlagen, aber es ist ein Befehl, den Sie kennen sollten.

  1. Treten Sie der Domäne bei:
net ads join -Uadministrator%Passwort

Hinweis: Hier müssen Sie das Passwort ändern und können bei Bedarf auch 'administrator' in den von Ihnen verwendeten Benutzernamen ändern.

HINWEIS: Das Folgende sollte nicht erforderlich sein, aber wir konnten Samba nicht dazu bringen, unsere Hosts automatisch hinzuzufügen. Dies ist wahrscheinlich eine Fehlkonfiguration auf unserer Seite.

Mit diesem Befehl sollte ein Forward (A) DNS-Eintrag zum DNS-Server hinzugefügt werden. Prüfen Sie, ob der Forward Lookup korrekt funktioniert.

HINWEIS: Falls die Datei /etc/resolv.conf nicht auf den richtigen Server (d.h. den Samba-Server) verweist, kann es sein, dass der DNS-Eintrag forwards nicht hinzugefügt wurde. Sie können diesen manuell mit dem folgenden Befehl hinzufügen:

samba-tool dns hinzufügen    A  -U administrator%Passwort

Wenn also unsere Domain dc auf host1.gdd.nl läuft, unsere dnd_domain GDD.NL ist und wir versuchen, einen neuen Host namens host2.gdd.nl mit der IP 172.16.115.5 hinzuzufügen, dann würde dieser Befehl wie folgt aussehen:

samba-tool dns add host1.gdd.nl gdd.nl host2 A 172.16.115.5 -U administator%passwort

Natürlich müssen Sie noch das richtige Passwort in die vorherige Zeile schreiben.

  1. Reverse DNS einstellen
samba-tool dns hinzufügen    PTR  -U administrator%Passwort

Wenn also unsere Domain dc auf host1.gdd.nl läuft, unsere dnd_domain GDD.NL ist und wir versuchen, einen neuen Host namens host2.gdd.nl mit der IP 172.16.115.5 hinzuzufügen, dann würde dieser Befehl wie folgt aussehen:

samba-tool dns add host1.gdd.nl 115.16.172.in-addr.arpa  5  PTR host2.gdd.nl -U administator%Passwort

Natürlich müssen Sie noch das richtige Passwort in die vorherige Zeile schreiben.

  1. Prüfen Sie, ob der Rückwärts- und Vorwärtssuchlauf korrekt funktioniert.
  2. Systembenutzerkonfigurationen aktualisieren
authconfig --enablesssd --enablemkhomedir --enablesssdauth --update
  1. Starten Sie den sssd-Dienst
dienst sssd starten
chkconfig sssd ein

Einrichten der Hadoop-Sicherheit mit Cloudera Manager

Die Schritte, die wir befolgen müssen, um Hadoop Security mit Cloudera Manager einzurichten, ähneln den Schritten, die im Blog Einrichten der Kerberos-Authentifizierung für Hadoop mit Cloudera Manager beschrieben wurden. Wir haben das Paket krb5-workstation bereits auf allen Rechnern installiert, so dass dies nicht mehr erforderlich ist.

Zunächst nehmen wir einige Änderungen auf dem Rechner vor, auf dem sich unser Cloudera Manager befindet:

  1. Wir müssen das Paket openldap-client installieren. Unser Skript, das vom Cloudera Manager zur Generierung der Zertifikate verwendet wird, verwendet den Befehl ldapsearch:
yum install openldap-clients
  1. Wir müssen die sudoers-Dateien anpassen, damit die Verwendung von cloudera-scm einen sudo-Befehl ohne tty ausführen kann. Außerdem sollte das Cmd_Alas DELEGATING auskommentiert werden.
cat /etc/sudoers
## Berechtigungen delegieren
Cmnd_Alias  VERGABE =  /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
...
# Standardangaben
Cmnd_Alias  SAMBATOOL = 
/usr/bin/samba-tool
...
## Erlauben Sie root, beliebige Befehle überall auszuführen
Wurzel  ALLE=(ALLE)  NOPASSWD: ALL
Standardeinstellungen:cloudera-scm !requiretty
cloudera-scm  ALLE=NOPASSWD: SAMBATOOL
cloudera-scm  ALLE=NOPASSWD: DELEGIEREN

Um die Schritte zusammenzufassen:

1. Erlauben Sie dem CDH-Installationsbenutzer den Zugriff auf sudo samba-tool. Dies ist erforderlich   für  Operationen mit den Hauptnamen.

1. Cloudera Manager erstellt Benutzer wie: cloudera-scm, flume, zookeeper, httfs, hue, mapred, yarn, sqoop, hive, sqoop2, oozie, hbase und impala. Wenn Sie   tun  nicht möchten, dass der Cloudera Manager alle Rechner mit den oben genannten Benutzern belastet,  dann  sollten Sie diese Benutzer im Samba AD anlegen, bevor Sie den Cloudera Manager installieren.

1. Installieren Sie eine CDH-Version mit Cloudera Manager, ohne die Sicherheit zu konfigurieren. Stellen Sie sicher, dass der Cluster funktioniert. 

1. Installieren Sie die Java Cryptography Extension  (JCE)

1. Einer der Hauptunterschiede zwischen der Einrichtung der Sicherheit mit dem MIT KDC-Server und mit Samba ist, dass wir mit Samba  tun  nicht über einen kadmin-Befehl verfügen. Um also einen Kerberos-Prinzipal und eine keytab-Datei zu erstellen   für  Cloudera Manager Server müssen wir die keytabl-Datei auf eine andere Weise erstellen. Wir werden ein wenig schummeln und einfach den Administrator-Prinzipal verwenden, um den Zugriff auf Cloudera Manager zu ermöglichen: 

```bash
samba-tool domain exportkeytab cmf.keytab --principal=Administrator -k ja
echo "administrator@GDD.NL"  > cmf.principal
cp cmf.* /etc/cloudera-scm-server/

HINWEIS: In unserem Fall befinden sich der Cloudera Manager und der Samba-Server auf demselben Server, so dass wir die keytab-Datei nicht auf einen anderen Rechner übertragen müssen.

  1. Da das mit Cloudera gelieferte Standardskript die Zertifikate mit Hilfe eines MIT Kerberos KDC generiert, mussten wir ein Skript schreiben, das diese Zertifikate durch Kommunikation mit unserem Samba AD KDC, das auf Heimdal basiert, generieren kann. Dieses Skript ist das folgende:
#!/usr/bin/env bash

# GPL v2
einstellen.  -e
einstellen.  -x

# RHEL5/6- und SLES11-Speicherorte explizit zum Pfad hinzufügen
exportieren PATH=/usr/kerberos/bin:/usr/kerberos/sbin:/usr/lib/mit/sbin:/usr/sbin:$PATH

CMF_REALM=${CMF_PRINCIPAL##*@}
CMF_USER=${CMF_PRINCIPAL%@*}

KEYTAB_OUT=$1
PRINCUSER=${2%/*}
PRINZ=${2%@*}
HOSTNAME=${PRINZ##*/}
BENUTZER=${PRINCUSER}-${HOSTNAME}
DOMAINNAME=</span>hostname <span class="p">|</span> awk -F. <span class="s1">'{$1="";OFS="." ; print $0}'</span> <span class="p">|</span> sed <span class="s1">'s/^.//'</span><span class="sb"> CUSER=</span>whoami<span class="sb"> # Domänencontroller aus dem DNS holen DC=</span>host -t SRV _ldap._tcp.dc._msdcs.<span class="si">${</span><span class="nv">DOMAINNAME</span><span class="si">}</span> <span class="p">|</span> awk <span class="s1">'{ print $8 }'</span> <span class="p">|</span> sed <span class="s1">'s/.$//'</span><span class="sb"> wenn [  -z  "${DC}" ]; dann echo "Fehler kein Domänencontroller gefunden. Prüfen Sie, ob Ihr Hostname im FQDN-Format ist und Ihr DNS funktioniert" Ausgang  1  fi # mappen Sie den Domainnamen auf ein Array IFS=.  lesen  -a ANGEBOTE   "${DOMAINNAME}" # SUFFIX wird zu etwas wie dc=example,dc=com SUFFIX=</span><span class="nb">echo</span> <span class="k">$(</span><span class="nb">printf</span> <span class="s2">"dc=%s,"</span> <span class="s2">"</span><span class="si">${</span><span class="nv">SUFFICES</span><span class="p">[@]</span><span class="si">}</span><span class="s2">"</span><span class="k">)</span> <span class="p">|</span> sed <span class="s1">'s/,$//'</span><span class="sb"> #  TODOL Korrekt ist es, wenn CMF_USER in der Lage ist, Benutzer hinzuzufügen/zu ändern kinit -k -t /etc/cloudera-scm-server/cmf.keytab administrator set +e ldapsearch -b "${SUFFIX}" "(sAMAccountName=${USER})" | grep numEntries > /dev/null    RETVAL=$? set -e if [ ${RETVAL} -eq 1 ]; then sudo samba-tool user create    ${BENUTZER} -k yes --random-password sudo samba-tool user setexpiry ${USER} -k ja --noexpiry   fi # fix the upn aus irgendeinem Grund weigert sich das Samba-Team, dies in ktpass.sh oder in samba-tool zu patchen echo "dn: cn=${BENUTZER},cn=Benutzer,${SUFFIX} changetype: ändern ersetzen: userPrincipalName userPrincipalName:  ${PRINZ}@${CMF_REALM}" |  ldapmodify # Prüfen Sie, ob das spn für diesen Benutzer existiert +e ldapsearch -b "${SUFFIX}" "(servicePrincipalname=${PRINC})" | grep numEntries > /dev/null    RETVAL=$? set -e if [ ${RETVAL} -eq 1 ]; then # GRRRRRR warum akzeptiert samba-tool nicht -H mit spns? sudo samba-tool spn add    ${PRINC} ${USER} -k ja fi sudo samba-tool domain exportkeytab ${KEYTAB_OUT} --principal =${PRINC} -k ja sudo chown    ${CUSER} ${KEYTAB_OUT} chmod 600 ${KEYTAB_OUT}  

Speichern Sie dieses Skript unter /etc/cloudera-scm-server/gen_credentials.sh und ändern Sie die Berechtigungen:

cd 
/etc/cloudera-scm-server
chown cloudera-scm:cloudera-scm gen_credentials.sh
chmod  755  gen_credentials.sh
  1. Gehen Sie in der Cloudera Manager Admin Console (http://Cloudera_Manager_server_IP:7180) zu Administration -> Sicherheit -> Custom Kerberos Keytab Retrieval Script und setzen Sie den Wert auf /etc/cloudera-scm-server/gen_credentials.sh
  2. Befolgen Sie alle Schritte, die im Blog Einrichten der Kerberos-Authentifizierung für Hadoop mit Cloudera Manager beschrieben sind, im Abschnitt Konfigurieren Sie Cloudera Manager und CDH für die Verwendung von Kerberos, Schritt 5. Dieser Teil beschreibt die Schritte, die Sie in der Cloudera Manager Admin Console (http://Cloudera_Manager_server_IP:7180) durchführen müssen, um die Sicherheit in Hadoop zu aktivieren.

Nachdem Sie all diese Schritte befolgt haben, sollten Sie einen gesicherten Hadoop-Cluster mit einem Samba AD haben.

Fehlersuche

Samba AD DC

  1. SELinux aktiviert - Samba-Fehler
smbclient -L host1 -U%
  Sitzungsaufbau fehlgeschlagen: NT_STATUS_ACCESS_DENIED

Das Problem war, dass wir vergessen hatten, nach der Deaktivierung von selinux neu zu starten.

  1. Angabe eines schwachen Passworts bei der Einrichtung der Domäne:
samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
...
ERROR(ldb): nicht abgefangene Ausnahme - 0000052D: Verletzung einer Einschränkung - check_password_restrictions: Das Kennwort ist zu kurz. Es sollte gleich oder länger sein als   7  Zeichen!
  Datei  "/usr/lib64/python2.6/site-packages/samba/netcmd/__init__.py", Zeile 175, in _run
    return  self.run(*args, **kwargs)
  Datei  "/usr/lib64/python2.6/site-packages/samba/netcmd/domain.py", Zeile 398, in Lauf
    verwenden_rfc2307=use_rfc2307,  skip_sysvolacl=False)
  Datei  "/usr/lib64/python2.6/site-packages/samba/provision/__init__.py", Zeile 2155, in der Bestimmung
    skip_sysvolacl=skip_sysvolacl)
  Datei  "/usr/lib64/python2.6/site-packages/samba/provision/__init__.py", Zeile 1757, in provision_fill
    nächstes_rid=next_rid,  dc_rid=dc_rid)
  Datei  "/usr/lib64/python2.6/site-packages/samba/provision/__init__.py", Zeile 1436, in fill_samdb
    "KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le'))
  Datei  "/usr/lib64/python2.6/site-packages/samba/provision/common.py", Zeile 50, in setup_add_ldif
  ldb.add_ldif(Daten, Kontrollen)
  Datei  "/usr/lib64/python2.6/site-packages/samba/__init__.py", Zeile 224, in add_ldif
  self.add(msg, Kontrollen)

Wir versuchen es noch einmal, damit wir ein sicheres Passwort angeben können

samba-tool domain provision --use-rfc2307 --interactive --function-level=2008_R2
  ...
  Module können nicht geladen werden  für  /var/lib/samba/private/sam.ldb: Datensatz existiert in ../source4/dsdb/samdb/ldb_modules/partition_metadata.c:134
  ERROR(ldb): Ungefangene Ausnahme - Datensatz existiert bei ../source4/dsdb/samdb/ldb_modules/partition_metadata.c:134
  Datei  "/usr/lib64/python2.6/site-packages/samba/netcmd/__init__.py", Zeile 175, in _run
      return  self.run(*args, **kwargs)
  Datei  "/usr/lib64/python2.6/site-packages/samba/netcmd/domain.py", Zeile 398, in Lauf
      verwenden_rfc2307=use_rfc2307,  skip_sysvolacl=False)
  Datei  "/usr/lib64/python2.6/site-packages/samba/provision/__init__.py", Zeile 2124, in Rückstellung
      Schema=Schema,  füllen=samdb_fill,  am_rodc=am_rodc)
  Datei  "/usr/lib64/python2.6/site-packages/samba/provision/__init__.py", Zeile 1202, in setup_samdb
  samdb.connect(Pfad)
  Datei  "/usr/lib64/python2.6/site-packages/samba/samdb.py", Zeile 71, in connect
      Optionen=Optionen)

Lösung -- Hinweis: Stellen Sie sicher, dass Sie keine anderen Domänen in der sam.ldb haben.

rm /var/lib/samba/private/sam.ldb
  1. Authentifizierungstest schlägt fehl
smbclient //host1/netlogon -UAdministrator -c  'ls'
Administrator eingeben's Passwort:
Domain=[GDD] OS=[Unix] Server=[Samba 4.1.5-SerNet-RedHat-7.el6]
Baumverbindung fehlgeschlagen: NT_STATUS_BAD_NETWORK_NAME

Das Problem ist, dass der netlogon-Pfad aus /etc/samba/smb.conf nicht existiert oder nicht die richtigen Berechtigungen hat. Es geht um den folgenden Parameter aus /etc/samba/smb.conf:

[netlogon]
Pfad = 
/var/lib/samba/sysvol/gdd.nl/scripts

Lösung:

mkdir /var/lib/samba/sysvol/gdd.nl/scripts
chmod  770 
/var/lib/samba/sysvol/gdd.nl/scripts

SSSD

  1. Fehler beim Versuch, SSSD zu starten: Keine Domänen konfiguriert
/usr/sbin/sssd -i
(Fr Feb  28  08:01:02:501988 2014) [sssd] [confdb_get_domain_internal] (0x0010): Unbekannte Domäne  [GDD.NL]
(Fr Feb  28  08:01:02:502023 2014) [sssd] [confdb_get_domains] (0x0010): Fehler  (2 [Keine solche Datei oder Verzeichnis])  Domain abrufen  [GDD.NL], Überspringen!
(Fr Feb  28  08:01:02:502035 2014) [sssd] [confdb_get_domains] (0x0010): Keine korrekt konfigurierten Domänen, fataler Fehler!
(Fr Feb  28  08:01:02:502042 2014) [sssd] [get_monitor_config] (0x0010): Keine Domänen konfiguriert.
(Fr Feb  28  08:01:02:502088 2014) [sssd] [Haupt] (0x0020): Fehler beim Laden der Konfigurationsdatenbank:  [2]: Keine solche Datei oder Verzeichnis

Die Lösung besteht darin, tatsächlich eine Domäne zu konfigurieren.

  1. Fataler Fehler bei der Initialisierung von Datenanbietern beim Versuch, SSSD zu starten
sssd -i
...
(Mo Mär  3  05:59:23 2014) [sssd[sein[GDD.NL]]] [load_backend_module] (0x0010): Fehler  (2)  in Modul  (ad)  Initialisierung  (sssm_ad_id_init)!
(Mo Mär  3  05:59:23 2014) [sssd[sein[GDD.NL]]] [be_process_init] (0x0010): Schwerwiegender Fehler bei der Initialisierung von Datenanbietern
(Mo Mär  3  05:59:23 2014) [sssd[sein[GDD.NL]]] [Haupt] (0x0010): Backend konnte nicht initialisiert werden  [2]
(Mo Mär  3  05:59:23 2014) [sssd] [sbus_remove_watch] (0x2000): 0x1d4be30/0x1d44340
(Mo Mär  3  05:59:23 2014) [sssd] [sbus_remove_watch] (0x2000): 0x1d4be30/0x1d4c850
(Mo Mär  3  05:59:23 2014) [sssd] [sbus_dispatch] (0x4000): dbus-Verbindung: 1D4E190
(Mo Mär  3  05:59:23 2014) [sssd] [sbus_dispatch] (0x0080): Verbindung ist nicht geöffnet  für  Versenden.

Verdammt, ich habe vergessen, die Anmeldedatei zu generieren, und die Zeile in /etc/sssd/sssd.conf lautet: krb5_keytab=/etc/krb5.sssd.keytab

Lösung: Erzeugen Sie eine Keytab-Datei mit

samba-tool domain exportkeytab /etc/krb5.sssd.keytab --principal=HOST1$

Fügen Sie die Zeile "krb5_keytab=/etc/krb5.sssd.keytab" zu /etc/sssd/sssd.conf hinzu.

Hinweis: HOST1 wird in unserem Fall für das Host-Konto verwendet.

Contact

Let’s discuss how we can support your journey.