LDAP betyder Lightweight Directory Access Protocol, det är en förenklad version av X500 protokollet. Katalogupplägget i det här avsnittet kommer att användas till autentisering. I vilket fall, kan en LDAP-katalog användas på flera sätt: autentisering, delad katalog (för e-post klienter), i alla typer av program. LDAP är en välanvänd standard.
För att snabbt beskriva LDAP, så sparas all information i ett träd. Du behöver själv avgöra katalogens trädstruktur (Directory Information Tree= DIT). Vi börjar med ett grundläggande träd med två noder över root :
"People" nod där dina användare kommer lagras
"Groups" nod där dina grupper kommer sparas
Du behöver först fastställa var din LDAP-root skall finnas. Som standard kommer ditt träd bestämmas av din internetdomän. Om din domän är example.com (vi kommer använda det i exemplet ovan), kommer root bli dc=example,dc=com.
Först av allt installera ldap serverdemon (slapd) på servern ; installera följande paket: slapd
och ldap-utils
.
Skriv in din domän vid tillfrågan och ett lösenord till katalogadministratören.
Endast några få ändringar behöver utföras i standard konfigurationen. Först, ändra root lösenordet i konfigurationsfilen (istället för i katalogen) genom att redigera filen /etc/ldap/slapd.conf
.
Använd inte ett lösenord i rent textformat. För att skapa ett krypterat lösenord använd slappasswd yourpasswd
$ slappasswd New password: Re-enter password: {SSHA}d2BamRTgBuhC6SxC0vFGWol31ki8iq5m
Det här exemplet visar vad som händer när du använder strängen "secret" som lösenord. (till sin natur så kommer resultatet av SSHA krypteringsschema att variera.)
Redigera nu /etc/ldap/slapd.conf
och kopiera klistra in den genererade strängen.
# Make sure you edit or add these directives after the first 'database' directive. suffix "dc=example,dc=com" directory "/var/lib/ldap" rootdn "cn=admin,dc=example,dc=com" rootpw {SSHA}d2BamRTgBuhC6SxC0vFGWol31ki8iq5m
nu är det dags att befolka katalogen som skapades vid installationen. Den kommer att befolkas med ingången "classical" som kommer att vara kompatibel med katalogen (till exempel för en delad katalog), med classical-konton (för webbapplikationer) och för Unix-konton (posix).
LDAP katalogen kan matas med en ldif-fil (ldif avser ldap directory interchange format). Generera exempeltextfilen init.ldif någonstans i ditt system:
dn: dc=example,dc=com objectClass: dcObject objectClass: organizationalUnit dc: example ou: Example Dot Com dn: ou=people,dc=example,dc=com objectClass: organizationalUnit ou: people dn: ou=groups,dc=example,dc=com objectClass: organizationalUnit ou: groups dn: uid=john,ou=people,dc=example,dc=com objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: john sn: Doe givenName: John cn: John Doe displayName: John Doe uidNumber: 1000 gidNumber: 10000 userPassword: password gecos: John Doe loginShell: /bin/bash homeDirectory: /home/john shadowExpire: -1 shadowFlag: 0 shadowWarning: 7 shadowMin: 8 shadowMax: 999999 shadowLastChange: 10877 mail: john.doe@example.com postalCode: 31000 l: Toulouse o: Example mobile: +33 (0)6 xx xx xx xx homePhone: +33 (0)5 xx xx xx xx title: System Administrator postalAddress: initials: JD dn: cn=example,ou=groups,dc=example,dc=com objectClass: posixGroup cn: example gidNumber: 10000
I exemplet ovan har trädstrukturen, en användare och grupp skapats. I andra exempel kan du få se objektklassen: överst tillagd i varje ingång, men det är standardbeteende så du behöver inte lägga till det själv.
Nu, lägg till dina ingångar i LDAP :
stoppa LDAP-demonen: sudo /etc/init.d/slapd stop
ta bort innehållet som automatiskt lades till vid installationen: sudo rm -rf /var/lib/ldap/*
lägg till innehållet sudo slapadd -l init.ldif
starta LDAP-demon: sudo /etc/init.d/slapd start
Vi kan kontrollera att innehållet har blivit rätt inlagt med verktygen från paketet ldap-utils
. För att utföra en sökning i LDAP-katalogen:
ldapsearch -xLLL -b "dc=example,dc=com" uid=john sn givenName cn dn: uid=john,ou=people,dc=example,dc=com cn: John Doe sn: Doe givenName: John
Bara en kort förklaring :
-x är därför att vi inte använder SASL verifieringsmetoden ( som standard)
-LLL inaktivera utskrift av LDIF-information
Autentisering behöver tillgång av lösenordsfält, det skall inte vara åtkomligt som standard. Ett annat problem är att under ett lösenordsbyte genom att använda passwd behövs det även åtkomst till shadowLastChange:
access to attr=shadowLastChange by dn="cn=manager,dc=example,dc=com" write by self write by * read
LDAP-tjänster blir ofta en kritisk tjänst i ett informationssystem: allt är beroende av: verifiering, befogenheter, e-postsystem, etc. Det är en bra idé att installera ett redundant system. Det är enkelt att installera och här är en snabb instruktion.
Replikeringen baseras på en master-slav relation. Innan du implementerar LDAP-replikationen överväg följande steg:
Stoppa master-serverns slapd-demon.
Omkonfigurera master-serverns slapd.conf för att aktivera replikering till den nya slav-servern.
Exportera databasen från master-servern.
Konfigurera replika-serverns slapd.conf
.
Importera databasen från master-servern till slav-servern.
Starta om replika-serverns slapd-process
Starta om master-serverns slapd-process
Du behöver komma ihåg att modifieringar skall ALLTID göras på master-servern. Om du modifierar på slav-servern kommer gå förlorade.
På mastern behöver du redigera databassektionen i filen /etc/ldap/slapd.conf
och lägga till en replikeringsinstruktion. Följande är ett exempel av en kopia på ldap-2.example.com med användaren Manager med secret som lösenord. Den replikerade loggfilen är platsen där redigeringar sparas innan de skickas till LDAP-slaven.
replica uri=ldap://ldap-2.example.com:389 binddn="cn=Manager,dc=example,dc=com" bindmethod=simple credentials=secret replogfile /var/lib/ldap/replog
Exportera master-databasen genom att använda slapcat. Kopiera sedan master.ldif till slaven genom att använda scp eller andra verktyg.
user@master:~$ sudo slapcat -l master.ldif
På slaven behöver du auktorisera din master till att uppdatera databasen. Lägg till följande rader i filen /etc/ldap/slapd.conf
under databas avsnittet:
updatedn cn=Manager,dc=example,dc=com updateref ldap://ldap-1.example.com
Importera master.ldif
genom att använda slapadd.
user@slave:~$ sudo slapadd -c -l master.ldif
Starta om master-servern.
user@master:~$ sudo /etc/init.d/slapd start
Starta om slav-servern.
user@slave:~$ sudo /etc/init.d/slapd start