OpenLDAP-PDC : Différence entre versions
| Ligne 107 : | Ligne 107 : | ||
### A changer === > | ### A changer === > | ||
| − | ldap suffix = dc= | + | 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 " | + | « 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= | + | 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= | + | entry dc=domain,dc=be already exist. |
| − | entry ou=Users,dc= | + | entry ou=Users,dc=domain,dc=be already exist. |
| − | entry ou=Groups,dc= | + | entry ou=Groups,dc=domain,dc=be already exist. |
| − | entry ou=Machines,dc= | + | entry ou=Machines,dc=domain,dc=be already exist. |
| − | entry ou=Idmap,dc= | + | entry ou=Idmap,dc=domain,dc=be already exist. |
| − | entry uid=root,ou=Users,dc= | + | entry uid=root,ou=Users,dc=domain,dc=be already exist. |
| − | entry uid=nobody,ou=Users,dc= | + | entry uid=nobody,ou=Users,dc=domain,dc=be already exist. |
| − | entry cn=Domain Admins,ou=Groups,dc= | + | entry cn=Domain Admins,ou=Groups,dc=domain,dc=be already exist. |
| − | entry cn=Domain Users,ou=Groups,dc= | + | entry cn=Domain Users,ou=Groups,dc=domain,dc=be already exist. |
| − | entry cn=Domain Guests,ou=Groups,dc= | + | entry cn=Domain Guests,ou=Groups,dc=domain,dc=be already exist. |
| − | entry cn=Domain Computers,ou=Groups,dc= | + | entry cn=Domain Computers,ou=Groups,dc=domain,dc=be already exist. |
| − | entry cn=Administrators,ou=Groups,dc= | + | entry cn=Administrators,ou=Groups,dc=domain,dc=be already exist. |
| − | entry cn=Account Operators,ou=Groups,dc= | + | entry cn=Account Operators,ou=Groups,dc=domain,dc=be already exist. |
| − | entry cn=Print Operators,ou=Groups,dc= | + | entry cn=Print Operators,ou=Groups,dc=domain,dc=be already exist. |
| − | entry cn=Backup Operators,ou=Groups,dc= | + | entry cn=Backup Operators,ou=Groups,dc=domain,dc=be already exist. |
| − | entry cn=Replicators,ou=Groups,dc= | + | entry cn=Replicators,ou=Groups,dc=domain,dc=be already exist. |
| − | entry sambaDomainName=LDAP,dc= | + | 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
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
[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
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
[root@ordi ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/samba.ldif
Lien vers le fichier samba.ldif
Samba
Installation
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 :
Configuration smb.conf
Avant toute chose faire une copie de sauvegarde du fichier d’origine :
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.
[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 :
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.
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"
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 :
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 :
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).
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)
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
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.
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
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
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
- -a = ajoute un utilisateur windows spécifiquement.
- -m = crée un répertoire pour l'utilisateur user dans /home.
Ajouter mot de passe
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
- -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
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.
