Académique Documents
Professionnel Documents
Culture Documents
Samuel Ouya
Objectifs spécifiques :
dn: dc=ec2lt,dc=sn
objectclass: organization
objectclass: dcObject
dc: ec2lt
o: ec2lt
dn: ou=people,dc=ec2lt,dc=sn
objectclass: organizationalUnit
ou: people
dn: ou=extensions,dc=ec2lt,dc=sn
objectclass: organizationalUnit
ou: people
dn: cn=alain,dc=ec2lt,dc=sn
objectclass: person
cn: alain Ouya
sn: Ouya
Userpassword: passer
description: Chef de Departement
• sn surname.
• l Le locality name.
• ou organisational unit.
• dc domain component.
• o organization name.
(attribut=valeur) égalité
(attribut~=valeur) approximation
(attribut!=valeur) difference
(attribut>=valeur) supérieur
(attribut<=valeur) inférieur
• La valeur peut être une chaîne combinée au caractère joker * et au symbole de
Exemples :
AstApplicati
on
AstApplicati
onData
1.3.6.1.1.1.2.0 posixAcc top AUXILIARY cn uid userPasswor Classe
ount uidNumber d loginShell permettant
gidNumber gecos de créer des
homeDirecto description users Linux
ry
1.3.6.1.1.1.2.1 shadowA top AUXILIARY uid userPasswor Classe
ccount d permettant
shadowLast de definir la
Change politique de
shadowMin comptes et
de mot de
shadowMax passe unix
shadowWarn
ing
shadowInact
ive
shadowExpir
e
shadowFlag
description
1.3.6.1.1.1.2.2 posixGro top STRUCTURAL cn userPasswor Classe
up gidNumber d permettant
memberUid de creer des
description groupes
d’utilisateurs
Linux
objectclass ( 2.16.840.1.113730.3.2.2
NAME 'inetOrgPerson'
DESC 'RFC2798: Internet Organizational Person'
SUP organizationalPerson
STRUCTURAL
MAY (
audio $ businessCategory $ carLicense $ departmentNumber $
displayName $ employeeNumber $ employeeType $ givenName $
homePhone $ homePostalAddress $ initials $ jpegPhoto $
labeledURI $ mail $ manager $ mobile $ o $ pager $
photo $ roomNumber $ secretary $ uid $ userCertificate $
x500uniqueIdentifier $ preferredLanguage $
userSMIMECertificate $ userPKCS12 )
)
objectclass ( AsteriskExtension
NAME 'AsteriskExtension'
DESC 'PBX Extension Information for Asterisk'
SUP top AUXILIARY
MUST cn
MAY (
AstContext $
AstExtension $
AstPriority $
AstApplication $
AstApplicationData
)
)
NB : Opendap definit par defaut 4 schemas de base definissant les classes de base :
core.schema, cosine.schema, nis.schema et inetorperson.schema
ces classes sont : organization, dcObject, organazinationalUnit,posixAccount,
shadowAccount,Inetorgperson
Déployer un service d'annuaire LDAP nécessite en premier lieu une réflexion sur la nature des
données que l'on y met, sur la manière dont on les récupère, sur l'utilisation que l'on compte en faire
et sur la façon de gérer le tout. La mise en place d'un annuaire LDAP met donc en jeu plusieurs
phases de conception que l'on va passer en revue.
Durant cette phase, nous allons choisir le modèle d'organisation des données, leur mode de
désignation et le suffixe de notre organisation.
e- Choix du suffixe et conception du DIT
L’IETF recommande à travers la RFC2377 l’usage de dc
par exemple si votre domaine DNS est ec2lt le suffixe aura comme dn : dc=ec2lt,dc=sn au lieu de
dn : o=ec2lt,dc=sn
Ensuite, on veillera à tenir compte de l’organigramme de l’entreprise pour mieux organiser le DIT
de l’annuaire le reflétant.
Exercice 1 d’application :
On desire mettre en place un annuaire LDAP dont le nom de domaine est esp.ucad.sn
1- Donner le dn de la racine de l’annuaire
On aimerait enregistrer dans l’annuaire les employés et cet annuaire sera utilisé entre autres pour :
• authentifier les users Unix devant se connecter sur les machines Linux de l’entreprise ;
• gérer les contrats et ls photos des employés à travers une application metier .
2- On vous demande de donner au minimum les classes d’objets ainsi que les attributs à utiliser lors
de création des comptes.
Pour avoir le serveur LDAP et des utilitaires pour faire des requêtes,les paquets à installer sous
ubuntu sont : slapd ldap-utils
Ensuite, vous allez répondre aux questions sur le nom de domaine DNS de votre entreprise ainsi
que le mot de passe de l’administrateur de l’annuaire.
Pour cela :
1- Installez les paquets slapd et ldap-utils
2- Deplacez-vous dans le répertoire /etc/ldap
3- En utilisant la commande verifier la presence du dossier slapd.d danc ce repertoie
4- Renommez le répertoire /etc/ldap/slapd.d en /etc/ldap/slapd.d.anc
5- Copier un exemple de fichier de configuration qui est /usr/share/slapd/slapd.conf dans le
répertoire /etc/ldap
Ainsi le fichier de configuration du serveur dans lequel on renseignera les paramètres du tableau
est /etc/ldap/slapd.conf
On n’oubliera pas de donner tous les droits à l’administrateur, dans le fichier de configuration,
comme indiqué à la ligne du tableau précédent
6- Redemarrez le serveur slapd
7- Utiliser la commande netstat et vous devrez avoir à peu pres les resultats suivants :
dn : dc=ec2lt,dc=sn
dn : ou=telecoms,dc=ec2lt,dc=sn
dn : ou=informatique,dc=ec2lt,dc=sn
c- utiliser la commande :
d- on vous demande d’ajouter à votre annuaire dans l’ou les utilisateurs toto, bouki et babadi qui
doivent avoir : nom de famille ; nom complet ; mot de passe
e- connectez-vous dans un terminl en tant que root et appuyez sur la touche tabulation apres avoir
taper ldap comme suit :
e-1 : Dans un terminal en tant que root essayer d’afficher le contenu de votre annuaire comme :
Pourqoui y a t-il apparemment, il ya rien dans l’annuaire ?
e-2 Editer le fichier /etc/ldap/ldap.conf du client Ldap et le pointer sur le serveur comme :
e-6 tapez la commande ldapsearch -x, vous devriez avoir vers la fin
e-7 preparer
un fichier permettant modibabadi.ldif pour modifier le nom de famille de babadi en Sall, ajouter une
description à badadi et supprimer son mot de passe
Saisissez la commande comme suit
Que remarquez-vous ?
Après avoir faire un man sur la commande ldapmodrdn et executez la commande comme suit :
Mais il ya une information supplementaire qui nous intersse pas, on doit la supprimer.
c’est l’attribut cn contenant babadi Mba
Veuillez régler ce problème
Exemples
Objectif s:
1- Savoir installer et utiliser le schema freeradius pour pour gerer des VLAN à partir des
informations stockées dans un annuaire
2- Savoir installer et utiliser le schema asterisk pour pour gerer des comptes et le dialplan
depuis un annuaire LDAP .
comme suit :
6- Verifier que le serveur est bien demarré ; ce qui veut dire que le serveur reconnaît bien le schema
radius
7- consulter le fichier /etc/ldap/schema/radius.schema dont un extrait est ci-apres pour connaître les
principaux parametres et leur signification
objectclass
( 1.3.6.1.4.1.3317.4.3.2.1
NAME 'radiusprofile'
SUP top AUXILIARY
DESC ''
MUST cn
MAY ( radiusArapFeatures $ radiusArapSecurity $ radiusArapZoneAccess $
radiusAuthType $ radiusCallbackId $ radiusCallbackNumber $
radiusCalledStationId $ radiusCallingStationId $ radiusClass $
radiusClientIPAddress $ radiusFilterId $ radiusFramedAppleTalkLink $
radiusFramedAppleTalkNetwork $ radiusFramedAppleTalkZone $
radiusFramedCompression $ radiusFramedIPAddress $
radiusFramedIPNetmask $ radiusFramedIPXNetwork $
radiusFramedMTU $ radiusFramedProtocol $
radiusCheckItem $ radiusReplyItem $
radiusFramedRoute $ radiusFramedRouting $ radiusIdleTimeout $
radiusGroupName $ radiusHint $ radiusHuntgroupName $
radiusLoginIPHost $ radiusLoginLATGroup $ radiusLoginLATNode $
radiusLoginLATPort $ radiusLoginLATService $ radiusLoginService $
radiusLoginTCPPort $ radiusLoginTime $ radiusPasswordRetry $
radiusPortLimit $ radiusPrompt $ radiusProxyToRealm $
radiusRealm $ radiusReplicateToRealm $ radiusServiceType $
radiusSessionTimeout $ radiusStripUserName $
radiusTerminationAction $ radiusTunnelClientEndpoint $ radiusProfileDn $
radiusSimultaneousUse $ radiusTunnelAssignmentId $
radiusTunnelMediumType $ radiusTunnelPassword $ radiusTunnelPreference $
radiusTunnelPrivateGroupId $ radiusTunnelServerEndpoint $
radiusTunnelType $ radiusUserCategory $ radiusVSA $
radiusExpiration $ dialupAccess $ radiusNASIpAddress $
radiusReplyMessage )
)
objectclass
( 1.3.6.1.4.1.3317.4.3.2.2
NAME 'radiusObjectProfile'
SUP top STRUCTURAL
DESC 'A Container Objectclass to be used for creating radius profile object'
MUST cn
MAY ( uid $ userPassword $ description )
)
Prérequis
make menuselect
[_general]
;
; Specify one of either host and port OR url. URL is preferred, as you can
; use more options.
host=127.0.0.1 ; LDAP host
port=389
url=ldap://127.0.0.1:389
protocol=3 ; Version of the LDAP protocol to use; default is 3.
basedn=dc=ec2lt,dc=sn ; Base DN
user=cn=admin,dc=ec2lt,dc=sn ; Bind DN
pass=passer ; Bind password
[extensions]
context = AstExtensionContext
exten = AstExtensionExten
priority = AstExtensionPriority
app = AstExtensionApplication
appdata = AstExtensionApplicationData
additionalFilter=(objectClass=AstExtension)
[sip]
name = uid ; We use the "cn" as the default value for name on the line above
; because objectClass=AsteriskSIPUser does not include a uid as an allowed field
; If your entry combines other objectClasses and uid is available, you may
; prefer to change the line to be name = uid, especially if your LDAP entries
; contain spaces in the cn field.
; You may also find it appropriate to use something completely different.
; This is possible by changing the line above to name = AstAccountName (or whatever
you
; prefer).
;
defaultuser = AstAccountDefaultUser
secret = userPassword
type = AstAccountType
context = AstAccountContext
host = AstAccountHost
[settings]
[general]
rtcachefriends=yes
callevents=yes
realm=ec2lt.sn
Explications
rtcachefriends=yes //permet de mettre en cache les infos des utilisateurs (obligatoire car elle
permet de garder en mémoire l'adresse IP avec laquelle l'utilisateur s'est connecté. Sans ce
paramètre l'appel n'aboutira pas car l'Asterisk ne saura pas trouver les utilisateurs.
• callevents=yes //permet de remonter les informations concernant un appel
• realm=domain.local //nom de domaine géré par l'annuaire LDAP
oot@ubuntu-ESPRIMO-E500:/usr/src/asterisk-16.4.0/contrib/scripts# cp asterisk.ldap-schema
/etc/ldap/schema/asterisk.schema
fichier ldif
dn: dc=ec2lt,dc=sn
objectclass: organization
objectclass: dcObject
dc: ec2lt
o: ec2lt
dn: ou=people,dc=ec2lt,dc=sn
objectclass: organizationalUnit
ou: people
dn: ou=extensions,dc=ec2lt,dc=sn
objectclass: organizationalUnit
ou: people
dn: uid=bouki,ou=people,dc=ec2lt,dc=sn
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: AsteriskSIPUser
uid: bouki
sn: Ndiaye
givenName: mamadou
cn: bouki
displayName: Mamadou Ndiaye
uidNumber: 2000
gidNumber: 2000
userPassword: passer
gecos: Mamadou Ndiaye
loginShell: /bin/bash
homeDirectory: /home/bouki
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: mamadou.ndiaye@ec2lt.sn
postalCode: 31000
l: dioubel
o: ec2lt
title: Docteur
postalAddress: 2845
initials: MN
AstAccountName: bouki
AstAccountDefaultUser: bouki
AstAccountSecret: passer
AstAccountType: friend
AstAccountHost: dynamic
AstAccountContext: ec2lt
AstAccountCallerID: Mamadou Ndiaye
AstAccountMailbox: 1000@ec2lt
AstAccountNAT: yes
dn: cn=5000,ou=extensions,dc=ec2lt,dc=sn
objectClass: inetorgperson
objectClass: AsteriskExtension
sn: Ndiaye
cn: Mamadou Ndiaye
AstContext: ec2lt
AstExtension: 5000
AstPriority: 1
AstApplication: Dial
AstApplicationData: SIP/bouki
10-Vérification de la connexion au LDAP :
Avant toute chose, il faut recharger la configuration afin que les modifications que l'on a apporté
soient prises en compte. Pour cela, il faut se connecter au CLI d'Asterisk :
11- Utiliser un softphone sip et vous connecter en tant l’utilisateur bouki et tester que vos parvenez
à appeler les autres utilisateurs d’asterisk
12- Ajouter un autre compte asterisk dans l’annuaire et tester s’il parvient à appeler à bouki