404
نعتذر , لا نستطيع ايجاد الصفحة المطلوبة
  • العودة الى الصفحة الرئيسية
  • الثلاثاء، 28 أبريل 2015

    openldap

    openldap

    Présentation

    LDAP est un protocole basé sur TCP/IP qui permet de partager des bases de données d'information sur un réseau interne (intranet) ou externe (internet). Ces bases de données sont appelées annuaire électronique (Directory en anglais), elles peuvent contenir tout type d'informations, des informations sur les personnes, à des données systèmes. Qui dit base de données, dit recherche, il est donc possible de faire des recherches dans la base en employant plusieurs critères, mais aussi bien sûr de la modifier, mais contrairement à un SGBD, un annuaire est très rapide en lecture, mais l'est beaucoup moins en écriture, en effet comme un annuaire est plutôt lu que modifier il a été optimisé pour la lecture et ne possède pas les mécanismes de transaction complexe que les SGBD possèdent pour traiter de gros volumes de données.Le LDAP ou Lightweight Directory Access Protocol est la version TCP/IP du protocole DAP, ce dernier étant le protocole pour accéder au protocole OSI du service d'annuaire

    X500. Dans un premier temps LDAP s'est contenté d'être l'interface à des annuaires X500, mais maintenant LDAP peut gérer complètement les bases (standalone LDAP).

    Installation d'OpenLDAP 

    libldap2-2.1.25-6mdk
    openldap-2.1.25-6mdk
    perl-ldap-0.31-2mdk
    openldap-servers-2.1.25-6mdk
    openldap-clients-2.1.25-6mdk
    Choix du suffixe
    Le rootDSE ou suffixe correspond à l'entrée tout en haut de l'arbre (DIT) de l'annuaire, on
    utilise généralement le nom de domaine, avec la syntaxe suivante dc=menara, dc=ma pour
    le domaine kervao.fr (dc correspond à Domain Component).

    Configuration du serveur LDAP

    On va créer un annuaire LDAP pour votre domaine privé menara.ma. On doit modifier les
    fichiers slapd.conf.
    #######################################################################
    # database definitions
    #######################################################################
    database ldbm
    suffix "dc=menara,dc=ma"
    rootdn "cn=Manager,dc=menara,dc=ma"
    #mot de passe en clair, on verra plus loin comment le crypter
    rootpw secret
    Le mot de passe de l'administrateur est secret en clair, si ça ne vous convient pas et que vous
    voulez le mettre crypté, il faudra taper (exemple avec secret) :
    slappasswd -v -s secret -h {CRYPT}
    Voilà le résultat
    {CRYPT}G.H5krNMMw0cc
    A la place de
    rootpw secret
    Dans slapd.conf, vous mettrez donc:
    rootpw {CRYPT}G.H5krNMMw0cc
    # Droits d'accès que j'ai rajoutés en plus
    access to attr=userPassword
    by self write
    by anonymous auth
    by dn="cn=Manager,dc=kervao,dc=fr" write
    by * none
    access to *
    by dn="cn=Manager,dc=kervao,dc=fr" write
    by * read

    Lancement du serveur

    Chkconfig ldap on
    Service ldap start

    Ajouter un enregistrement

    On va par exemple utiliser la classe breizPerson définie plus haut pour décrire une nouvelle
    personne Veronique Hoarau qu'on va rajouter dans l'annuaire. Elle appartient au service
    (organizationalUnit ) staff, ce même service appartenant à l'organisation kervao.fr
    Soit le fichier entree.ldif
    dn: dc=kervao, dc=fr
    objectClass: dcObject
    objectClass: organization
    dc: kervao
    o: kervao.fr
    dn: ou=staff, dc=kervao, dc=fr
    objectclass: organizationalUnit
    ou: staff
    dn: cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr
    objectclass: person
    objectclass: breizhPerson
    cn: Veronique Hoarau
    sn: Hoarau
    title: madame
    Quelques commentaires, le premier groupe correspond à la définition de votre organisation,
    le deuxième à celui du groupe de travail (organizationalUnit) et le dernier à la personne.
    Celle-ci est définie par son dn (Distinguished Name), on part du sommet bz (suffixe du nom de domaine), puis le nom de domaine, le groupe de travail et enfin la personne. L'arbre
    (DIT) pourrait ressembler à ça:
    cn=Véroniqu
    e Hoarau
    cn=Olivie
    r Hoarau
    Au niveau de la définition de la personne:
    objetclass: person définit la classe père de la classe breizPerson,
    objetclass: breizPerson classe décrivant la personne,
    cn et sn sont des attributs à renseigner obligatoirement,
    title est un attribut obligatoire
    On rajoutera l'enregistrement en utilisant la syntaxe suivante (en tant que simple utilisateur):
    ldapadd -x -D "description du dn de l'administrateur" -W -f nom-du-fichier-ldif
    Exemple concret:
    ldapadd -x -D "cn=Manager, dc=kervao, dc=fr" -W -f entree.ldif
    Enter LDAP Password: secret
    adding new entry "dc=kervao, dc=fr"
    adding new entry "ou=staff, dc=kervao, dc=fr"
    adding new entry "cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr"
    Pour rajouter par la suite un autre enregistrement dans le groupe staff , il sera plus nécessaire
    de rajouter la définition du groupe et de l'organisation. Soit le fichier entree.ldif
    dn: cn=Olivier Hoarau, ou=staff, dc=kervao, dc=fr
    objectclass: person
    objectclass: breizhPerson
    cn: Olivier Hoarau
    sn: Hoarau
    title: monsieur
    On tape ensuite la commande:
    ldapadd -x -D "cn=Manager, dc=kervao, dc=fr" -W -f entree.ldif
    Enter LDAP Password:
    adding new entry "cn=Olivier Hoarau, ou=staff, dc=kervao, dc=fr

    Rechercher un enregistrement

    On utilisera la fonction ldapsearch. Pour visualiser tout l'annuaire on peut taper :
    ldapsearch -x -b 'dc=kervao, dc=fr' '(objectclass=*)'
    Voilà le résultat
    # extended LDIF
    #
    # LDAPv3
    # filter: (objectclass=*)
    # requesting: ALL
    #
    # kervao, fr
    dn: dc=kervao, dc=fr
    objectClass: dcObject
    objectClass: organization
    dc: kervao.fr
    o: kervao.fr
    # staff, kervao, fr
    dn: ou=staff, dc=kervao, dc=fr
    objectClass: organizationalUnit
    ou: staff
    # Veronique Hoarau, staff, kervao, fr
    dn: cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr
    objectClass: person
    objectClass: breizhPerson
    cn: Veronique Hoarau
    sn: Hoarau
    title: madame
    # Olivier Hoarau, staff, kervao, fr
    dn: cn=Olivier Hoarau, ou=staff, dc=kervao, dc=fr
    objectClass: person
    objectClass: breizhPerson
    cn: Olivier Hoarau
    sn: Hoarau
    title: monsieur
    # search result
    search: 2
    result: 0 Success
    # numResponses: 5
    # numEntries: 4

    Modifier un enregistrement

    Rajouter un attribut à un enregistrement

    On va rajouter l'attribut facultatif location (l) à l'enregistrement Veronique Hoarau. On va
    créer un fichier modif.ldif contenant:
    dn: cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr
    add: l
    title: bureau36
    On tape ensuite
    ldapmodify -x -D "cn=Manager, dc=kervao, dc=fr" -W -f modif.ldif
    Enter LDAP Password:secret
    modifying entry "cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr"

    Modifier un attribut

    On va modifier l'attribut titre (title) à l'enregistrement Veronique Hoarau. On va créer un
    fichier modif.ldif contenant:
    dn: cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr
    changetype: modify
    replace: title
    title: mademoiselle
    On tape ensuite
    ldapmodify -x -D "cn=Manager, dc=kervao, dc=fr" -W -f modif.ldif
    Enter LDAP Password:secret
    modifying entry "cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr"

    Supprimer un attribut

    On va supprimer l'attribut location (l) à l'enregistrement Veronique Hoarau. On va créer un
    fichier modif.ldif contenant:
    dn: cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr
    delete: l
    On tape ensuite
    ldapmodify -x -D "cn=Manager, dc=kervao, dc=fr" -W -f modif.ldif
    Enter LDAP Password:secret
    modifying entry cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr

    Supprimer un enregistrement

    Pour supprimer l'enregistrement Veronique hoarau, on va créer un fichier modif.ldif
    contenant
    dn: cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr
    changetype: delete
    On tape ensuite:
    ldapmodify -x -D "cn=Manager, dc=kervao, dc=fr" -W -f modif.ldif
    Enter LDAP Password:secret
    deleting entry cn=Veronique Hoarau, ou=staff, dc=kervao, dc=fr
    ATTENTION Vous ne pouvez pas supprimer un attribut obligatoire comme title pour la
    classe breizhPerson.
    A présent dans le répertoire /usr/share/openldap/migration (si installation par package,
    sinon dans le répertoire MigrationTools-46) , on va modifier le fichier
    migrate_common.ph, on doit y indiquer son nom de domaine, comme ceci :
    # Default DNS domain
    $DEFAULT_MAIL_DOMAIN = "kervao.fr";
    # Default base
    $DEFAULT_BASE = "dc=kervao,dc=fr";
    Eventuellement vous pouvez modifier la ligne suivante spécifiant le serveur de mail bien que
    ce ne soit pas absolument nécessaire.
    $DEFAULT_MAIL_HOST = "mail.padl.com";
    A présent il faut rentrer les utilisateurs et groupes du système dans la base de données
    LDAP. Commençons d'abord par créer des fichiers temporaires au format ldif. On tape
    maintenant en tant que root (pour pouvoir lire /etc/shadow)
    ETC_SHADOW=/etc/shadow
    export ETC_SHADOW
    ./migrate_passwd.pl /etc/passwd /tmp/passwd.ldif
    ./migrate_group.pl /etc/group /tmp/group.ldif

    Configuration serveur et client

    Editer le fichier /etc/ldap.conf
    # Your LDAP server. Must be resolvable without using LDAP.
    # ici vous devez mettre l'adresse IP de votre serveur
    host 192.168.13.11
    # The distinguished name of the search base.
    # votre nom de domaine
    base dc=kervao,dc=fr
    # The distinguished name to bind to the server with.
    # Optional: default is to bind anonymously.
    # pour pouvoir se connecter à votre base
    binddn cn=Manager,dc=kervao,dc=fr
    # The credentials to bind with.
    # Optional: default is no credential.
    # le mot de passe qui va bien
    bindpw secret
    (...)
    # Filter to AND with uid=%s
    pam_filter objectclass=account
    # The user ID attribute (defaults to uid)
    pam_login_attribute uid
    (...)
    # Hash password locally; required for University of
    # Michigan LDAP server, and works with Netscape
    # Directory Server if you're using the UNIX-Crypt
    # hash mechanism and not using the NT Synchronization
    # service.
    # type de cryptage du mot de passe
    pam_password crypt
    # RFC2307bis naming contexts
    # Syntax:
    # nss_base_XXX base?scope?filter
    # where scope is {base,one,sub}
    # and filter is a filter to be &'d with the
    # default filter.
    nss_base_passwd ou=People,dc=kervao,dc=fr?one
    nss_base_shadow ou=People,dc=kervao,dc=fr?one
    nss_base_group ou=Group,dc=kervao,dc=fr?one
    Dans le fichier /etc/nsswitch.conf on modifiera les lignes suivantes pour lire
    passwd: files nis ldap
    shadow: files nis ldap
    group: files nis ldap
    Reprenons donc notre fichier login (rajoutez uniquement les lignes concernant pam_ldap et
    laissez les autres), il doit ressembler à ça :
    #%PAM-1.0
    auth required pam_securetty.so
    auth required pam_stack.so service=system-auth
    auth required pam_nologin.so
    auth sufficient /lib/security/pam_ldap.so
    account sufficient /lib/security/pam_ldap.so
    account required pam_stack.so service=system-auth
    password sufficient /lib/security/pam_ldap.so
    password required pam_stack.so service=system-auth
    session sufficient /lib/security/pam_ldap.so
    session required pam_stack.so service=system-auth
    session optional pam_console.so
    Le fichier su (rajoutez uniquement les lignes concernant pam_ldap et laissez les autres)
    ressemble à ça
    #%PAM-1.0
    auth sufficient pam_rootok.so
    auth required pam_stack.so service=system-auth
    auth sufficient /lib/security/pam_ldap.so
    account sufficient /lib/security/pam_ldap.so
    account required pam_stack.so service=system-auth
    password sufficient /lib/security/pam_ldap.so
    password required pam_stack.so service=system-auth
    session sufficient /lib/security/pam_ldap.so
    session required pam_stack.so service=system-auth
    session optional pam_xauth.so
    Modifiez aussi le fichier /etc/pam.d/smtp (rajoutez uniquement les lignes concernant
    pam_ldap et laissez les autres) car sinon vos mails vont se perdre dans la nature, le serveur
    smtp a besoin d'authentifier les utilisateurs.
    #%PAM-1.0
    auth required /lib/security/pam_stack.so service=system-auth
    auth sufficient /lib/security/pam_ldap.so
    account sufficient /lib/security/pam_ldap.so
    account required /lib/security/pam_stack.so service=system-auth
    Modifiez les autres fichiers sous /etc/pam.d qui seraient susceptibles de faire appel à
    l'authentification LDAP sur le même modèle.

    Test de fonctionnement

    C'est simple que ce soit sur le serveur ou le client, supprimer les lignes qui correspondent à
    vos utilisateur dans /etc/passwd, et /etc/shadow et faites de même pour vos groupes
    utilisateurs dans /etc/group. N'oubliez pas de faire une sauvegarde de ces fichiers au cas où !
    Maintenant essayer de vous loguer en tant que simple utilisateur, et là normalement, vous
    devriez vous loguer sans problème.

     

    هذا النص هو مثال لنص يمكن أن يستبدل في نفس المساحة، لقد تم توليد هذا النص من مولد النص العربى، حيث يمكنك أن تولد مثل هذا النص أو العديد من النصوص الأخرى إضافة إلى زيادة عدد الحروف التى يولدها التطبيق

    الكاتب : Unknown

    ليست هناك تعليقات:


    الأبتساماتأخفاء الأبتسامات

    جميع الحقوق محفوظة ل bbbb
    تصميم : moi