LDAP SAMBA & PAM

Pour des raisons professionnelles j'avais besoin de pouvoir avoir une authentification unifiée pour plusieurs machines et services sur les dites machines.

Il me fallait un identifiant unique pour un pool de machine pour SSH ou SFTP et pour Samba.

Tache ardue car tout les “guides” trouvé parlaient de Samba en mode contrôleur de domaine, ce que je ne voulais absolument pas.

Après avoir réussi je pose donc mon guide 8-)

Note: J'ai repris pas mal d'informations a partir du site de Guim (La base de la créativitée est le plagiat il parait ;-) ) Merci à lui pour cette “base solide” d'information.

Serveur LDAP

Installation du serveur LDAP

# apt-get install slapd db4.2-util
Outil de configuration des paquets                                              
                                                                              
  ----------------------| Configuration de slapd |-----------------------     
 |                                                                       |    
 | Si vous choisissez cette option, aucune configuration par défaut et   |    
 | aucune base de données ne seront créées.                              |    
 |                                                                       |    
 | Voulez-vous omettre la configuration d'OpenLDAP ?                     |    
 |                                                                       |    
 |                   <Oui>                      <Non>                    |    
 |                                                                       |    
  -----------------------------------------------------------------------     
                                                                              

Choisir “Non”

Outil de configuration des paquets                                              
                                                                              
 ------------------------| Configuration de slapd |-------------------------   
| Le nom de domaine DNS est utilisé pour établir le nom distinctif de base  |  
| (« base DN » ou « Distinguished Name ») de votre annuaire LDAP. Par       |  
| exemple, si vous indiquez «toto.titi.org » ici, le nom distinctif de      |  
| base sera « dc=toto, dc=titi, dc=org ».                                   |  
|                                                                           |  
| Nom de domaine :                                                          |  
|                                                                           |  
| nodomain_________________________________________________________________ |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Remplacer “nodomain” par le domaine désiré.

Outil de configuration des paquets                                              
                                                                              
 ------------------------| Configuration de slapd |-------------------------   
| Veuillez indiquer la valeur que sera utilisée comme nom de votre entité   |  
| (« organization ») dans le nom distinctif de base de votre annuaire       |  
| LDAP.                                                                     |  
|                                                                           |  
| Nom de votre organisation :                                               |  
|                                                                           |  
| nodomain_________________________________________________________________ |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Même chose, remplacer “nodomain” par le domaine.

Outil de configuration des paquets                                              
                                                                              
  ----------------------| Configuration de slapd |-----------------------     
 | Veuillez indiquer le mot de passe de l'administrateur de l'annuaire   |    
 | LDAP.                                                                 |    
 |                                                                       |    
 | Mot de passe de l'administrateur :                                    |    
 |                                                                       |    
 | _____________________________________________________________________ |    
 |                                                                       |    
 |                                <Ok>                                   |    
 |                                                                       |    
  -----------------------------------------------------------------------     

Entrer le mot de passe désiré pour le compte Admin.

Outil de configuration des paquets                                              
                                                                              
 ------------------------| Configuration de slapd |-------------------------   
|                                                                           |  
| Le module de bases de données BDB est le module recommandé par les        |  
| développeurs d'OpenLDAP. Pour plus d'informations, veuillez consulter le  |  
| fichier /usr/share/doc/slapd/README.DB_CONFIG.gz.                         |  
|                                                                           |  
| HDB est la version qui est amenée à remplacer BDB dans le futur. Des      |  
| problèmes peuvent subsister dans le code HDB des versions 2.2 d'OpenLDAP  |  
| et vous devriez donc conserver BDB en attendant les versions 2.3.         |  
|                                                                           |  
| Les modules BDB (back-bdb) et LDBM (back-ldbm) ont des buts analogues.    |  
| Back-bdb a été développé en profitant de l'expérience acquise avec        |  
| back-ldbm mais les deux sont sensiblement différents. Tous deux stockent  |  
| les enregistrements avec une clé unique d'identification (« ID key »)     |  
| sur 32 bits en utilisant dn2id pour établir les correspondances entre     |  
| noms distinctifs (DN) et clés uniques d'identification. Tous deux         |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Valider.

                                                                              
Outil de configuration des paquets                                              
                                                                              
                 -------| Configuration de slapd |--------                    
                | Module de base de données à utiliser :  |                   
                |                                         |                   
                |                   BDB                   |                   
                |                   HDB                   |                   
                |                                         |                   
                |                                         |                   
                |                 <Ok>                    |                   
                |                                         |                   
                 -----------------------------------------                    

Choisir “BDB”

Outil de configuration des paquets                                              
                                                                              
       ------------------| Configuration de slapd |------------------         
      |                                                              |        
      |                                                              |        
      |                                                              |        
      | Faut-il supprimer la base de données à la purge du paquet ?  |        
      |                                                              |        
      |                <Oui>                   <Non>                 |        
      |                                                              |        
       --------------------------------------------------------------         

Choisir “Oui”.

Outil de configuration des paquets                                              
                                                                              
 -----------------------| Configuration de slapd |------------------------    
|                                                                         |   
| Des fichiers présents dans /var/lib/ldap vont probablement provoquer    |   
| l'échec de la procédure de configuration. Si vous choisissez cette      |   
| option, les scripts de configuration déplaceront les anciens fichiers   |   
| des bases de données avant de créer une nouvelle base de données.       |   
|                                                                         |   
| Faut-il déplacer l'ancienne base de données ?                           |   
|                                                                         |   
|                    <Oui>                       <Non>                    |   
|                                                                         |   
 -------------------------------------------------------------------------    

Choisir “Oui”

Outil de configuration des paquets                                              
                                                                              
 ------------------------| Configuration de slapd |-------------------------   
|                                                                           |  
| Désormais slapd n'utilise plus par défaut l'ancien protocole LDAPv2. Il   |  
| est conseillé de migrer les programmes et les utilisateurs vers la        |  
| version LDAPv3 . Si vous utilisez d'anciens programmes qui ne gèrent pas  |  
| encore LDAPv3, vous pouvez choisir cette option malgré tout. Cela         |  
| ajoutera l'option « allow bind_v2 » au fichier slapd.conf pour indiquer   |  
| au démon slapd qu'il doit accepter les connexions LDAPv2.                 |  
|                                                                           |  
| Faut-il autoriser le protocole LDAPv2 ?                                   |  
|                                                                           |  
|                    <Oui>                       <Non>                      |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Puisque ce n'est pas recommandé, on n'autorisera pas LDAPv2

Configuration LDAP

Fichier config de LDAP

include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/samba.schema

pidfile         /var/run/slapd/slapd.pid

argsfile        /var/run/slapd/slapd.args

loglevel        0

modulepath      /usr/lib/ldap
moduleload      back_bdb

sizelimit 500

tool-threads 1

backend         bdb
checkpoint 512 30

database        bdb

suffix          "dc=kathryl,dc=net"

rootdn          "cn=admin,dc=kathryl,dc=net"

rootpw          {SSHA}5phpdUoqniQz0iXVXWViK1fYO1mWSM6r

directory       "/var/lib/ldap"

dbconfig set_cachesize 0 2097152 0

dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500

index           objectClass eq

lastmod         on

access to attrs=userPassword,shadowLastChange
       by dn="cn=admin,dc=kathryl,dc=net" write
       by anonymous auth
       by self write
       by * none

access to dn.base="" by * read

access to *
       by dn="cn=admin,dc=kathryl,dc=net" write
       by * read

A noter la ligne

include         /etc/ldap/schema/samba.schema

C'est grâce a ce schéma de table que Samba va savoir ce qu'il doit chercher. Il faut donc avoir ce schéma extrait.

# apt-get install samba-doc
# gunzip -c /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema

La ligne

rootpw          {SSHA}5phpdUoqniQz0iXVXWViK1fYO1mWSM6r

Représente la pass “root” de la base. Pour en générer un il faut utiliser la commande “slappasswd” :

# slappasswd 
New password: 
Re-enter new password: (123456)
{SSHA}5phpdUoqniQz0iXVXWViK1fYO1mWSM6r

PAM

Installation du necessaire

# apt-get install libpam-ldap libpam0g libldap2 libpam-cracklib libnss-ldap nscd
Outil de configuration des paquets                                              
                                                                               
 ---------------------| Configuration de libpam-ldap |----------------------   
| Veuillez indiquer l'URI d'accès au serveur LDAP. Il s'agit en général     |  
| d'une chaîne de caractères sous la forme « ldap:<hôte ou                  |  
| IP>><port>/ ». Des URI utilisant « ldaps:// » ou « ldapi:// » sont        |  
| également possibles. Le numéro de port est facultatif.                    |  
|                                                                           |  
| Note : utiliser une adresse IP est recommandé ; les risques d'échec sont  |  
| réduits en cas d'indisponibilité du service de noms.                      |  
|                                                                           |  
| URI du serveur LDAP :                                                     |  
|                                                                           |  
| ldapi://XXX.XXX.XXX.XXX/_________________________________________________ |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   
                                                                              

Indiquer l'IP du serveur LDAP

Outil de configuration des paquets                                              

 ---------------------| Configuration de libpam-ldap |----------------------   
| Veuillez indiquer le nom distinctif de la base de recherche. Beaucoup de  |  
| sites utilisent ici les composants de leurs noms de domaine. Ainsi, pour  |  
| le domaine « exemple.net », le nom distinctif utilisé serait              |  
| « dc=exemple,dc=net ».                                                    |  
|                                                                           |  
| Nom distinctif (DN) de la base de recherche :                             |  
|                                                                           |  
| dc=kathryl,dc=net________________________________________________________ |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Indiquer le nom de la base de recherche (dc=kathryl,dc=net dans notre cas).

Outil de configuration des paquets                                              
                                                                               
 ---------------------| Configuration de libpam-ldap |----------------------   
| Veuillez indiquer la version du protocole LDAP que doit utiliser ldapns.  |  
| Il est recommandé de choisir le numéro de version le plus élevé           |  
| disponible.                                                               |  
|                                                                           |  
| Version de LDAP à utiliser :                                              |  
|                                                                           |  
|                                     3                                     |  
|                                     2                                     |  
|                                                                           |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   
                                                                              

Comme on n'a pas autorisé LDAPv2, nous choisirons donc LDAPv3

Outil de configuration des paquets                                              
                                                                               
 ---------------------| Configuration de libpam-ldap |----------------------   
|                                                                           |  
| Cette option permet aux outils utilisant PAM de se comporter comme si     |  
| vous changiez les mots de passe locaux.                                   |  
|                                                                           |  
| Le mot de passe sera conservé dans un fichier séparé accessible au seul   |  
| superutilisateur.                                                         |  
|                                                                           |  
| Si vous utilisez un répertoire /etc monté par NFS ou toute autre          |  
| combinaison de réglages similaire, vous devriez désactiver cette option.  |  
|                                                                           |  
| Faut-il créer une base de données locale pour l'administrateur ?          |  
|                                                                           |  
|                    <Oui>                       <Non>                      |  
|                                                                           |  
 ---------------------------------------------------------------------------   
                                                                              

Répondre “Oui”

Outil de configuration des paquets                                              
                                                                               
  --------------------| Configuration de libpam-ldap |--------------------    
 |                                                                        |   
 | Choisissez cette option s'il est nécessaire de s'identifier avant de   |   
 | pouvoir utiliser la base.                                              |   
 |                                                                        |   
 | Note : avec une configuration classique, ce n'est pas nécessaire.      |   
 |                                                                        |   
 | La base LDAP demande-t-elle une identification ?                       |   
 |                                                                        |   
 |                   <Oui>                      <Non>                     |   
 |                                                                        |   
  ------------------------------------------------------------------------    

Répondre “Non”

Outil de configuration des paquets                                              
                                                                               
   -------------------| Configuration de libpam-ldap |-------------------     
  | Veuillez indiquer l'identifiant qui servira à modifier les mots de   |    
  | passe.                                                               |    
  |                                                                      |    
  | Veuillez noter que cet identifiant doit posséder des privilèges      |    
  | d'administrateur.                                                    |    
  |                                                                      |    
  | Compte LDAP pour le superutilisateur (« root ») :                    |    
  |                                                                      |    
  | cn=admin,dc=kathryl,dc=net__________________________________________ |    
  |                                                                      |    
  |                                <Ok>                                  |    
  |                                                                      |    
   ----------------------------------------------------------------------     

Indiquer le compte de l'Admin LDAP

Outil de configuration des paquets                                              
                                                                              
 ---------------------| Configuration de libpam-ldap |---------------------   
| Veuillez indiquer le mot de passe qui sera utilisé lorsque libpam-ldap   |  
| se connectera au répertoire LDAP avec le compte du superutilisateur.     |  
|                                                                          |  
| Ce mot de passe sera conservé dans un fichier à part                     |  
| (/etc/pam_ldap.secret) qui ne sera accessible qu'au superutilisateur     |  
| (« root »).                                                              |  
|                                                                          |  
| Si vous indiquez un mot de passe vide, l'ancien mot de passe sera        |  
| utilisé.                                                                 |  
|                                                                          |  
| Mot de passe du compte du superutilisateur LDAP :                        |  
|                                                                          |  
| ________________________________________________________________________ |  
|                                                                          |  
|                                  <Ok>                                    |  
|                                                                          |  
 --------------------------------------------------------------------------   

Remplir avec le mot de passe du compte Admin.

Outil de configuration des paquets                                              
                                                                              
 ---------------------| Configuration de libpam-ldap |----------------------   
|                                                                           |  
| Le module PAM peut choisir une méthode locale de chiffrement des mots de  |  
| passe en cas de changement. C'est généralement préférable. En             |  
| choisissant autre chose que « en clair », vous êtes certain que les mots  |  
| de passe seront chiffrés d'une manière ou d'une autre.                    |  
|                                                                           |  
| Détail des choix possibles :                                              |  
|                                                                           |  
| En clair :        ne pas utiliser de chiffrement. Utile pour les          |  
|                   serveurs qui chiffrent automatiquement l'entrée         |  
|                   userPassword ;                                          |  
|                                                                           |  
|                                                                           |  
| Chiffré :         userPassword utilisera le même format que pour le       |  
|                   fichier de mots de passe du système. Fonctionne         |  
|                                                                           |   
|                                  <Ok>                                     |   
|                                                                           |  
 ---------------------------------------------------------------------------   
                                                                              

Valider.

Outil de configuration des paquets                                              
                                                                               
     ----------------| Configuration de libpam-ldap |-----------------        
    | Méthode de chiffrement pour les changements de mots de passe :  |       
    |                                                                 |       
    |                        En clair                                 |       
    |                        Chiffré                                  |       
    |                        NDS Novell                               |       
    |                        Active Directory                         |       
    |                        EXOP OpenLDAP                            |       
    |                        MD5                                      |       
    |                                                                 |       
    |                                                                 |       
    |                             <Ok>                                |       
    |                                                                 |       
     -----------------------------------------------------------------        
                                                                              

Choisir “Chiffré”

Outil de configuration des paquets                                              
                                                                               
 ---------------------| Configuration de libnss-ldap |----------------------   
| Veuillez indiquer l'URI d'accès au serveur LDAP. Il s'agit en général     |  
| d'une chaîne de caractères sous la forme « ldap:<hôte ou                |  
| IP>><port>/ ». Des URI utilisant « ldaps:// » ou « ldapi:// » sont        |  
| également possibles. Le numéro de port est facultatif.                    |  
|                                                                           |  
| Note : utiliser une adresse IP est recommandé ; les risques d'échec sont  |  
| réduits en cas d'indisponibilité du service de noms.                      |  
|                                                                           |  
| URI du serveur LDAP :                                                     |  
|                                                                           |  
| ldapi://XXX.XXX.XXX.XXX/_________________________________________________ |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Comme précedemment, indiquer l'IP du serveur LDAP

Outil de configuration des paquets                                              
                                                                               
 ---------------------| Configuration de libnss-ldap |----------------------   
| Veuillez indiquer le nom distinctif de la base de recherche. Beaucoup de  |  
| sites utilisent ici les composants de leurs noms de domaine. Ainsi, pour  |  
| le domaine « exemple.net », le nom distinctif utilisé serait              |  
| « dc=exemple,dc=net ».                                                    |  
|                                                                           |  
| Nom distinctif (DN) de la base de recherche :                             |  
|                                                                           |  
| dc=kathryl,dc=net________________________________________________________ |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Comme précédemment, indiquer la base.

Outil de configuration des paquets                                              
                                                                              
 ---------------------| Configuration de libnss-ldap |----------------------   
| Veuillez indiquer la version du protocole LDAP que doit utiliser ldapns.  |  
| Il est recommandé de choisir le numéro de version le plus élevé           |  
| disponible.                                                               |  
|                                                                           |  
| Version de LDAP à utiliser :                                              |  
|                                                                           |  
|                                     3                                     |  
|                                     2                                     |  
|                                                                           |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Comme précédemment indiquer LDAPv3

Outil de configuration des paquets                                              
                                                                               
  --------------------| Configuration de libnss-ldap |--------------------    
 |                                                                        |   
 | Choisissez cette option s'il est nécessaire de s'identifier avant de   |   
 | pouvoir utiliser la base.                                              |   
 |                                                                        |   
 | Note : avec une configuration classique, ce n'est pas nécessaire.      |   
 |                                                                        |   
 | La base LDAP demande-t-elle une identification ?                       |   
 |                                                                        |   
 |                   <Oui>                      <Non>                     |   
 |                                                                        |   
  ------------------------------------------------------------------------    

Idem, choisir “Non”.

Outil de configuration des paquets                                              
                                                                              
 ---------------------| Configuration de libnss-ldap |----------------------   
|                                                                           |  
| Cette option permet aux outils qui interrogent le système NSS avec        |  
| libnss-ldap de récupérer des informations supplémentaires lorsqu'ils      |  
| sont utilisés par le superutilisateur (« root »).                         |  
|                                                                           |  
| Si vous utilisez un répertoire /etc monté par NFS ou toute autre          |  
| combinaison de réglages similaire, vous devriez désactiver cette option.  |  
|                                                                           |  
| Privilèges LDAP spécifiques pour le superutilisateur ?                    |  
|                                                                           |  
|                    <Oui>                       <Non>                      |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Répondre “Oui”.

Outil de configuration des paquets                                              
                                                                              
 ---------------------| Configuration de libnss-ldap |----------------------   
|                                                                           |  
| Si vous utilisez des mots de passe dans la configuration de libnss-ldap,  |  
| mettre le système des permissions à 0600 (seul le propriétaire peut lire  |  
| ou modifier le fichier) est recommandé.                                   |  
|                                                                           |  
| Note : bien sûr, libnss-ldap vérifiera que nscd est installé et ne        |  
| mettra le mode à 0600 que si nscd est présent.                            |  
|                                                                           |  
| Rendre le fichier de configuration lisible et modifiable uniquement par   |  
| son propriétaire ?                                                        |  
|                                                                           |  
|                    <Oui>                       <Non>                      |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Répondre “Oui”.

Outil de configuration des paquets                                              
                                                                              
 ---------------------| Configuration de libnss-ldap |----------------------   
| Veuillez indiquer le compte qui sera utilisé pour les requêtes NSS avec   |  
| les privilèges du superutilisateur.                                       |  
|                                                                           |  
| Note : pour que cette fonctionnalité soit opérationnelle, ce compte doit  |  
| être autorisé à accéder aux attributs du répertoire LDAP qui              |  
| correspondent aux entrées masquées (« shadow ») des utilisateurs ainsi    |  
| qu'aux mots de passe des utilisateurs et des groupes.                     |  
|                                                                           |  
| Compte LDAP pour le superutilisateur (« root ») :                         |  
|                                                                           |  
| cn=admin,dc=kathryl,dc=net_______________________________________________ |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Indiquer le compte Admin.

Outil de configuration des paquets                                              
                                                                              
 ---------------------| Configuration de libnss-ldap |----------------------   
| Veuillez indiquer le mot de passe qui sera utilisé lorsque libnss-ldap    |  
| se connectera au répertoire LDAP avec le compte du superutilisateur.      |  
|                                                                           |  
| Ce mot de passe sera conservé dans un fichier à part                      |  
| (/etc/libnss-ldap.secret) qui ne sera accessible qu'au superutilisateur   |  
| (« root »).                                                               |  
|                                                                           |  
| Si vous indiquez un mot de passe vide, l'ancien mot de passe sera         |  
| utilisé.                                                                  |  
|                                                                           |  
| Mot de passe du compte du superutilisateur LDAP :                         |  
|                                                                           |  
| _________________________________________________________________________ |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Remplir avec le mot de passe du compte Admin.

Outil de configuration des paquets                                              
                                                                              
  -------------------| Configuration de libnss-ldap |--------------------     
 |                                                                       |    
 | Le fichier nsswitch.conf n'est pas géré automatiquement               |    
 |                                                                       |    
 | Pour que le paquet libnss-ldap fonctionne, vous devez modifier        |    
 | /etc/nsswitch.conf pour qu'il utilise la base de données LDAP. Un     |    
 | fichier modèle se trouve dans                                         |    
 | /usr/share/doc/libnss-ldap/examples/nsswitch.ldap ; vous pouvez       |    
 | l'utiliser pour la configuration de nsswitch ou bien le mettre à la   |    
 | place de votre configuration actuelle.                                |    
 |                                                                       |    
 | Avant de supprimer ce paquet, il est sage de supprimer les entrées    |    
 | « ldap © du fichier nsswitch.conf pour que les services de base       |    
 | continuent à fonctionner.                                             |    
 |                                                                       |    
 |                                <Ok>                                   |    
 |                                                                       |    
  -----------------------------------------------------------------------     

Valider.

Fichiers de configuration

/etc/pam.d/common-account

Le fichier common-account gère l'authorisation de connexion. On peut donner des restriction en fonction du login, de la date, de l'heure, etc. Modifier le fichier /etc/pam.d/common-account :

# Aucun paramètre n'est donnée pour la connexion
# c'est a dire que si l'utilisateur possede un compte
# local ou sur le ldap, il aura le droit de se connecter
account         required        pam_unix.so
account         sufficient      pam_ldap.so

/etc/pam.d/common-auth

Le fichier commmon-auth gère l'authentification. On y met les modules que l'on souhaite voir tester les couples login/mot de passe. Modifier le fichier /etc/pam.d/common-auth :

# Les variables d'environement par defaut sont placees dans /etc/security/pam_env.conf
auth            required        pam_env.so
# interroge le fichier /etc/passwd et si l'authentification est bonne, alors
# PAM retourne ok et quitte
auth            sufficient      pam_unix.so
# interroge le LDAP et si l'authentification est bonne, alors PAM retourne ok
# et quitte
auth            sufficient      pam_ldap.so use_first_pass
# si tout a echoue alors PAM retourne mauvaise authentification et quitte
auth            required        pam_deny.so

/etc/pam.d/common-password

Le fichier common-password gère le changement de mot de passe. Modifier le fichier /etc/pam.d/common-password/ :

password        required        pam_cracklib.so retry=3 minlen=6
password        sufficient      pam_unix.so use_authtok md5 shadow
password        sufficient      pam_ldap.so use_authtok
password        required        pam_deny.so

/etc/pam.d/common-session

Le fichier common-session gère l'ouverture de session. Modifier le fichier /etc/pam.d/common-session/ :

# charge le fichier /etc/security/limits.conf et pose de limites pour
# l'utilisateur qui se connecte
session         required        pam_limits.so
session         required        pam_unix.so
session         optional        pam_ldap.so
session         required        pam_mkhomedir.so skel=/etc/skel/ umask=027

/etc/nsswitch.conf

Ici on met files avant ldap pour que le root de la machine cliente puisse se connecter en s'authentifiant avec un mot de passe local. Modifier le fichier /etc/nsswitch.conf/, pour qu'il soit :

passwd:         compat ldap
shadow:         compat ldap
group:          compat ldap

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

/etc/nscd.conf

L'intérêt d'installer nscd est d'avoir un meilleur temps de réponse lorsque l'on interroge un service qui doit accèder à la liste des utilisateurs. Modifiez le fichier /etc/nscd.conf/, si nscd est installé. Le point sensible semble être les groupes.

# enable-cache : booleen yes ou no.
# positive-time-to-live : nombre de secondes après lesquelles
# les entrées mises en cache sont retirées.
# negative-time-to-live : pour les entrées non trouvées
# précédement, nombre de secondes après lesquelles les
# entrées mises en cache sont retirées.
# suggested-size : taille du hachage qui sera utilisé pour stocker
# les entrées. La taille doit être plus grande que le nombre de
# données que l'on veux stocker et être un nombre premier.
# check-files : test si les fichiers ont changé depuis la
# derniere fois.

enable-cache            passwd          yes
positive-time-to-live   passwd          300
negative-time-to-live   passwd          20
suggested-size          passwd          3001
check-files             passwd          yes

enable-cache            group           yes
positive-time-to-live   group           3600
negative-time-to-live   group           20
suggested-size          group           211
check-files             group           yes

enable-cache            hosts           no
positive-time-to-live   hosts           3600
negative-time-to-live   hosts           20
suggested-size          hosts           211
check-files             hosts           yes

/etc/ldap/ldap.conf

Modifier le fichier /etc/ldap/ldap.conf (mode 644).

# L'attribut BASE indique le DN de la base ldap
BASE dc=kathryl,dc=net
# le nom du serveur
HOST <Serveur LDAP>

/etc/libnss-ldap.conf

Le fichier /etc/libnss-ldap.conf configure l'access de Name Service Switch au LDAP. Attention ce fichier doit être en mode 644 sinon au login le nom de l'utilisateur sera “I have no name!”.

host <Serveur LDAP>
base dc=kathryl,dc=net
ldap_version 3

/etc/pam_ldap.conf

Le fichier /etc/pam_ldap.conf/ configure l'access de PAM au LDAP (mode 644) :

host <Serveur LDAP>
base dc=kathryl,dc=net
ldap_version 3
pam_password crypt

# pour filter les personnes en fonction de certain de leur attributs LDAP on peut utiliser la directive suivant (a adapter)
# pam_filter &(attribut=valeur)(objectClass=person)

nscd

Nscd est une sorte de cache pour LDAP, ce qui permet de garder l'authentification meme si LDAP est “ailleurs”. Une fois toute les modifs de configuration effectuée, il faut redemarrer NSCD :

# /etc/init.d/nscd stop
# /etc/init.d/nscd start

MySecureShell

Pour les comptes Webmaster nous avons besoin de les limiter a SFTP

Installation de MySecureShell

Il n'y a pas encore de package Debian directement disponible mais il existe des packages sur le site officiel. Il faut donc aller le télécharger l'installer a la main.

http://mysecureshell.sourceforge.net/fr/index.html

# dpkg -i mysecureshell_1.0_i386.deb

Configuration

# vi /etc/ssh/sftp_config
<Default>
      StayAtHome              true    
      VirtualChroot           true    
      ResolveIP               true    
      ShowLinksAsLinks        false   
</Default>

Activer MySecureShell

# /etc/init.d/mysecureshell start

Samba

Installer Samba

# apt-get install samba
Outil de configuration des paquets                                              
                                                                              
 -----------------------------| Samba Server |------------------------------   
| Veuillez indiquer le groupe de travail où les clients doivent trouver le  |  
| serveur. Il indique aussi le nom de domaine utilisé par le paramètre      |  
| « security=domain » quand celui-ci est utilisé.                           |  
|                                                                           |  
| Nom de domaine ou de groupe de travail :                                  |  
|                                                                           |  
| _________________________________________________________________________ |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Laisser vide et valider.

Outil de configuration des paquets                                              
                                                                              
 -----------------------------| Samba Server |-----------------------------   
|                                                                          |  
| Tous les clients Windows récents communiquent avec les serveurs SMB en   |  
| utilisant des mots de passe chiffrés. Si vous voulez utiliser des mots   |  
| de passe sans chiffrement, vous devez modifier un paramètre dans le      |  
| registre de Windows.                                                     |  
|                                                                          |  
| Il est recommandé d'utiliser des mots de passe chiffrés. Si vous le      |  
| faites, n'oubliez pas de créer un fichier /etc/samba/smbpasswd et d'y    |  
| établir les mots de passe de tous les utilisateurs, à l'aide de la       |  
| commande « smbpasswd ».                                                  |  
|                                                                          |  
| Voulez-vous chiffrer les mots de passe ?                                 |  
|                                                                          |  
|                    <Oui>                       <Non>                     |  
|                                                                          |  
 --------------------------------------------------------------------------   

Laisser la valeur par défaut et valider.

Outil de configuration des paquets                                              
                                                                               
 -----------------------------| Samba Server |------------------------------   
|                                                                           |  
| Si votre ordinateur obtient ses paramètres IP à partir d'un serveur DHCP  |  
| du réseau, ce serveur peut aussi fournir des informations sur les         |  
| serveurs WINS (serveurs de noms NetBIOS) présents sur le réseau. Une      |  
| modification du fichier smb.conf est nécessaire afin que les réglages     |  
| WINS fournis par le serveur DHCP soient lus dans /etc/samba/dhcp.conf.    |  
|                                                                           |  
| Le paquet dhcp3-client doit être installé pour utiliser cette             |  
| fonctionnalité.                                                           |  
|                                                                           |  
| Modifier smb.conf pour utiliser les paramètres WINS fournis par DHCP ?    |  
|                                                                           |  
|                    <Oui>                       <Non>                      |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Choisir “Non” et Valider.

Outil de configuration des paquets                                              
                                                                               
 -----------------------------| Samba Server |------------------------------   
| Le service de Samba smbd peut s'exécuter en tant que démon classique ou   |  
| bien être lancé par inetd. Il est recommandé de l'exécuter en tant que    |  
| démon.                                                                    |  
|                                                                           |  
| Comment voulez-vous lancer Samba ?                                        |  
|                                                                           |  
|                                  démons                                   |  
|                                  inetd                                    |  
|                                                                           |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   

Choisir “Démon” et Valider.

Outil de configuration des paquets                                              
                                                                              
 -----------------------------| Samba Server |------------------------------   
|                                                                           |  
| Pour rester compatible avec les réglages par défaut de la majorité des    |  
| versions de Windows, Samba doit être configuré pour utiliser des mots de  |  
| passe chiffrés. Cela impose de conserver les mots de passe dans un        |  
| fichier distinct de /etc/passwd. Ce fichier peut être créé                |  
| automatiquement, mais les mots de passe doivent y être ajoutés            |  
| manuellement avec la commande « smbpasswd » et être tenus à jour.         |  
|                                                                           |  
| Si vous ne voulez pas créer le fichier maintenant, Samba (ainsi,          |  
| probablement, que les clients Windows) devra utiliser des mots de passe   |  
| non chiffrés.                                                             |  
|                                                                           |  
| Veuillez consulter le fichier                                             |  
| /usr/share/doc/samba-doc/htmldocs/ENCRYPTION.html dans le paquet          |  
| samba-doc pour plus d'informations.                                       |  
|                                                                           |  
|                                  <Ok>                                     |  
|                                                                           |  
 ---------------------------------------------------------------------------   
                                                                              

Valider.

Outil de configuration des paquets                                              
                                                                               
      ------------------------| Samba Server |------------------------        
     |                                                                |       
     | Faut-il créer une base de données /var/lib/samba/passdb.tdb ?  |       
     |                                                                |       
     |                 <Oui>                    <Non>                 |       
     |                                                                |       
      ----------------------------------------------------------------        

Laisser la valeur par défaut et valider.

Configurer Samba

Fichier config type :

[global]
      workgroup = KATHRYL.NET

      security = user

      os level = 50

      passdb backend = ldapsam: ldap://<Serveur LDAP>/
      ldap admin dn = "cn=admin,dc=kathryl,dc=net"
      ldap suffix = "dc=kathryl,dc=net"
      ldap user suffix = "ou=users"

[homes]
     writeable = yes
     browseable = no

Il faut assigner ensuite au serveur Samba le mot de passe du compte Admin :

# smbpasswd -w <MDP Admin Samba>

Utiliser Samba pour générer la base LDAP

smbldap-tools

Nous allons utiliser l'outil SMBLDAP pour ce faire.

# apt-get install smbldap-tool

Configurer smbldaptools

/etc/smbldap-tools/smbldap_bind.conf

slaveDN="cn=admin,dc=kathryl,dc=net"
slavePw=<password admin ldap en clair>
masterDN="cn=admin,dc=kathryl,dc=net"
masterPw=<password admin ldap en clair>

/etc/smbldap-tools/smbldap.conf

slaveLDAP="XXX.XXX.XXX.XXX"
slavePort="389"
masterLDAP="XXX.XXX.XXX.XXX"
masterPort="389"
ldapTLS="0"
verify="require"
suffix="dc=kathryl,dc=net"
usersdn="ou=People,${suffix}"
computersdn="ou=Machines,${suffix}"
groupsdn="ou=Groups,${suffix}"
idmapdn="ou=Idmap,${suffix}"
sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
scope="sub"
hash_encrypt="CRYPT"
crypt_salt_format="%s"

userLoginShell="/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="700"
# Nom d'affichage - utiliser smbldap-useradd -c
userGecos="User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
# Les mots de passe expirent dans 10ans
defaultMaxPasswordAge="3650"

with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd" 

with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd" 

Propager la base

# smbldap-populate

Populating LDAP directory for domain KATHRYL.NET (S-1-5-21-201985311-660704269-2972090873)
(using builtin directory structure)

entry dc=kathryl,dc=net already exist. 
adding new entry: ou=People,dc=kathryl,dc=net
adding new entry: ou=Groups,dc=kathryl,dc=net
adding new entry: ou=Machines,dc=kathryl,dc=net
adding new entry: ou=Idmap,dc=kathryl,dc=net
adding new entry: uid=root,ou=People,dc=kathryl,dc=net
adding new entry: uid=nobody,ou=People,dc=kathryl,dc=net
adding new entry: cn=Domain Admins,ou=Groups,dc=kathryl,dc=net
adding new entry: cn=Domain Users,ou=Groups,dc=kathryl,dc=net
adding new entry: cn=Domain Guests,ou=Groups,dc=kathryl,dc=net
adding new entry: cn=Domain Computers,ou=Groups,dc=kathryl,dc=net
adding new entry: cn=Administrators,ou=Groups,dc=kathryl,dc=net
adding new entry: cn=Account Operators,ou=Groups,dc=kathryl,dc=net
adding new entry: cn=Print Operators,ou=Groups,dc=kathryl,dc=net
adding new entry: cn=Backup Operators,ou=Groups,dc=kathryl,dc=net
adding new entry: cn=Replicators,ou=Groups,dc=kathryl,dc=net
adding new entry: cn=NextFreeUnixId,dc=kathryl,dc=net

Please provide a password for the domain root: 
Changing UNIX and samba passwords for root
New password: 
Retype new password: 

(Le mot de passe demandé est celui de l'admin LDAP)

La base est a présent propagé.

Gérer les utilisateurs

Outils necessaire

PHPLDAPADMIN est un outils pour gérer le LDAP, il necessite Apache.

# apt-get install phpldapadmin
Outil de configuration des paquets                                              
                                                                              
 --------------------| Configuration de phpldapadmin |---------------------   
|                                                                          |  
| session : un identifiant dn de connexion et un mot de passe vous seront  |  
|           demandés à chaque connexion à phpLDAPadmin et une variable de  |  
|           session sera utilisée pour les conserver sur le serveur web.   |  
|           Ce choix est le plus sûr et sera donc utilisé par défaut ;     |  
|                                                                          |  
|                                                                          |  
| cookie  : un identifiant dn de connexion et un mot de passe vous         |  
|           seront demandés à chaque connexion à phpLDAPadmin. Ils         |  
|           seront conservés dans un cookie sur votre navigateur client ;  |  
|                                                                          |  
|                                                                          |  
| config  : l'identifiant dn de connexion et le mot de passe seront        |  
|           conservés dans le fichier de configuration afin de ne pas      |  
|           avoir à les indiquer pour chaque connexion à phpLDAPadmin.     |  
|                                                                          |  
|                                  <Ok>                                    |  
|                                                                          |  
 -------------------------------------------------------------------------- 

Valider

Outil de configuration des paquets                                              
                                                                              
                 ----| Configuration de phpldapadmin |-----                   
                | Type d'authentification :                |                  
                |                                          |                  
                |                 session                  |                  
                |                 cookie                   |                  
                |                 config                   |                  
                |                                          |                  
                |                                          |                  
                |                  <Ok>                    |                  
                |                                          |                  
                 ------------------------------------------ 

Choisir Session

Outil de configuration des paquets                                              
                                                                              
 --------------------| Configuration de phpldapadmin |---------------------   
| PhpLDAPadmin gère tout serveur web géré par PHP4, mais cette procédure   |  
| de configuration automatique ne gère actuellement qu'Apache.             |  
|                                                                          |  
| Serveur web à reconfigurer automatiquement :                             |  
|                                                                          |  
|    [ ] Apache                                                            |  
|    [ ] Apache-ssl                                                        |  
|    [ ] Apache-perl                                                       |  
|    [*] Apache2                                                           |  
|                                                                          |  
|                                                                          |  
|                                  <Ok>                                    |  
|                                                                          |  
 --------------------------------------------------------------------------   

Ne garder que Apache2

Outil de configuration des paquets                                              
                                                                              
 --------------------| Configuration de phpldapadmin |---------------------   
|                                                                          |  
| Veuillez noter que pour que les modifications soient prises en compte,   |  
| votre(vos) serveur(s) web doi(ven)t être redémarré(s).                   |  
|                                                                          |  
| Faut-il redémarrer le serveur web ?                                      |  
|                                                                          |  
|                    <Oui>                       <Non>                     |  
|                                                                          |  
 --------------------------------------------------------------------------   

Valider avec “Oui”.

Rajouter un utilisateur

Il faut se rendre sur phpldapadmin. Se logger avec le compte “cn=admin,dc=kathryl,dc=net”.

Dans la section “dc=kathryl,dc=net” puis “ou=people” et faire “Créer une nouvelle entrée ici” Choisir “Samba3 Account” (en bas a gauche).

Container DN: ou=people,dc=kathryl,dc=net 
First name: <Nom>
Last name: <Prenom>
Common Name: <Nom & Prenom>
User ID: <Login>
UID Number: <Chosir l'ID Unix si on doit le specifier, sinon laisser vide>
Samba SID: (apparement sans importance)
Password: <Password>
Vérifier Password: <Confirmation password>
LM Password: (ne pas modifier, lié au Password)
NT Password: (ne pas modifier, lié au Password)
Login shell: <Choisir le Shell désiré>
GID Number: <Choisir "Domain User">
Primary Group ID: <Choisir "Domain User">
Home directory: </home>

Modifier un utilisateur

Changer le pass Shell

# passwd account
Enter login(LDAP) password: 
New UNIX password: 
BAD PASSWORD: it does not contain enough DIFFERENT characters
Retype new UNIX password: 
LDAP password information changed for ccroix
passwd : le mot de passe a été mis à jour avec succès

Changer le pass Samba

Modifier le pass shell ne change pas le pass samba (et inversement) Il faut donc utiliser smbpasswd

#  smbpasswd account
New SMB password:
Retype new SMB password:
wiki/debian/ldap_samba_pam.txt · Dernière modification: Tuesday 02 December 2008 par kathryl
Flux RSS du Blog Driven by DokuWiki Gentoo Powered Valid XHTML1.0 Powered by Apache PHP Powered Coffee Powered