Projet

Général

Profil

Tâche #24000

Scénario #26377: Évolution de la configuration de Samba

Ajout de variables permettant de générer les hash HA256 et SHA512

Ajouté par Emmanuel IHRY il y a presque 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
29/05/2018
Echéance:
% réalisé:

80%

Temps estimé:
6.00 h
Temps passé:
Restant à faire (heures):
0.0

Description

A partir de la version samba 4.7, il est possible de générer des Hash supplémentaires qui sont stockés dans l'attribut SupplementalCredentials

La configuration est simple, il suffit d'ajouter un ligne dans smb.conf avec les formats attendus :

  • password hash userPassword schemes = CryptSHA256 CryptSHA512*

Dans cette exemple, au prochain changement de mot de passe du user via CTRL ALT SUPP ou bien via samba-tool, cela génèrera dans l'attribut supplementalCredentials deux hash :

root@pdc-ad1:~# samba-tool user getpassword toto --attributes=virtualCryptSHA512,virtualCryptSHA256
dn: CN=toto,CN=Users,DC=ac-test,DC=eole

Got password OK
root@pdc-ad1:~# samba-tool user getpassword toto --attributes=virtualCryptSHA512,virtualCryptSHA256
dn: CN=toto,CN=Users,DC=ac-test,DC=eole
virtualCryptSHA256: {CRYPT}$5$Bg0Vq1Nm22S4ITbE$YUIa8/bDvD58iBT6KzAmVT4sRIb3brY
ri5B2do4ap77
virtualCryptSHA512: {CRYPT}$6$V8BOezBunSOZ7fcK$uzngXi8P4GhC06JM9PQ/125KHKuiIr5
Yxz7WYkdjwdxmj0VPbbZ3PvKR35qbEUhFKAcG66mrm750KapIIU3pu.

Got password OK

Les formats proposés sont décrits dans MAN smb.conf :

password hash userPassword schemes (G)

This parameter determines whether or not samba(8) acting as an Active Directory Domain Controller will attempt to store additional passwords hash types for the user

The values are stored as 'Primary:userPassword' in the supplementalCredentials attribute. The value of this option is a hash type.

The currently supported hash types are:

· CryptSHA256

· CryptSHA512

Multiple instances of a hash type may be computed and stored. The password hashes are calculated using the crypt(3) call. The number of rounds used to compute the hash can be specified by
adding ':rounds=xxxx' to the hash type, i.e. CryptSHA512:rounds=4500 would calculate an SHA512 hash using 4500 rounds. If not specified the Operating System defaults for crypt(3) are used.

As password changes can occur on any domain controller, you should configure this on each of them. Note that this feature is currently available only on Samba domain controllers.

Currently the NT Hash of the password is recorded when these hashes are calculated and stored. When retrieving the hashes the current value of the NT Hash is checked against the stored NT
Hash. This detects password changes that have not updated the password hashes. In this case samba-tool user will ignore the stored hash values.

Being able to obtain the hashed password helps, when they need to be imported into other authentication systems later (see samba-tool user getpassword) or you want to keep the passwords in
sync with another system, e.g. an OpenLDAP server (see samba-tool user syncpasswords).

Related command: unix password sync

Default: password hash userPassword schemes =

Example: password hash userPassword schemes = CryptSHA256

Example: password hash userPassword schemes = CryptSHA256 CryptSHA512

Example: password hash userPassword schemes = CryptSHA256:rounds=5000 CryptSHA512:rounds=7000

Evolution à faire coté EOLE : ajouter un attribut permettant de désigner les hash à générer

Ajouter une variable qui permette de saisir une ou deux valeurs de ce type : CryptSHA256 CryptSHA512:rounds=4500

Modifier le template smb.conf en ajoutant cette ligne si génération de hash demandée dans gen_config :

password hash userPassword schemes = CryptSHA256 CryptSHA512:rounds=4500

Pour chaque Hash, il faudra définir ces deux infos :
Type de Hash : SHA256 ou SHA512
Nb de rounds : vide par défaut, autres valeurs possibles à vérifier avec la doc samba


Demandes liées

Lié à Documentations - Tâche #26606: Documenter les variables permettant de générer les hash SHA256 et SHA512 Fermé 28/01/2019

Révisions associées

Révision 7502c32e (diff)
Ajouté par Benjamin Bohard il y a plus de 5 ans

Let configure password hash userPassword schemes in smb.conf.

Ref #24000

Révision 6c1ce7e2 (diff)
Ajouté par Emmanuel GARETTE il y a plus de 5 ans

Implement constraints for crypt round number.

Ref #24000

Historique

#1 Mis à jour par Emmanuel IHRY il y a presque 6 ans

  • Description mis à jour (diff)
  • Assigné à mis à Benjamin Bohard

#2 Mis à jour par Emmanuel IHRY il y a plus de 5 ans

Le besoin précis en terme d'éolisation du paramétrage de la génération des Hash sera spécifié par le MTES pour le 11/01 au + tard

#3 Mis à jour par Benjamin Bohard il y a plus de 5 ans

  • Tâche parente changé de #23999 à #26377

#4 Mis à jour par Benjamin Bohard il y a plus de 5 ans

  • Description mis à jour (diff)

#5 Mis à jour par Gilles Grandgérard il y a plus de 5 ans

1°) Changelog samba 4.8: Etudier "--plaintext-secrets" et ses conséquences sur les mots de passe.
L'idée pourrait être d'ajouter une variable dans le dico qui activerait ou non ce mécanisme
Par défaut, nous ne l'utiliserions pas

2°) Se poser la question de la sauvegarde de 'encrypted_secrets.key'

Encrypted secrets
-----------------

Attributes deemed to be sensitive are now encrypted on disk. The sensitive
values are currently:
    pekList
    msDS-ExecuteScriptPassword
    currentValue
    dBCSPwd
    initialAuthIncoming
    initialAuthOutgoing
    lmPwdHistory
    ntPwdHistory
    priorValue
    supplementalCredentials
    trustAuthIncoming
    trustAuthOutgoing
    unicodePwd
    clearTextPassword

This encryption is enabled by default on a new provision or join, it can be disabled at provision or join time with the new option '--plaintext-secrets'.

However, an in-place upgrade will not encrypt the database.

Once encrypted, it is not possible to do an in-place downgrade (eg to 4.7) of the database. To obtain an unencrypted copy of the database a new DC join should be performed, 
specifying the '--plaintext-secrets' option.

The key file "encrypted_secrets.key" is created in the same directory as the database and should NEVER be disclosed.  It is included by the samba_backup script.

#6 Mis à jour par Emmanuel IHRY il y a plus de 5 ans

Pour ce qui est de la génération des SHA256 et SHA512, je propose cette évolution :

Coté DICO, en mode expert :
Après le bloc "Gestion des services samba", et donc a avant le bloc "Environnnement réseau"

Ajout d'un bloc intitulé "Gestion des empreintes de mots de passe" avec ce contenu :

*Gestion des empruntes de mots de passe*

Générer une empreinte de type SHA256 :  oui/non  nombre de tour de hachage à utiliser : valeur de 1000 à 999999999, val par défaut = 5000

Générer une empreinte de type SHA512 :  oui/non   nombre de tour de hachage à utiliser : valeur de 1000 à 999999999, val par défaut = 5000

NB : en bulle d'aide indiquer que les empreintes seront générées après le prochain changement de mot de passe et récupérables via cette commande :
amba-tool user getpassword <USER>° --attributes=virtualCryptSHA512,virtualCryptSHA256

PS : Je suis preneur d'avis sur l'utilité de l'option : nombre de tour de hachage à utiliser

Cote SMB.CONF

En fonction des options choisies, générer une de lignes pouvant avoir ce type de valeurs :

password hash userPassword schemes = CryptSHA256

password hash userPassword schemes = CryptSHA256 CryptSHA512

password hash userPassword schemes = CryptSHA256:rounds=5000 CryptSHA512:rounds=7000

#7 Mis à jour par Benjamin Bohard il y a plus de 5 ans

  • Projet changé de EOLE AD DC à Distribution EOLE
  • Statut changé de Nouveau à En cours

#8 Mis à jour par Benjamin Bohard il y a plus de 5 ans

Le nombre d’itération pour le calcul du hash ne devrait peut-être pas avoir une valeur par défaut fixe (commune à tous les serveurs si la variable en mode expert n’est pas éditée).
D’un autre côté, il faut, a priori, avoir le même nombre d’itération sur les différentes serveurs DC d’un domaine.
Le nombre d’itération pourrait-il être aléatoire sur le DC primaire et non rempli pour celui des DC additionnels ?

#9 Mis à jour par Emmanuel GARETTE il y a plus de 5 ans

  • % réalisé changé de 0 à 80
  • Temps estimé mis à 6.00 h
  • Restant à faire (heures) mis à 3.0

Reste a voir les valeurs par défaut.

#10 Mis à jour par Benjamin Bohard il y a plus de 5 ans

  • Statut changé de En cours à Résolu

#11 Mis à jour par Benjamin Bohard il y a plus de 5 ans

  • Statut changé de Résolu à Fermé
  • Restant à faire (heures) changé de 3.0 à 0.0

#12 Mis à jour par Joël Cuissinat il y a environ 5 ans

  • Lié à Tâche #26606: Documenter les variables permettant de générer les hash SHA256 et SHA512 ajouté

Formats disponibles : Atom PDF