Antyda Weblog englishfrançais

Installation serveur Ldap et outil d’administration gosa

2 March 2008 by matthieu

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 openldap openldap-servers openldap-clients syslog

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

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.

About Antyda Weblog

Bonjour a vous, ce site et un petit pense bete sur lequel j'ajoute quelques informations technique concernant mon boulot d'ingenieur systeme. Dans les temps futur, j'y ajouterais peut etre quelques pensees perso et vous ferais partager ma passion du cerf volant de traction et du kite...