OpenLDAP-PDC : Différence entre versions

De DiouxX's Wiki
Aller à : navigation, rechercher
 
Ligne 107 : Ligne 107 :
  
 
### A changer === >
 
### A changer === >
ldap suffix = dc=admin,dc=pass,dc=be
+
ldap suffix = dc=domain,dc=be
 
ldap group suffix = ou=Groups
 
ldap group suffix = ou=Groups
 
ldap user suffix = ou=Users
 
ldap user suffix = ou=Users
Ligne 213 : Ligne 213 :
 
<br>
 
<br>
 
<pre>
 
<pre>
« Setting stored password for "cn=admin,dc=pass,dc=be" in secrets.tdb »
+
« Setting stored password for "dc=domain,dc=be" in secrets.tdb »
 
</pre>
 
</pre>
 
<br>
 
<br>
Ligne 265 : Ligne 265 :
 
ldapTLS="0"
 
ldapTLS="0"
 
verify="require"
 
verify="require"
suffix="dc=admin,dc=pass,dc=be"
+
suffix="dc=domain,dc=be"
 
usersdn="ou=Users,${suffix}"
 
usersdn="ou=Users,${suffix}"
 
computersdn="ou=Machines,${suffix}"
 
computersdn="ou=Machines,${suffix}"
Ligne 307 : Ligne 307 :
 
(using builtin directory structure)
 
(using builtin directory structure)
  
entry dc=admin,dc=pass,dc=be already exist.  
+
entry dc=domain,dc=be already exist.  
entry ou=Users,dc=admin,dc=pass,dc=be already exist.  
+
entry ou=Users,dc=domain,dc=be already exist.  
entry ou=Groups,dc=admin,dc=pass,dc=be already exist.  
+
entry ou=Groups,dc=domain,dc=be already exist.  
entry ou=Machines,dc=admin,dc=pass,dc=be already exist.  
+
entry ou=Machines,dc=domain,dc=be already exist.  
entry ou=Idmap,dc=admin,dc=pass,dc=be already exist.  
+
entry ou=Idmap,dc=domain,dc=be already exist.  
entry uid=root,ou=Users,dc=admin,dc=pass,dc=be already exist.  
+
entry uid=root,ou=Users,dc=domain,dc=be already exist.  
entry uid=nobody,ou=Users,dc=admin,dc=pass,dc=be already exist.  
+
entry uid=nobody,ou=Users,dc=domain,dc=be already exist.  
entry cn=Domain Admins,ou=Groups,dc=admin,dc=pass,dc=be already exist.  
+
entry cn=Domain Admins,ou=Groups,dc=domain,dc=be already exist.  
entry cn=Domain Users,ou=Groups,dc=admin,dc=pass,dc=be already exist.  
+
entry cn=Domain Users,ou=Groups,dc=domain,dc=be already exist.  
entry cn=Domain Guests,ou=Groups,dc=admin,dc=pass,dc=be already exist.  
+
entry cn=Domain Guests,ou=Groups,dc=domain,dc=be already exist.  
entry cn=Domain Computers,ou=Groups,dc=admin,dc=pass,dc=be already exist.  
+
entry cn=Domain Computers,ou=Groups,dc=domain,dc=be already exist.  
entry cn=Administrators,ou=Groups,dc=admin,dc=pass,dc=be already exist.  
+
entry cn=Administrators,ou=Groups,dc=domain,dc=be already exist.  
entry cn=Account Operators,ou=Groups,dc=admin,dc=pass,dc=be already exist.  
+
entry cn=Account Operators,ou=Groups,dc=domain,dc=be already exist.  
entry cn=Print Operators,ou=Groups,dc=admin,dc=pass,dc=be already exist.  
+
entry cn=Print Operators,ou=Groups,dc=domain,dc=be already exist.  
entry cn=Backup Operators,ou=Groups,dc=admin,dc=pass,dc=be already exist.  
+
entry cn=Backup Operators,ou=Groups,dc=domain,dc=be already exist.  
entry cn=Replicators,ou=Groups,dc=admin,dc=pass,dc=be already exist.  
+
entry cn=Replicators,ou=Groups,dc=domain,dc=be already exist.  
entry sambaDomainName=LDAP,dc=admin,dc=pass,dc=be already exist. Updating it...
+
entry sambaDomainName=LDAP,dc=domain,dc=be already exist. Updating it...
  
 
Please provide a password for the domain root:  
 
Please provide a password for the domain root:  

Version actuelle datée du 23 février 2015 à 16:48

Cette page permet d'installer et configurer un serveur OpenLDAP et Samba afin d'authentifier des Machines Windows, Linux et Mac

OpenLDAP

Installation

Pour l'installation, se référencer à la page consacré à OpenLDAP

Schema samba

Par la suite, nous aurons besoins du schéma Samba. Par défaut, ce schéma n'est pas compris dans LDAP.

Nous allons devoir extraire ce schéma à partir des sources de samba. Pour ce faire, nous allons installer les outils et les sources de samba

Konsole.png
[root@ordi ~]# apt-get install dpkg-dev
[root@ordi ~]# apt-get source samba
[root@ordi ~]# cp .samba-X.X.X/examples/LDAP/samba.schema .


On va créer un fichier temporaire schema_convert.conf qui va nous servir pour la conversion

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


On crée un dossier temporaire qui va contenir le résultat de la conversion du fichier schema_convert.conf crée ci-dessus

Konsole.png
[user@ordi ~]$ mkdir ldif_result
[user@ordi ~]$ slaptest -f schema_convert.conf -F ldif_result


Il nous reste plus qu'a extraire simplement le contenu dont nous avons besoin :

cat ldif_result/cn=config/cn=schema/cn=*samba.ldif | \
egrep -v structuralObjectClass\|entryUUID\|creatorsName  | \
egrep -v createTimestamp\|entryCSN\|modifiersName\|modifyTimestamp | \
sed 's/dn: cn={.}samba/dn: cn=samba,cn=schema,cn=config/g' | \
sed 's/{.}samba/samba/' > samba.ldif


On peux maintenant copier le fichier samba.ldif dans le répertoire de notre serveur LDAP et rajouter le schéma samba à notre config

Konsole.png
[root@ordi ~]# cp samba.ldif /etc/ldap/schema
[root@ordi ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/samba.ldif


Lien vers le fichier samba.ldif

Samba

Installation


Konsole.png
[root@ordi ~]# apt-get install samba smbclient smbfs smbldap-tools


Lors de l’installation de samba un certain nombre de questions seront posées :

Nom du domaine ou groupe de travail : ADMIN  

Voulez vous chiffrer les mots de passe : Oui  

Modifier smb.conf pour utiliser les paramètres WINS fournis par DHCP : Non  

Comment voulez-vous lancer Samba : Démon  

Faut-il créer une base de données /var/lib/samba/passdb.tdb : Non  


Une fois l’installation du serveur SAMBA effectuée, arrêtez le service samba en faisant :

Konsole.png
[root@ordi ~]# /etc/init.d/samba stop


Configuration smb.conf

Avant toute chose faire une copie de sauvegarde du fichier d’origine :

Konsole.png
[root@ordi ~]# cp /etc/samba/smb.conf /etc/samba/smb.conf.original


Une fois la copie effectuée, éditez le fichier smb.conf . Il doit ressembler à ceci :


[global]
##IDENTIFICATION
client plaintext auth = yes
client lanman auth = yes
client ntlmv2 auth = yes
lanman auth = yes
ntlm auth = yes
security = user
#debug level = 4

##LE RESTE
workgroup = LDAP
### A changer, mettre le meme nom que le nom de votre machine === >
netbios name = openldap01
server string = Samba-LDAP_PDC_Server
domain master = Yes
local master = Yes
domain logons = Yes
os level = 40
#passwd program = /usr/sbin/smbldap-passwd ?u %u
ldap ssl = off
ldap passwd sync = Yes
passdb backend = ldapsam:ldap://127.0.0.1/

### A changer === >
ldap admin dn = cn=admin,dc=be

### A changer === >
ldap suffix = dc=domain,dc=be
ldap group suffix = ou=Groups
ldap user suffix = ou=Users
ldap machine suffix = ou=Machines
add user script = /usr/sbin/smbldap-useradd -m "%u"
ldap delete dn = Yes
delete user script = /usr/sbin/smbldap-userdel "%u"

#LA LIGNE CI DESSOUS RETOURNAIT DES UTILISATEUR INTROUVABLE SOUS XP
#add machine script = /usr/sbin/smbldap-useradd -w "%u"
#REMPLACEE PAR CELLE CI
add machine script = /usr/sbin/smbldap-useradd -w "%m"

add group script = /usr/sbin/smbldap-groupadd -p "%g"
#delete group script = /usr/sbin/smbldap-groupdel "%g"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
logon path = \\%L\profile\%U
logon drive = Z:
logon home = \\%L\%U

###Lancer un script par utilisateur (%U) ou par machine (%M)
logon script = %U.bat
#logon script = %m.bat
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
case sensitive = No
default case = lower
preserve case = yes
short preserve case = Yes
#character set = iso8859-1
#domain admin group = @admin
dns proxy = No

###Serveur Wins indispensable
#wins support = Yes
# Un paramètre historique dont d'anciennes versions de Windows ont besoin
wins proxy = Yes
# Si VOTRE serveur a l'adresse 192.168.100.34
wins server = 192.168.100.34
# S'il fallait en plus passer par un serveur DNS
;dns proxy = Yes

### A changer si vous n'utilisez pas ce réseau ===>
hosts allow = 192.168.100.0/24 192.168.1.0/24 127.0.0.1
winbind use default domain = Yes
nt acl support = Yes
msdfs root = Yes
hide files = /desktop.ini/ntuser.ini/NTUSER.*/
### FIN DE LA PARTIE GLOBALE #####

#### LES PARTAGES #####
[netlogon]
path = /home/netlogon
guest ok = Yes
locking = No
writeable = No

########PROFILE ==> permet de stocker les profils itinérants de Windows
[profile]
path = /home/export/profile
browseable = No
writeable = Yes
profile acls = yes
create mask = 0700
directory mask = 0700

########HOMES ==>partage les répertoires personnel Linux et Windows
[homes]
comment = Repertoire Personnel
browseable = No
writeable = Yes

########PARTAGE ==> permet le partage entre les utilisateurs du domaine
[partage]
comment = Repertoire commun
browseable = Yes
writeable = Yes
public = Yes
path = /home/partage
valid users = "@Domain Users"
admin users = @admin


On crée ces répertoires que l'on a mentionnés dans la section PARTAGE du fichier smb.conf. Il est important, par la suite, de donner les droits en écriture dessus à l'aide de la commande chmod.

Konsole.png
[root@ordi ~]# mkdir -p netlogon partage export/profile
[root@ordi ~]# chmod -R 777 export && chmod 777 partage


Après la création des répertoires ne pas oublier de vérifier la configuration du fichier smb.conf de samba en faisant :

Konsole.png
[user@ordi ~]$ testparm


Cette commande doit vous renvoyer :

Loaded services file OK. Server role : ROLE_DOMAIN_PDC


Mot de passe LDAP vers SAMBA

Afin d’administrer correctement le serveur LDAP samba aura besoin du mot de passe administrateur de celui-ci... Pour cela tapez la commande suivante et donnez le mot de passe administrateur du ldap.

Konsole.png
[root@ordi ~]# smbpasswd -w *****


samba doit vous répondre :

« Setting stored password for "dc=domain,dc=be" in secrets.tdb »


Configuration des outils smbldap-tools

smbldap-tools est un ensemble de script permettant de créer/gérer les utilisateurs POSIX-Ldap-Samba de manière automatique et centralisée. La configuration de celui-ci se fait par l’intermédiaire de deux fichiers qui ne sont pas encore présent sur notre système :
/etc/smbldap-tools/smbldap_bind.conf et /etc/smbldap-tools/smbldap.conf
Il faudra donc les créer manuellement.

Fichier smbldap_bind.conf
masterDN="cn=admin,dc=be"
masterPw="password"
slaveDN="cn=admin,dc=be"
slavePw="password" 


BlocNotes.png
À noter !
Remplacez password par le mot de passe admin, toujours entre les guillemets


Comme vous pouvez le constater le mot de passe administrateur du LDAP est en clair, il est donc important de lui changer les droits d’accès :

Konsole.png
[root@ordi ~]# chmod 600 /etc/smbldap-tools/smbldap_bind.conf


Fichier smbldap.conf

Le fichier smbldap.conf, contient un peu plus de paramètres et a aussi besoin du SID du domaine. Pour cela faire un :

Konsole.png
[user@ordi ~]$ net getlocalsid


vous devez obtenir :

SID for domain LDAP is: S-1-5-21-738282185-3837675623-175508106


Attention si vous avez des erreurs TLS... cela veut dire que vous avez oublié un paramètre dans votre fichier smb.conf (ldap ssl = off).

BlocNotes.png
À noter !
Le SID sera différent mais sera toujours de la même forme que celui indiqué ci-dessus


Une fois le SID en poche il ne reste plus qu’a faire le fichier de configuration comme ci-dessous :

SID="S-1-5-21-2539271658-2148906613-1388654742"
masterLDAP="127.0.0.1"
masterPort="389"
slaveLDAP="127.0.0.1"
slavePort="389"
ldapTLS="0"
verify="require"
suffix="dc=domain,dc=be"
usersdn="ou=Users,${suffix}"
computersdn="ou=Machines,${suffix}"
groupsdn="ou=Groups,${suffix}"
idmapdn="ou=Idmap,${suffix}"
# La ligne ci-dessous est commentée pour éviter une erreur lors de
# l'execution de la commande smbldap-populate.
# sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
#sambaUnixIdPooldn="sambaDomainName=dev,${suffix}"
scope="sub"
hash_encrypt="SSHA"
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"
#mk_ntpasswd="/usr/local/sbin/mkntpwd" 


smbldap-populate

Pour créer l'arborescence de l'annuaire LDAP, on pourrait utiliser des fichiers texte au format .ldif mais cela peut devenir fastidieux. En exécutant la commande smbldap-populate, celle-ci va créer automatiquement une architecture de base de l'annuaire comme:

  • Les différentes OU (Unité Organisationelle) qui contiendront les machines, utilisateurs et Groupes.
  • Des comptes , crées par défaut, nécessaires pour la gestion d'un domaine tel que Print Operators, Backup Operators, etc…
  • Deux UID : root et nobody qui seront dans OU = Users indispensables pour accéder à l'annuaire.
  • Plusieurs CN (Common Name): nom d'utilisateur ou de groupe.


Populating LDAP directory for domain testldap  (S-1-5-21-2331648707-682641928-4289532602)
(using builtin directory structure)

entry dc=domain,dc=be already exist. 
entry ou=Users,dc=domain,dc=be already exist. 
entry ou=Groups,dc=domain,dc=be already exist. 
entry ou=Machines,dc=domain,dc=be already exist. 
entry ou=Idmap,dc=domain,dc=be already exist. 
entry uid=root,ou=Users,dc=domain,dc=be already exist. 
entry uid=nobody,ou=Users,dc=domain,dc=be already exist. 
entry cn=Domain Admins,ou=Groups,dc=domain,dc=be already exist. 
entry cn=Domain Users,ou=Groups,dc=domain,dc=be already exist. 
entry cn=Domain Guests,ou=Groups,dc=domain,dc=be already exist. 
entry cn=Domain Computers,ou=Groups,dc=domain,dc=be already exist. 
entry cn=Administrators,ou=Groups,dc=domain,dc=be already exist. 
entry cn=Account Operators,ou=Groups,dc=domain,dc=be already exist. 
entry cn=Print Operators,ou=Groups,dc=domain,dc=be already exist. 
entry cn=Backup Operators,ou=Groups,dc=domain,dc=be already exist. 
entry cn=Replicators,ou=Groups,dc=domain,dc=be already exist. 
entry sambaDomainName=LDAP,dc=domain,dc=be already exist. Updating it...

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


Authentification via l'annuaire LDAP

Nous allons maintenant installer et configurer la librairie qui permet d’utiliser l’annuaire (libnss-ldap) et la librairie qui permet de s’authentifier sous unix (libpam-ldap)

Konsole.png
[root@ordi ~]# apt-get install libnss-ldap libpam-ldap


Lors de l’installation un certain nombre de question seront posées :

Identifiant uniforme de ressource (« URI ») du serveur LDAP : ldap://127.0.0.1 
Nom distinctif (DN) de la base de recherche : dc=dev,dc=net 
Version de LDAP utiliser : 3 
La base LDAP demande-t-elle une identification : non 
Privilèges LDAP spécifiques pour le superutilisateur : oui 
Rendre le fichier de configuration lisible et modifiable uniquement par son propriétaire : non 
Compte LDAP pour le superutilisateur (« root ») : cn=admin,dc=dev,dc=net 
Mot de passe du compte du superutilisateur LDAP : **** 
Version de LDAP utiliser : 3 
Donner les privilèges de super-utilisateur local au compte administrateur 
LDAP ? oui 
Algorithme de chiffrement a utiliser localement pour les mots de passe : chiffré


Maintenant que les librairies sont configurées, on doit activer la recherche LDAP en modifiant le fichier de configuration « /etc/nsswitch.conf ». Pour cela il faut simplement ajouter ldap à passwd,group et shadow

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


L'installation de samba et OpenLdap est alors terminée.

Redémarrage des services

Konsole.png
[root@ordi ~]# /etc/init.d/samba restart && /etc/init.d/nmdd restart


Pour un bon fonctionnement de Samba, vérifier que les 2 démons nmdd et smbd tournent.

Stopping Samba daemons: nmbd smbd.
Starting Samba daemons: nmbd smbd.


Konsole.png
[root@ordi ~]# /etc/init.d/slapd restart


Stopping OpenLDAP: slapd.
Starting OpenLDAP: slapd.


NB: Bien que nous avions déjà démarré ces services, nous les relançons pour s'assurer tout bon fonctionnement

Vérification des ports en écoute

Konsole.png
[root@ordi ~]# netstat -ano


tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 192.168.100.34:389      192.168.1.71:48117      ESTABLISHED keepalive (2156,13/0/0)
tcp        0      0 192.168.100.34:22       192.168.1.71:52140      ESTABLISHED keepalive (5990,22/0/0)
tcp        0      0 127.0.0.1:49875         127.0.0.1:389           ESTABLISHED off (0.00/0/0)
tcp        0      0 127.0.0.1:389           127.0.0.1:49873         ESTABLISHED keepalive (5990,22/0/0)
tcp        0      0 192.168.100.34:445      192.168.1.245:50245     ESTABLISHED keepalive (5990,22/0/0)
tcp        0      0 127.0.0.1:389           127.0.0.1:49869         ESTABLISHED keepalive (5990,22/0/0)
tcp        0      0 127.0.0.1:389           127.0.0.1:49755         ESTABLISHED keepalive (1271,33/0/0)
tcp        0      0 127.0.0.1:49873         127.0.0.1:389           ESTABLISHED off (0.00/0/0)
tcp        1      0 127.0.0.1:49610         127.0.0.1:389           CLOSE_WAIT  off (0.00/0/0)
tcp        0      0 127.0.0.1:389           127.0.0.1:49875         ESTABLISHED keepalive (6055,76/0/0)
tcp        0      0 127.0.0.1:49869         127.0.0.1:389           ESTABLISHED off (0.00/0/0)
tcp        0      0 192.168.100.34:139      192.168.100.171:1026    ESTABLISHED keepalive (6039,38/0/0)
tcp        0      0 127.0.0.1:49755         127.0.0.1:389           ESTABLISHED off (0.00/0/0)
tcp        0      0 192.168.100.34:22       192.168.1.71:52370      ESTABLISHED keepalive (4810,50/0/0)
tcp6       0      0 :::22                   :::*                    LISTEN      off (0.00/0/0)
tcp6       0      0 :::389                  :::*                    LISTEN      off (0.00/0/0)


  • "389" = service OpenLdap.
  • "139" = service de session NetBios pour l'echange de message en mode connecté.
  • "445" = service CIFS pour la résolution de noms basés sur DNS dynamique et non NetBios


Konsole.png
[root@ordi ~]# netstat -ano


udp        0      0 192.168.100.255:137     0.0.0.0:*                           off (0.00/0/0)
udp        0      0 192.168.100.34:137      0.0.0.0:*                           off (0.00/0/0)
udp        0      0 0.0.0.0:137             0.0.0.0:*                           off (0.00/0/0)
udp        0      0 192.168.100.255:138     0.0.0.0:*                           off (0.00/0/0)
udp        0      0 192.168.100.34:138      0.0.0.0:*                           off (0.00/0/0)
udp        0      0 0.0.0.0:138             0.0.0.0:*                           off (0.00/0/0)


  • "137" = service nmbd (Samba) pour la résolution de nom NetBios.
  • "138" = service smbd (Samba) pour le partage de fichiers et imprimantes.

Ajout dans l'annuaire LDAP

Ajouter utilisateur


Konsole.png
[user@ordi ~]$ smbldap-useradd -am user


  • -a = ajoute un utilisateur windows spécifiquement.
  • -m = crée un répertoire pour l'utilisateur user dans /home.

Ajouter mot de passe


Konsole.png
[user@ordi ~]$ smbldap-passwd user


On demande d'ajouter un mot de passe pour l'utilisateur user et une invite nous demande de saisir 2 fois le mot de passe.

Ajouter ordinateur


Konsole.png
[user@ordi ~]$ smbldap-useradd -w ordinateur$


  • -w = ajoute le nom de machine windows (=nom Netbios).
  • $ = indique que c'est une machine windows. Même si on oublie d'ajouter ce caractère manuellement, celui-ci sera ajouté automatiquement grâce à -w.

Listing


Konsole.png
[user@ordi ~]$ getent passwd
[user@ordi ~]$ getent group


Ces commandes permet de lister les différents utilisateurs et machines présents dans l'annuaire. Donc, ces derniers, devront impérativement être présents pour pouvoir être authentifiés et ce par LDAP.