Sådan installeres OpenLDAP-server til central godkendelse


Lightweight Directory Access Protocol (kort sagt LDAP) er et industristandard, letvægts, meget brugt sæt protokoller til adgang til bibliotekstjenester. En katalogtjeneste er en delt informationsinfrastruktur til at få adgang til, administrere, organisere og opdatere hverdagslige varer og netværksressourcer, såsom brugere, grupper, enheder, e-mail-adresser, telefonnumre, diskenheder og mange andre objekter.

LDAP-informationsmodellen er baseret på poster. En post i et LDAP-bibliotek repræsenterer en enkelt enhed eller information og identificeres entydigt ved det, der kaldes et Distinguished Name (DN). Hver af postens attributter har en type og en eller flere værdier.

En attribut er et stykke information, der er knyttet til en post. Typerne er typisk mnemoniske strenge, såsom "cn" for almindeligt navn eller "mail" for e-mail-adresse. Hver attribut tildeles en eller flere værdier, der består af en rumadskilt liste.

Følgende er en illustration af, hvordan information er arrangeret i LDAP-biblioteket.

I denne artikel viser vi, hvordan du installerer og konfigurerer OpenLDAP-server til central godkendelse i Ubuntu 16.04/18.04 og CentOS 7.

Trin 1: Installation af LDAP-server

1. Start med at installere OpenLDAP, en open source-implementering af LDAP og nogle traditionelle LDAP-styringsværktøjer ved hjælp af følgende kommandoer.

# yum install openldap openldap-servers	    #CentOS 7
$ sudo apt install slapd ldap-utils	    #Ubuntu 16.04/18.04

På Ubuntu vil du under pakkeinstallationen blive bedt om at indtaste adgangskoden til administratorindgangen i dit LDAP-bibliotek, indstille en sikker adgangskode og bekræfte den.

Når installationen er afsluttet, kan du starte tjenesten som beskrevet nedenfor.

2. På CentOS 7 skal du køre følgende kommandoer for at starte openldap server-dæmonen, aktivere den til automatisk start ved opstartstid og kontrollere, om den er i gang (på Ubuntu skal tjenesten startes automatisk under systemd, du kan simpelthen kontrollere dens status):

$ sudo systemctl start slapd
$ sudo systemctl enable slapd
$ sudo systemctl status slapd

3. Tillad derefter anmodninger til LDAP-serverdæmonen gennem firewallen som vist.

# firewall-cmd --add-service=ldap    #CentOS 7
$ sudo ufw allow ldap                #Ubuntu 16.04/18.04

Trin 2: Konfiguration af LDAP-server

Bemærk: Det anbefales ikke at manuelt redigere LDAP-konfigurationen, du skal tilføje konfigurationerne i en fil og bruge kommandoen ldapadd eller ldapmodify til at indlæse dem til LDAP-biblioteket som vist nedenfor.

4. Opret nu en OpenLDAP-administrativ bruger, og tildel en adgangskode til den bruger. I nedenstående kommando oprettes en hashværdi for den givne adgangskode, vær opmærksom på den, du vil bruge den i LDAP-konfigurationsfilen.

$ slappasswd

5. Opret derefter en LDIF-fil (ldaprootpasswd.ldif), der bruges til at tilføje en post til LDAP-biblioteket.

$ sudo vim ldaprootpasswd.ldif

Tilføj følgende indhold i det:

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD_CREATED

forklaring af attributværdiparene ovenfor:

  • olcDatabase: angiver et specifikt navn på en databaseinstans og kan typisk findes i /etc/openldap/slapd.d/cn=config.
  • cn = config: angiver globale konfigurationsindstillinger.
  • PASSWORD: er den hashede streng, der blev opnået under oprettelsen af den administrative bruger.

6. Tilføj derefter den tilsvarende LDAP-post ved at angive URI'en, der henviser til ldap-serveren og filen ovenfor.

$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ldaprootpasswd.ldif  

Trin 3: Konfiguration af LDAP-database

7. Kopier nu prøvedatabasekonfigurationsfilen for slapd til/var/lib/ldap-biblioteket, og indstil de korrekte tilladelser til filen.

$ sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
$ sudo chown -R ldap:ldap /var/lib/ldap/DB_CONFIG
$ sudo systemctl restart slapd

8. Dernæst importerer du nogle grundlæggende LDAP-skemaer fra/etc/openldap/schema-biblioteket som følger.

$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif 
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

9. Tilføj nu dit domæne i LDAP-databasen, og opret en fil, der hedder ldapdomain.ldif til dit domæne.

$ sudo vim ldapdomain.ldif 

Tilføj følgende indhold i det (erstat eksemplet med dit domæne og PASSWORD med den hashværdi, der blev opnået før):

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=example,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=example,dc=com" write by * read

10. Føj derefter ovenstående konfiguration til LDAP-databasen med følgende kommando.

$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldapdomain.ldif

11. I dette trin skal vi tilføje nogle poster til vores LDAP-bibliotek. Opret en anden fil kaldet baseldapdomain.ldif med følgende indhold.

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: example com
dc: example

dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group 

Gem filen, og tilføj derefter posterne til LDAP-biblioteket.

$ sudo ldapadd -Y EXTERNAL -x -D cn=Manager,dc=example,dc=com -W -f baseldapdomain.ldif

12. Det næste trin er at oprette en LDAP-bruger for eksempel tecmint og indstille en adgangskode til denne bruger som følger.

$ sudo useradd tecmint
$ sudo passwd tecmint

13. Opret derefter definitionerne for en LDAP-gruppe i en fil kaldet ldapgroup.ldif med følgende indhold.

dn: cn=Manager,ou=Group,dc=example,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1005

I ovenstående konfiguration er gidNumber GID i/etc/group for tecmint og føjer det til OpenLDAP-biblioteket.

$ sudo ldapadd -Y EXTERNAL -x  -W -D "cn=Manager,dc=example,dc=com" -f ldapgroup.ldif

14. Opret derefter en anden LDIF-fil, der hedder ldapuser.ldif, og tilføj definitionerne for bruger tecmint.

dn: uid=tecmint,ou=People,dc=example,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tecmint
uid: tecmint
uidNumber: 1005
gidNumber: 1005
homeDirectory: /home/tecmint
userPassword: {SSHA}PASSWORD_HERE
loginShell: /bin/bash
gecos: tecmint
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

indlæs derefter konfigurationen i LDAP-biblioteket.

$ ldapadd -Y EXTERNAL  -x -D cn=Manager,dc=example,dc=com -W -f  ldapuser.ldif

Når du har konfigureret en central server til godkendelse, er den sidste del at gøre det muligt for klienten at godkende ved hjælp af LDAP som forklaret i denne vejledning:

  1. Sådan konfigureres LDAP-klienten til at forbinde ekstern godkendelse

Se den relevante dokumentation fra OpenLDAP-servervejledningen for at få flere oplysninger.

OpenLDAP er en open source-implementering af LDAP i Linux. I denne artikel har vi vist, hvordan man installerer og konfigurerer OpenLDAP-server til central godkendelse i Ubuntu 16.04/18.04 og CentOS 7. Hvis du har et spørgsmål eller tanker at dele, tøv ikke med at kontakte os via nedenstående kommentarformular.