OpenLDAP-server

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 :

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.

Installation

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

Befolka LDAP

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

Ställa in ACL

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-replikering

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:

  1. Stoppa master-serverns slapd-demon.

  2. Omkonfigurera master-serverns slapd.conf för att aktivera replikering till den nya slav-servern.

  3. Exportera databasen från master-servern.

  4. Konfigurera replika-serverns slapd.conf.

  5. Importera databasen från master-servern till slav-servern.

  6. Starta om replika-serverns slapd-process

  7. 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.

LDAP-master

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

LDAP-slav

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