Installa e configura Open LDAP

LDAP noto come Light Weight Directory Access Protocolè un protocollo utilizzato per accedere ai contenitori di servizi X.500 all'interno di un'azienda nota da una directory. Coloro che hanno familiarità con Windows Server Administration possono pensare a LDAP come di natura molto simile ad Active Directory. È anche un concetto ampiamente utilizzato di intrecciare le workstation Windows in un'impresa OpenLDAP CentOS. D'altro canto, una workstation CentOS Linux può condividere risorse e partecipare con le funzionalità di base in un dominio Windows.

La distribuzione di LDAP su CentOS come agente server di directory, agente di sistema directory o DSA (questi acronimi sono tutti uguali) è simile alle installazioni Novell Netware precedenti che utilizzano la struttura ad albero delle directory con NDS.

Breve storia di LDAP

LDAP è stato creato fondamentalmente come un modo efficiente per accedere alle directory X.500 con le risorse aziendali. Sia X.500 che LDAP condividono le stesse caratteristiche e sono così simili che i client LDAP possono accedere alle directory X.500 con alcuni helper. Sebbene LDAP abbia anche un proprio server di directory chiamatoslapd. La principale differenza tra LDAP e DAP è che la versione leggera è progettata per funzionare su TCP.

Mentre DAP utilizza il modello OSI completo. Con l'avvento di Internet, TCP / IP ed Ethernet prominenza nelle reti di oggi, è raro imbattersi in un impianto di Directory Services utilizzando directory aziendali DAP e X.500 native al di fuori di specifici modelli di elaborazione legacy.

I componenti principali utilizzati con openldap per CentOS Linux sono:

openldap Librerie di supporto LDAP
openldap-server Server LDAP
client-openldap Utilità client LDAP
openldap-devel Librerie di sviluppo per OpenLDAP
compay-openldap Librerie condivise OpenLDAP
slapd Demone del server di directory di OpenLDAP
slurpd Utilizzato per la replica LDAP in un dominio aziendale

Note - Quando si nomina la propria azienda, è consigliabile utilizzare l'estensione .localTLD. L'utilizzo di un .net o .com può causare difficoltà quando si separa un'infrastruttura di dominio online e interna. Immagina il lavoro extra per un'azienda che utilizza internamente acme.com sia per operazioni esterne che interne. Quindi, può essere saggio avere risorse Internet chiamate acme.com o acme.net . Quindi, le risorse aziendali di rete locale vengono rappresentate come acme.local . Ciò comporterà la configurazione dei record DNS, ma pagherà in semplicità, eloquenza e sicurezza.

Installa Open LDAP su CentOS

Installa openldap, openldap-servers, openldap-clients e migrationstools da YUM .

[[email protected]]# yum -y install openldap openldap-servers openldap-clients
migration tools
 Loaded plugins: fastestmirror, langpacks
 updates
 | 3.4 kB  00:00:00
 updates/7/x86_64/primary_db
 | 2.2 MB  00:00:05
 Determining fastest mirrors
 (1/2): extras/7/x86_64/primary_db
 | 121 kB  00:00:01
 (2/2): base/7/x86_64/primary_db
 | 5.6 MB  00:00:16
 Package openldap-2.4.40-13.el7.x86_64 already installed and latest version
 Resolving Dependencies
 --> Running transaction check
 ---> Package openldap-clients.x86_64 0:2.4.40-13.el7 will be installed
 ---> Package openldap-servers.x86_64 0:2.4.40-13.el7 will be installed
 --> Finished Dependency Resolution
 base/7/x86_64/group_gz
 | 155 kB  00:00:00
 
 Dependencies Resolved
 
=============================================================================== 
=============================================================================== 
Package                                Arch
Version                             Repository                        Size 
=============================================================================== 
=============================================================================== 
Installing: 
openldap-clients                    x86_64
2.4.40-13.el7                    base                                 188 k 
openldap-servers                    x86_64
2.4.40-13.el7                    base                                 2.1 M  

Transaction Summary 
=============================================================================== 
===============================================================================
Install  2 Packages

Total download size: 2.3 M 
Installed size: 5.3 M 
Downloading packages:

Installed: 
openldap-clients.x86_64 0:2.4.40-13.el7                                       
openldap-servers.x86_64 0:2.4.40-13.el7                                       
Complete! 
[[email protected]]#

Ora iniziamo e abilitiamo il servizio slapd -

[[email protected]]# systemctl start slapd 
[[email protected]]# systemctl enable  slapd

A questo punto, assicuriamoci di avere la nostra struttura openldap in / etc / openldap .

[email protected]]# ls /etc/openldap/ 
certs  check_password.conf  ldap.conf  schema  slapd.d
[[email protected]]#

Quindi assicurati che il nostro servizio slapd sia in esecuzione.

[email protected]]# netstat -antup | grep slapd
tcp        0      0 0.0.0.0:389            0.0.0.0:*              LISTEN      1641/slapd
tcp6       0      0 :::389                 :::*                   LISTEN      1641/slapd
 
[[email protected]]#

Successivamente, configuriamo la nostra installazione Open LDAP .

Assicurati che il nostro utente ldap di sistema sia stato creato.

[root[email protected]]# id ldap 
uid=55(ldap) gid=55(ldap) groups=55(ldap)
[[email protected]]#

Genera le nostre credenziali LDAP.

[[email protected]]# slappasswd  
New password:  
Re-enter new password:  
{SSHA}20RSyjVv6S6r43DFPeJgASDLlLoSU8g.a10

[[email protected]]#

Dobbiamo salvare l'output da slappasswd.

Configurare Open LDAP

Step 1 - Configurare LDAP per il dominio e aggiungere l'utente amministrativo.

Innanzitutto, vogliamo configurare il nostro ambiente openLDAP. Di seguito è riportato un modello da utilizzare con il comando ldapmodify .

dn: olcDatabase={2}hdb,cn=config 
changetype: modify 
replace: olcSuffix 
olcSuffix: dc=vmnet,dc=local 
dn: olcDatabase = {2}hdb,cn=config 
changetype: modify 
replace: olcRootDN 
olcRootDN: cn=ldapadm,dc=vmnet,dc=local 
dn: olcDatabase = {2}hdb,cn=config 
changetype: modify 
replace: olcRootPW 
olcRootPW: <output from slap

Apporta le modifiche a: /etc/openldap/slapd.d/cn=config/olcDatabase = {1} monitor.ldif con il comando ldapmodify.

[[email protected]]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/rdc/Documents/db.ldif  
SASL/EXTERNAL authentication started 
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth 
SASL SSF: 0 
modifying entry "olcDatabase = {2}hdb,cn=config" 
modifying entry "olcDatabase = {2}hdb,cn=config" 
modifying entry "olcDatabase = {2}hdb,cn=config" 

[[email protected] cn=config]#

Controlliamo la configurazione LDAP modificata.

[email protected] ~]# vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

[[email protected]]# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
 # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. 
 # CRC32 a163f14c
dn: olcDatabase = {2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 1bd9aa2a-8516-1036-934b-f7eac1189139
creatorsName: cn=config
createTimestamp: 20170212022422Z
olcSuffix: dc=vmnet,dc=local
olcRootDN: cn=ldapadm,dc=vmnet,dc=local
olcRootPW:: e1NTSEF1bUVyb1VzZTRjc2dkYVdGaDY0T0k = 
entryCSN: 20170215204423.726622Z#000000#000#000000 
modifiersName: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20170215204423Z

[[email protected]]#

Come puoi vedere, le nostre modifiche aziendali LDAP hanno avuto successo.

Successivamente, vogliamo creare un certificato SSL autofirmato per OpenLDAP. Ciò proteggerà la comunicazione tra il server aziendale e i client.

Step 2 - Crea un certificato autofirmato per OpenLDAP.

Useremo openssl per creare un certificato SSL autofirmato. Vai al capitolo successivo,Create LDAP SSL Certificate with opensslper istruzioni su come proteggere le comunicazioni con OpenLDAP. Quindi, quando i certificati ssl saranno configurati, avremo completato la nostra configurazione aziendale OpenLDAP.

Step 3 - Configurare OpenLDAP per utilizzare comunicazioni protette con certificato.

Crea un file certs.ldif in vim con le seguenti informazioni:

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/yourGeneratedCertFile.pem

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/youGeneratedKeyFile.pem

Quindi, ancora una volta, usa il comando ldapmodify per unire le modifiche nella configurazione di OpenLDAP.

[[email protected] rdc]# ldapmodify -Y EXTERNAL  -H ldapi:/// -f certs.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

[[email protected]]#

Infine, testiamo la nostra configurazione OpenLADP.

[[email protected]]# slaptest -u 
config file testing succeeded 
[[email protected]]#

Step 4 - Imposta il database slapd.

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG && 
chown ldap:ldap /var/lib/ldap/*

Aggiorna lo schema OpenLDAP.

Aggiungi gli schemi LDAP coseno e nis.

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

Infine, crea lo schema aziendale e aggiungilo alla configurazione OpenLDAP corrente.

Quello che segue è per un dominio chiamato vmnet. local con un amministratore LDAP chiamato ldapadm .

dn: dc=vmnet,dc=local
dc: vmnet
objectClass: top
objectClass: domain

dn: cn=ldapadm ,dc=vmnet,dc=local
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager

dn: ou = People,dc=vmnet,dc=local
objectClass: organizationalUnit
ou: People

dn: ou = Group,dc=vmnet,dc=local 
objectClass: organizationalUnit 
ou: Group

Infine, importalo nello schema OpenLDAP corrente.

[[email protected]]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f ./base.ldif
 Enter LDAP Password:
adding new entry "dc=vmnet,dc=local"

adding new entry "cn=ldapadm ,dc=vmnet,dc=local"

adding new entry "ou=People,dc=vmnet,dc=local"

adding new entry "ou=Group,dc=vmnet,dc=local"

[[email protected]]#

Step 5 - Configurare un utente OpenLDAP Enterprise.

Apri vim o il tuo editor di testo preferito e copia il seguente formato. Questo è configurato per un utente denominato "entacct" nel dominio LDAP "vmnet.local".

dn: uid=entacct,ou=People,dc=vmnet,dc=local 
objectClass: top
objectClass: account 
objectClass: posixAccount 
objectClass: shadowAccount 
cn: entacct 
uid: entacct 
uidNumber: 9999 
gidNumber: 100 
homeDirectory: /home/enyacct 
loginShell: /bin/bash 
gecos: Enterprise User Account 001 
userPassword: {crypt}x 
shadowLastChange: 17058 
shadowMin: 0 
shadowMax: 99999 
shadowWarning: 7

Ora importa i file sopra, come salvati, nello schema OpenLdap.

[[email protected]]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f entuser.ldif 
 Enter LDAP Password:
adding new entry "uid=entacct,ou=People,dc=vmnet,dc=local" 

[[email protected]]#

Prima che gli utenti possano accedere a LDAP Enterprise, è necessario assegnare una password come segue:

ldappasswd -s password123 -W -D "cn=ldapadm,dc=entacct,dc=local" -x "uid=entacct 
,ou=People,dc=vmnet,dc=local"

-s specifica la password per l'utente

-x è il nome utente a cui viene applicata la password aggiornata

-D è il * distinguished name "per l'autenticazione rispetto allo schema LDAP.

Infine, prima di accedere all'account Enterprise, controlliamo la nostra voce OpenLDAP .

[[email protected] rdc]# ldapsearch -x cn=entacct -b dc=vmnet,dc=local
 # extended LDIF
 #
 # LDAPv3
 # base <dc=vmnet,dc=local> with scope subtree
 # filter: cn=entacct
 # requesting: ALL 
 # 
 # entacct, People, vmnet.local 
dn: uid=entacct,ou=People,dc=vmnet,dc=local 
objectClass: top 
objectClass: account 
objectClass: posixAccount 
objectClass: shadowAccount 
cn: entacct 
uid: entacct 
uidNumber: 9999 
gidNumber: 100 
homeDirectory: /home/enyacct 
loginShell: /bin/bash 
gecos: Enterprise User Account 001 
userPassword:: e2NyeXB0fXg= 
shadowLastChange: 17058 
shadowMin: 0 
shadowMax: 99999 
shadowWarning: 7

La conversione di cose come / etc / passwd e / etc / groups nell'autenticazione OpenLDAP richiede l'uso di strumenti di migrazione. Questi sono inclusi nel pacchetto migrationtools . Quindi, installato in / usr / share / migrationtools .

[[email protected] openldap-servers]# ls -l /usr/share/migrationtools/
total 128
-rwxr-xr-x. 1 root root  2652 Jun  9  2014 migrate_aliases.pl
-rwxr-xr-x. 1 root root  2950 Jun  9  2014 migrate_all_netinfo_offline.sh
-rwxr-xr-x. 1 root root  2946 Jun  9  2014 migrate_all_netinfo_online.sh
-rwxr-xr-x. 1 root root  3011 Jun  9  2014 migrate_all_nis_offline.sh
-rwxr-xr-x. 1 root root  3006 Jun  9  2014 migrate_all_nis_online.sh
-rwxr-xr-x. 1 root root  3164 Jun  9  2014 migrate_all_nisplus_offline.sh
-rwxr-xr-x. 1 root root  3146 Jun  9  2014 migrate_all_nisplus_online.sh
-rwxr-xr-x. 1 root root  5267 Jun  9  2014 migrate_all_offline.sh
-rwxr-xr-x. 1 root root  7468 Jun  9  2014 migrate_all_online.sh
-rwxr-xr-x. 1 root root  3278 Jun  9  2014 migrate_automount.pl
-rwxr-xr-x. 1 root root  2608 Jun  9  2014 migrate_base.pl

Step 6 - Infine, dobbiamo consentire l'accesso al servizio slapd in modo che possa soddisfare le richieste.

firewall-cmd --permanent --add-service=ldap 
firewall-cmd --reload

Configurare l'accesso client LDAP

La configurazione dell'accesso client LDAP richiede i seguenti pacchetti sul client: openldap, client open-ldap e nss_ldap.

La configurazione dell'autenticazione LDAP per i sistemi client è un po 'più semplice.

Step 1 - Installa pacchetti dipendenti -

# yum install -y openldap-clients nss-pam-ldapd

Step 2- Configurare l'autenticazione LDAP con authconfig .

authconfig --enableldap --enableldapauth --ldapserver=10.25.0.1 --
ldapbasedn="dc=vmnet,dc=local" --enablemkhomedir --update

Step 3 - Riavvia il servizio nslcd.

systemctl restart  nslcd