web-dev-qa-db-fra.com

Comment Samba peut-il être configuré pour utiliser LDAP uniquement pour l'authentification?

Je cherche à configurer un nouveau partage de fichiers Samba qui utilise LDAP pour l'authentification principale. Le serveur LDAP est déjà configuré et la machine sur laquelle le serveur Samba sera installé est déjà configurée pour autoriser l'accès SSH à l'aide de l'authentification LDAP.

Il semble que les cas d'utilisation les plus courants documentés pour l'intégration Samba/LDAP impliquent le stockage de schémas Samba sur le serveur LDAP, la synchronisation des mots de passe, la mise à jour des mots de passe vers LDAP via Samba, etc. Je ne cherche rien de tout cela - tout ce que je veux faire, c'est que le serveur Samba s'authentifie anonymement via LDAP et récupère les données de groupe sur l'utilisateur afin que l'autorisation puisse être gérée dans la configuration Samba.

Si c'est important:

  • LDAP: OpenLDAP 2.4 sur RHEL 7.4
  • SMB: Samba 4.7 sur Ubuntu 18.04

Voici ce que j'ai jusqu'à présent:

[global]
    server string = Samba Server (%v)
    workgroup = WORKGROUP
    interfaces = eno1
    server role = standalone server
    log file  = /var/log/samba/smb.log
    max log size = 10000
    log level = 3 passdb:5 auth:5

    passdb backend = ldapsam:ldaps://hostname
    ldap suffix = dc=hostname,dc=TLD
    ldap user suffix = cn=users,cn=accounts
    ldap group suffix = cn=groups,cn=accounts

[Share1]
    path = /srv/share1
    valid users = @group1, @group3
    force group = @group1
    read only = no
    browsable = yes

[Share2]
    path = /srv/share2
    valid users = @group2, @group3
    force group = @group2
    read only = no
    browsable = yes

Mais Samba ne démarre pas. L'état Systemctl affiche les éléments suivants:

../source3/passdb/secrets.c:362(fetch_ldap_pw)
  fetch_ldap_pw: neither ldap secret retrieved!
../source3/passdb/pdb_ldap.c:6542(pdb_init_ldapsam_common)
  pdb_init_ldapsam_common: Failed to retrieve LDAP password from secrets.tdb
../source3/passdb/pdb_interface.c:180(make_pdb_method_name)
  pdb backend ldapsam:ldaps://hostname did not correctly init (error was NT_STATUS_NO_MEMORY)

Je voudrais pas devoir faire ce qui suit:

  • Configurer un nouvel utilisateur pour le serveur Samba lui-même à utiliser
  • Autoriser Samba à modifier LDAP
  • Téléchargez le schéma Samba sur LDAP

Je veux juste que Samba:

  • Confirmez que les demandes entrantes ont un utilisateur/pass valide configuré dans LDAP
  • Utiliser les données LDAP sur l'utilisateur (nom, groupes, etc.) pour sa propre configuration d'autorisations de partage

Que dois-je faire d'autre?

4
Brian Bauman

Je suppose que vous voulez exécuter Samba en mode contrôleur de domaine simple compatible WinNT, pas en mode Active Directory complet.

Vous devez d'abord comprendre que l'authentification SMB est basée sur un hachage de mot de passe NTLM. Fondamentalement, il s'agit d'un justificatif en texte clair pour une authentification challenge-response qui peut être stockée dans les entrées utilisateur LDAP, mais dans attribut séparé sambaNTPassword. Attribut userPassword est pas utilisé du tout et Samba n'envoie pas de demande de liaison au serveur LDAP pour vérifier l'utilisateur mot de passe.

=> Vous devez installer le schéma Samba et ajouter la classe d'objets auxiliaires sambaSamAccount aux entrées utilisateur.

Dans une configuration correcte, vous devez autoriser l'utilisateur du service de votre Samba DC à lire cet attribut sambaNTPassword. Vos ACL doivent empêcher quiconque de lire cet attribut.

=> Vous devez créer une entrée de service pour Samba DC dans votre annuaire LDAP et accorder un accès en lecture aux entrées utilisateur.

Il existe également une superposition de serveur OpenLDAP appelée slapo-smbk5pwd qui met à jour sambaNTPassword dans le cas où l'attribut userPassword est défini via Password Modify fonctionnement étendu (voir RFC 3062 ). En l'utilisant, vous n'aurez pas à accorder à Samba l'accès en écriture à l'entrée utilisateur.

2
Michael Ströder