Installation serveur Ldap et outil d’administration gosa
Aujourd’hui au menu je vous propose la mise en place d’un serveur LDAP sur un environnement linux résultat de mes maigres cogitations de la semaine….
Pour information, je dispose pour les tests d’un environement composés de deux machines:
− la machine A jouera le rôle de serveur LDAP et de frontal pour l’outil d’administration Gosa
− la machine B jouera le rôle de client LDAP
Dans les exemples de configuration j’utiliserai le domain ipadsl.com. Les distributions utilisées sont des RHEL5 et donc les utilisateurs de fedora retrouveront naturellement leur petit. Pour ceux qui préfèrent les distro ubuntu et debian, la configuration requise doit être à peu près la même que sous RHEL.
COTE SERVEUR
Installation des outils
Connecter la plateforme avec un repository puis intaller les packages openldap, openldap-servers, openldap-clients, syslog (optionnel c’est uniquement pour les log système).
yum install openldapopenldap-serversopenldap-clientssyslog
1 - Configuration du serveur LDAP
configuration du compte root du serveur ldap
commencer par la creation d’un mot de passe pour le manager du serveur ldap à l’aide de la commande suivante:
slappasswd -s ipadsl;
configuration de openldap
l’ensemble des information concernant la configuration du serveur se trouve dans le fichier slapd.conf situé sous /etc/openldap
modifier les mots de passe root du serveur ldap en éditant le fichier et profiter en pour ajouter quelques droits sur votre arbre histoire de sécuriser le tout.
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
# Directives needed to implement policy:
# access to dn.base=”" by * read
# access to dn.base=”cn=Subschema” by * read
# access to *
# by self write
# by users read
# by anonymous auth
#
# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn. (e.g., “access to * by * read”)
#
# rootdn can always read and write EVERYTHING!
#########################
# ldbm and/or bdb database definitions
#########################
database bdb
# Ici je déclare mon domain ipadsl.com ainsi que le nom de l’administrateur de ce domaine ici Manager.
suffix “dc=ipadsl,dc=com”
rootdn “cn=Manager,dc=ipadsl,dc=com”
# Cleartext passwords, especially for the rootdn, should
# be avoided. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
# rootpw secret
# rootpw {crypt}ijFYNcSNctBYg
# la directive rootpw permet de configurer le mot de passe de l’utilisateur Manager. Il faut y placer le résultat de la commande ci
# dessus.
rootpw {SSHA}hYHawBUDhUtIcmpcesSzn0m0glrLi96t
access to attrs=userPassword by dn=”cn=manager,dc=ipadsl,dc=com” write
by dn=”cn=proxyuser,dc=ipadsl,dc=com” read
by self write
by anonymous auth
by * none
#protection des attributs uid et gid pour eviter le vol d’identité, seul le manager ades droit write. L’utilsateur qui sera utilisé pour faire les interrogations LDAP (proxyuser) depuis les clients aura uniquement les accès read.
access to attrs=uidNumber,gidNumber
by dn=”cn=manager,dc=ipadsl,dc=com” write
by dn=”cn=proxyuser,dc=ipadsl,dc=com” read
by * read
# full access for remaining fields
access to *
by dn=”cn=manager,dc=ipadsl,dc=com” write
by self write
by * read
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /var/lib/ldap
# Indices to maintain for this database
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
# Replicas of this database
#replogfile /var/lib/ldap/openldap-master-replog
#replica host=ldap-1.example.com:389 starttls=critical
# bindmethod=sasl saslmech=GSSAPI
# authcId=host/ldap-master.example.com@EXAMPLE.COM
Une fois ce fichier modifié, il vous suffit de redémarrer le service ldap (yum ldap restart) pour avoir un serveur fonctionnel.
initilialisation de l’arbre
créer le fichier ldif suivant /etc/openldap/inittree.ldif et compléter le avec les données suivantes:
# La racine de l’annuaire
dn: dc=ipadsl,dc=com
dc: ipadsl
objectclass: top
objectclass: domain
description: Ipadsl ldap domain
# Ajoutons un groupe pour les utilisateurs
dn: ou=people,dc=ipadsl,dc=com
ou: people
objectclass: top
objectclass: organizationalUnit
dn: ou=groups,dc=ipadsl,dc=com
ou: groups
objectclass: top
objectclass: organizationalUnit
# Notre utilisateur ‘proxy’ pour véfier les authentifications
dn: cn=proxyuser,dc=ipadsl,dc=com
objectClass: top
objectClass: person
cn: proxyuser
# sn est obligatoire
sn: proxyuser
# mot de passe : ‘proxy’ obtenu grâ avec la commande : slappasswd -h ‘{MD5}’
userPassword: {MD5}QxOH63Ji4c/HmxJeuKZ8YA==
une fois fait, ajouter les données contenues dans ce fichier à l’aide de la commande suivante:
ldapadd -x -W -D “cn=Manager,dc=ipadsl,dc=com” -a -f /etc/openldap/inittree.ldif
2 - Installation de gosa
Installation des packages requis
ImageMagick is needed by gosa-2.5.10-1.noarch
perl(MIME::Lite) is needed by gosa-2.5.10-1.noarch
perl(Net::LDAP) is needed by gosa-2.5.10-1.noarch
perl(Net::LDAP::LDIF) is needed by gosa-2.5.10-1.noarch
perl(Net::LDAP::Schema) is needed by gosa-2.5.10-1.noarch
php-imap is needed by gosa-2.5.10-1.noarch
php-ldap is needed by gosa-2.5.10-1.noarch
php-mbstring is needed by gosa-2.5.10-1.noarch
php-mysql is needed by gosa-2.5.10-1.noarch
php-snmp is needed by gosa-2.5.10-1.noarch
pour l’installtion des packages perl il vous suffit d’utiliser la commande cpan, pour les installation de php, yum est le bon choix. En outre voici un lien utile vers des package rpm nécessaire à l’installation de gosa.
Installation gosa
rpm -ivh –nodeps gosa-2.5.10-1.noarch.rpm
Installation gosa french
rpm -ivh gosa-help-fr-2.5.10-1.noarch.rpm
Préparation de l’arbre ldap pour démarrer gosa
creer un fichier ldif contenant (changer le mot de pass admin en utilisant slappasswd -h ‘{MD5}’ -s xxx
dn: cn=admin,ou=people,dc=ipdasl,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: gosaAccount
uid: admin
cn: admin
givenName: admin
sn: GOsa main administrator
sambaLMPassword: 10974C6EFC0AEE1917306D272A9441BB
sambaNTPassword: 38F3951141D0F71A039CFA9D1EC06378
userPassword:: dGVzdGVy
# ce mot de passe est positionné à “tester” le changer par la suite
dn: cn=administrators,ou=groups,dc=ipadsl,dc=com
objectClass: gosaObject
objectClass: posixGroup
gosaSubtreeACL: :all
cn: administrators
gidNumber: 999
memberUid: admin
installation des schemas
Pour que gosa fonctionne pleinement, il faut ajouter de nouvelles description dans l’arbre ldap.
Il faut donc ajouter dans le fichier de configuration de openldap (/etc/openldap/sldap.conf) les lignes suivantes ( installer le package gosa-schema-2.5.10-1.noarch.rpm pour récuperer les fichiers associés au schéma gosa) :
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
#for gosa
include /etc/openldap/schema/gosa/gofon.schema
include /etc/openldap/schema/gosa/gosystem.schema
include /etc/openldap/schema/gosa/goto.schema
include /etc/openldap/schema/gosa/samba3.schema
include /etc/openldap/schema/gosa/gosa+samba3.schema
include /etc/openldap/schema/gosa/gofax.schema
include /etc/openldap/schema/gosa/goserver.schema
Gosa est assez gourmand au niveau de php, n’hésitez pas à changer le memory_limit dans php.ini et le mettre à 128mb pour vous affranchir de tout problème de ce coté la.
redemarrer le serveur ldap (service ldap restart ) puis le service http ( service httpd restart ) sur la machine serveur puis aller à l’addresse http://yourldapserver/gosa/setup.php.
Voila, la configuration coté serveur est terminée. Passons maintenant à la configuraiton du client.
3 Installation sur le poste client
Package requis
yum install openldap
yum install openldap-clients
Vérifier l’installation de pam et pam_ldap
ouvir le fichier /etc/nssswitch.conf
ajouter ldap au 3 lignes passwd shadow group (ldap pour authentification utilisateur)
passwd: files ldap
shadow: files ldap
group: files ldap
Configuration du client ldap
–> ouvrir le fichier /etc/ldap.conf
modifier le host (destination du serveur ldap)
host 192.168.0.21
modifier la password de l’utilisateur proxy
# The distinguished name to bind to the server with.
# Optional: default is to bind anonymously.
binddn cn=proxyuser,dc=ipadsl,dc=com
# The credentials to bind with.
# Optional: default is no credential.
bindpw proxy
definisser la location dans l’arbre ldap des information utilisateur
pam_password MD5
nss_base_passwd ou=people,dc=ipadsl,dc=com?one
nss_base_shadow ou=people,dc=ipadsl,dc=com?one
nss_base_group ou=groups,dc=ipadsl,dc=com?one
modifier la configuration de pam dans le fichier /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth sufficient pam_ldap.so use_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_succeed_if.so uid < 500 quiet
account sufficient pam_ldap.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password required pam_ldap.so
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_ldap.so
–> migration des utilisateurs unix existant dans le ldap (utiliser migrationtools-47)
modifier le fichier migration_common.pl
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = “ipadsl.com”;
# Default base
$DEFAULT_BASE = “dc=ipadsl.com,dc=com”;
–> migrer les utilisateurs
perl ./migrate_passwd.pl /etc/passwd > user.ldif
–> migrer les groupes
perl ./migrate_passwd.pl /etc/group > groups.ldif
Posted in System

