Serveur LDAP · 10 min read · Sep 09, 2025

Serveur de Répertoire Mandriva sur Debian Etch

Serveur de Répertoire Mandriva sur Debian Etch

Version 1.1
Auteur : Oliver Meyer

Ce document décrit comment configurer le Serveur de Répertoire Mandriva (MDS) sur Debian Etch. Le système résultant fournit un serveur de bureau complet pour les petites et moyennes entreprises - facile à administrer via la Console de Gestion Mandriva (MMC) basée sur le web.

Principales caractéristiques

  • Administration facile via MMC
  • Intégration OpenLDAP à l’échelle du système
  • Contrôleur de Domaine Principal (PDC) SAMBA
  • Serveur de messagerie Postfix avec Dovecot, Amavis, Spamassassin et ClamAV (POP3/IMAP/SSL/TLS/Quota)
  • Serveur DNS BIND
  • Serveur DHCP ISC
  • Proxy web Squid avec SquidGuard

Ce howto est un guide pratique sans aucune garantie - il ne couvre pas les bases théoriques. Il existe de nombreuses façons de configurer un tel système - c’est la méthode que j’ai choisie.

Préambule

Ce howto est assez complexe. Veuillez prendre votre temps, le lire attentivement et suivre les étapes minutieusement. La moindre variation pourrait affecter le bon fonctionnement de votre configuration.

1 Préparation

1.1 Système de base

Configurez un système Debian Etch standard et mettez-le à jour. J’ai utilisé la configuration suivante pour ce howto et la machine virtuelle jointe qui est disponible pour nos abonnés :

Nom d’hôte : server1.example.com
Domaine SAMBA : EXAMPLE
IP : 192.168.0.100
Passerelle : 192.168.0.2
Tous les mots de passe : howtoforge

1.2 Nom d’hôte

Éditez le fichier hosts - assignez le nom d’hôte à l’IP du serveur.

vi /etc/hosts

Il devrait ressembler à ceci :

127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Ensuite, insérez le nom d’hôte dans le fichier hostname …

echo server1.example.com > /etc/hostname

… et redémarrez le système.

reboot

Lorsque le système est de nouveau opérationnel, la sortie des deux commandes …

hostname

… et …

hostname -f

… devrait être :

server1.example.com

1.3 ACLs du système de fichiers

Pour que SAMBA puisse mapper les ACLs du système de fichiers entre le serveur Linux et les clients Windows, vous devez ajouter le support des ACL à le point de montage correspondant.

vi /etc/fstab

Ajoutez l’option “ acl “ au point de montage où les répertoires SAMBA seront stockés et où les utilisateurs SAMBA auront leurs répertoires personnels. Dans mon cas, c’est “ / “ - le contenu devrait ressembler à ceci :

# /etc/fstab: informations statiques sur le système de fichiers.
#
#                
proc            /proc           proc    defaults        0       0
/dev/sda1       /               ext3    defaults,acl,errors=remount-ro 0       1
/dev/sda5       none            swap    sw              0       0
/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Ensuite, remontez le point de montage pour que les changements prennent effet.

mount -o remount /

Si tout s’est bien passé, la commande …

mount -l

… devrait montrer l’option “ acl “ pour le point de montage correspondant :

/dev/sda1 on / type ext3 (rw,acl,errors=remount-ro)

2 Dépôts

2.1 MDS

Le dépôt MDS fournit les paquets liés à MDS ainsi que des paquets patchés pour bind9 & dhcp3.

vi /etc/apt/sources.list

Ajoutez les lignes suivantes au fichier.

# Dépôt MDS  
deb http://mds.mandriva.org/pub/mds/debian etch main

2.2 Debian Volatile

Le dépôt Debian Volatile fournit des paquets plus récents pour ClamAV & Spamassassin que le dépôt standard de Debian.

vi /etc/apt/sources.list

Ajoutez les lignes suivantes au fichier.

# Debian Volatile  
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free

2.3 Debian Backports

Le dépôt Debian Backports fournit des paquets plus récents pour dovecot.

vi /etc/apt/sources.list

Ajoutez les lignes suivantes au fichier.

# Debian Etch Backports  
deb http://www.backports.org/debian etch-backports main

Ensuite, rafraîchissez apt.

apt-get update

3 Paquets nécessaires

3.1 Installer

Installez les paquets nécessaires pour cette configuration.

apt-get install mmc-web-base mmc-web-mail mmc-web-network mmc-web-proxy mmc-web-samba mmc-agent python-mmc-plugins-tools python-mmc-base python-mmc-mail python-mmc-network python-mmc-proxy python-mmc-samba postfix postfix-ldap sasl2-bin libsasl2 libsasl2-modules amavisd-new libdbd-ldap-perl libnet-ph-perl libnet-snpp-perl libnet-telnet-perl lzop nomarch zoo clamav clamav-daemon gzip bzip2 unzip unrar-free unzoo arj spamassassin libnet-dns-perl razor pyzor dcc-client slapd ldap-utils libnss-ldap libpam-ldap dhcp3-server dhcp3-server-ldap bind9 samba smbclient smbldap-tools cupsys cupsys-client foomatic-db-engine foomatic-db foomatic-db-hpijs foomatic-db-gutenprint foomatic-filters foomatic-filters-ppds fontconfig hpijs-ppds linuxprinting.org-ppds

Les paquets dovecot actuels dans le dépôt standard de Debian ont un bug en conjonction avec LDAP - donc vous devez utiliser les paquets dovecot du dépôt Debian Backports.

apt-get install -t etch-backports dovecot-common dovecot-imapd dovecot-pop3d

Si vous souhaitez utiliser des imprimantes HP, il est recommandé d’installer quelques paquets supplémentaires.

apt-get install hplip libusb-dev python-dev python-reportlab libcupsys2-dev libjpeg62-dev libsnmp9-dev lsb-core

3.2 Configuration

Lors de l’installation des nouveaux paquets, vous serez invité à répondre à quelques questions - répondez comme suit.

3.2.1 LDAP

Entrez le mot de passe pour l’admin LDAP et confirmez-le. ( howtoforge)

3.2.2 Samba

Entrez un nom pour votre domaine. ( EXAMPLE)
Sélectionnez “ Non “ lorsque vous êtes interrogé si le smb.conf doit être modifié pour utiliser les paramètres WINS de DHCP.

3.2.3 Postfix

Sélectionnez “ Site Internet “ comme type général de configuration.
Entrez “ server1.example.com “ comme nom de messagerie.

3.2.4 Libnss-LDAP

Entrez “ ldap://127.0.0.1/ “ comme URI du serveur LDAP.
Entrez “ dc=example,dc=com “ comme nom pour la base de recherche.
Sélectionnez la version LDAP. ( 3)
Entrez “ cn=admin,dc=example,dc=com “ comme compte LDAP pour root.
Entrez le mot de passe pour l’admin LDAP. ( howtoforge)

3.2.5 Libpam-LDAP

Sélectionnez “ Oui “ lorsque vous êtes interrogé si le root local doit être l’admin de la base de données.
Sélectionnez “ Non “ lorsque vous êtes interrogé si la base de données LDAP nécessite une connexion.
Entrez “ cn=admin,dc=example,dc=com “ comme compte LDAP pour root.
Entrez le mot de passe pour l’admin LDAP. ( howtoforge)

4 Configuration LDAP

4.1 Fichiers de schéma

Tout d’abord, copiez les fichiers de schéma pour MMC, mail, SAMBA, imprimante, DNS et DHCP dans le répertoire de schéma LDAP.

cp /usr/share/doc/python-mmc-base/contrib/ldap/mmc.schema /etc/ldap/schema/  
cp /usr/share/doc/python-mmc-base/contrib/ldap/mail.schema /etc/ldap/schema/  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/samba.schema.gz > /etc/ldap/schema/samba.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/printer.schema.gz > /etc/ldap/schema/printer.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/dnszone.schema.gz > /etc/ldap/schema/dnszone.schema  
zcat /usr/share/doc/python-mmc-base/contrib/ldap/dhcp.schema.gz > /etc/ldap/schema/dhcp.schema

Ensuite, incluez les fichiers de schéma dans la configuration LDAP

vi /etc/ldap/slapd.conf

Incluez les fichiers de schéma après le schéma inetorgperson.

include /etc/ldap/schema/mmc.schema  
include /etc/ldap/schema/samba.schema  
include /etc/ldap/schema/printer.schema  
include /etc/ldap/schema/mail.schema  
include /etc/ldap/schema/dnszone.schema  
include /etc/ldap/schema/dhcp.schema

Activez la vérification de schéma (en dessous des fichiers de schéma inclus).

schemacheck on

4.2 Configuration de base

À cette étape, vous aurez besoin du mot de passe admin LDAP (que vous avez défini lors de l’installation du paquet à l’étape 3) sous forme cryptée (SSHA) - donc cryptons-le.

slappasswd -s %ldap_admin_password%

Par exemple :

slappasswd -s howtoforge

La sortie devrait ressembler à ceci :

{SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

Notez-le et continuez - ouvrez le fichier de configuration du serveur LDAP.

vi /etc/ldap/slapd.conf

Recherchez la ligne commentée avec l’entrée pour l’admin LDAP (rootdn) …

# rootdn "cn=admin,dc=example,dc=com"

… et commentez-la. Après cela, ajoutez une nouvelle ligne juste en dessous. Vous devez entrer le mot de passe admin LDAP crypté que vous avez généré au début de cette étape.

rootpw %encrypted_ldap_admin_password%

Par exemple :

rootpw {SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

Ensuite, nous devons modifier les options d’indexation pour la base de données. Recherchez l’entrée suivante :

# Options d'indexation pour la base de données #1

Supprimez la ligne ci-dessous …

index objectClass eq

… et insérez les lignes suivantes :

index objectClass,uidNumber,gidNumber eq  
index cn,sn,uid,displayName pres,sub,eq  
index memberUid,mail,givenname eq,subinitial  
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq  
index zoneName,relativeDomainName eq  
index dhcpHWAddress,dhcpClassData eq

Maintenant, ajoutez SAMBA à la liste d’accès pour la base de données. Recherchez la ligne suivante :

access to attrs=userPassword,shadowLastChange

Changez-la pour qu’elle ressemble à ceci :

access to attrs=userPassword,sambaLMPassword,sambaNTPassword

À ce stade, le fichier de configuration du serveur LDAP devrait ressembler à ceci :

# Ceci est le fichier de configuration principal de slapd. Voir slapd.conf(5) pour plus
# d'infos sur les options de configuration.
#######################################################################
# Directives globales :
# Fonctionnalités à autoriser
#allow bind_v2
# Définitions de schéma et d'objet
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/mmc.schema
include         /etc/ldap/schema/samba.schema
include         /etc/ldap/schema/printer.schema
include         /etc/ldap/schema/mail.schema
include         /etc/ldap/schema/dnszone.schema
include         /etc/ldap/schema/dhcp.schema

schemacheck     on

# Où le fichier pid est placé. Le script init.d
# ne s'arrêtera pas si vous changez cela.
pidfile         /var/run/slapd/slapd.pid

# Liste des arguments qui ont été passés au serveur
argsfile        /var/run/slapd/slapd.args

# Lisez slapd.conf(5) pour les valeurs possibles
loglevel        0

# Où les modules chargés dynamiquement sont stockés
modulepath      /usr/lib/ldap
moduleload      back_bdb

# Le nombre maximum d'entrées qui est retourné pour une opération de recherche
sizelimit 500

# Le paramètre tool-threads définit la quantité réelle de CPU utilisée
# pour l'indexation.
tool-threads 1

#######################################################################
# Directives spécifiques au Backend pour bdb :
# Les directives spécifiques au backend s'appliquent à ce backend jusqu'à ce qu'une autre
# directive 'backend' se produise
backend         bdb
checkpoint 512 30

#######################################################################
# Directives spécifiques au Backend pour 'other' :
# Les directives spécifiques au backend s'appliquent à ce backend jusqu'à ce qu'une autre
# directive 'backend' se produise
#backend                

#######################################################################
# Directives spécifiques pour la base de données #1, de type bdb :
# Les directives spécifiques à cette base de données s'appliquent à cette base de données jusqu'à ce qu'une autre
# directive 'database' se produise
database        bdb

# La base de votre annuaire dans la base de données #1
suffix          "dc=example,dc=com"

# directive rootdn pour spécifier un superutilisateur sur la base de données. Ceci est nécessaire
# pour syncrepl.
rootdn          "cn=admin,dc=example,dc=com"
rootpw          {SSHA}kPd9OeiwGx4lyZUiQ2NFmzXV0JWyLV9A

# Où le fichier de base de données est physiquement stocké pour la base de données #1
directory       "/var/lib/ldap"

# Pour le paquet Debian, nous utilisons 2 Mo par défaut mais assurez-vous de mettre à jour cette
# valeur si vous avez beaucoup de RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge a signalé qu'il devait définir cette valeur incroyablement élevée
# pour faire fonctionner slapd. Voir http://bugs.debian.org/303057
# pour plus d'informations.
# Nombre d'objets qui peuvent être verrouillés en même temps.
dbconfig set_lk_max_objects 1500

# Nombre de verrous (demandés et accordés)
dbconfig set_lk_max_locks 1500

# Nombre de locataires
dbconfig set_lk_max_lockers 1500

# Options d'indexation pour la base de données #1
index      objectClass,uidNumber,gidNumber                  eq
index      cn,sn,uid,displayName                            pres,sub,eq
index      memberUid,mail,givenname                         eq,subinitial
index      sambaSID,sambaPrimaryGroupSID,sambaDomainName    eq
index      zoneName,relativeDomainName                      eq 
index      dhcpHWAddress,dhcpClassData                      eq

# Enregistrez le temps que l'entrée est modifiée, pour la base de données #1
lastmod         on

# Où stocker les journaux de réplique pour la base de données #1
# replogfile    /var/lib/ldap/replog
# Le mot de passe utilisateur par défaut peut être changé
# par l'entrée qui le possède si elle est authentifiée.
# Les autres ne devraient pas être en mesure de le voir, sauf le
# entrée admin ci-dessous
# Ces lignes d'accès s'appliquent uniquement à la base de données #1
access to attrs=userPassword,sambaLMPassword,sambaNTPassword
        by dn="cn=admin,dc=example,dc=com" write
        by anonymous auth
        by self write
        by * none

# Assurez-vous d'un accès en lecture à la base pour des choses comme
# supportedSASLMechanisms.  Sans cela, vous pourriez
# avoir des problèmes avec SASL ne sachant pas quels
# mécanismes sont disponibles et ainsi de suite.
# Notez que cela est également couvert par l'ACL 'access to *'
# ci-dessous mais si vous changez cela comme les gens
# ont tendance à le faire, vous aurez toujours besoin de cela si vous
# voulez que SASL (et éventuellement d'autres choses) fonctionnent
# correctement.
access to dn.base="" by * read

# L'admin dn a un accès complet en écriture, tout le monde
# peut lire tout.
access to *
        by dn="cn=admin,dc=example,dc=com" write
        by * read

# Pour le support de Roaming Netscape, chaque utilisateur obtient un
# profil itinérant pour lequel il a un accès en écriture à
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=example,dc=com" write
#        by dnattr=owner write

#######################################################################
# Directives spécifiques pour la base de données #2, de type 'other' (peut aussi être bdb) :
# Les directives spécifiques à cette base de données s'appliquent à cette base de données jusqu'à ce qu'une autre
# directive 'database' se produise
#database        

# La base de votre annuaire pour la base de données #2
#suffix         "dc=debian,dc=org"

De plus, vous devez éditer le fichier de configuration LDAP.

vi /etc/ldap/ldap.conf

Ajoutez les lignes suivantes : host 127.0.0.1
base dc=example,dc=com

Ensuite, redémarrez le serveur LDAP.

/etc/init.d/slapd restart
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.