Installazione di un server ldap

By | giugno 28, 2014

Presentazione di LDAP

LDAP è l’acronimo di Lightweight Directory Access Protocol. È un protocollo aperto per l’accesso e il mantenimento di servizi di informazioni di directory distribuite su una rete IP (fonte wikipedia).

Qui è usato per facilitare l’amministrazione dell’account utente. Anziché archiviare gli account utente localmente su ciascun server, la directory LDAP li memorizza globalmente e li rende disponibili per un gruppo di server.

Questo tutorial non spiega come configurare l’Automounter e i servizi NFS. È stato testato per RHEL 7.0, RHEL 7.1 e RHEL 7.2 (versioni non patch).

Durante questo tutorial, prova a seguire le istruzioni in modo molto preciso perché la sintassi LDAP è talvolta ingombrante (distinzione tra maiuscole e minuscole, spazio, ecc.) E soggetta a errori (dn/dc/cn).

Supponiamo di utilizzare il dominio example.com e il nome host instructor.example.com (questo nome host dovrebbe essere risolto dal file /etc/hosts o dal DNS).

Procedura di Installazione

Installa i seguenti pacchetti:

# yum install -y openldap openldap-clients openldap-servers migrationtools

Genera una password LDAP da una chiave segreta (qui redhat):

# slappasswd -s redhat -n > /etc/openldap/passwd

Genera un certificato X509 valido per 365 giorni:

# openssl req -new -x509 -nodes -out /etc/openldap/certs/cert.pem \
-keyout /etc/openldap/certs/priv.pem -days 365
Generating a 2048 bit RSA private key
.....+++
..............+++
writing new private key to '/etc/openldap/certs/priv.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:instructor.example.com
Email Address []:

Proteggi il contenuto della directory /etc/openldap/certs:

# cd /etc/openldap/certs
# chown ldap:ldap *
# chmod 600 priv.pem

Preparare il database LDAP:

# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

Genera un file database (non preoccuparti dei messaggi di errore!):

# slaptest
53d61aab hdb_db_open: database "dc=my-domain,dc=com": db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2).
53d61aab backend_startup_one (type=hdb, suffix="dc=my-domain,dc=com"): bi_db_open failed! (2)
slap_startup failed (test would succeed using the -u switch)

Modifica della proprietà del database LDAP:

# chown ldap:ldap /var/lib/ldap/*

Attiva il servizio slapd all’avvio:

# systemctl enable slapd

Avvia il servizio slapd:

# systemctl start slapd

Controlla l’attività LDAP:

# netstat -lt | grep ldap
tcp        0      0 0.0.0.0:ldap            0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:ldap               [::]:*                  LISTEN

In alternativa, puoi usare: # ss -ltap | grep ldap

Per avviare la configurazione del server LDAP, aggiungere gli schemi LDAP cosine & nis:

# cd /etc/openldap/schema
# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"
# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f nis.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config"

Quindi, crea il file /etc/openldap/changes.ldif e incolla le seguenti righe (sostituisci PASSWORD con la password creata in precedenza come {SSHA} l8A+0c+lRcymtWuIFbbc3EJ1PRZz9mGg):

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
replace: olcRootPW
olcRootPW: PASSWORD

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

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

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: -1

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

Nota: un problema con olcTLSCertificateFile e olcTLSCertificateKeyFile è stato segnalato nelle versioni recenti di OpenLDAP (dettagli) in arrivo con RHEL 7.5; questi attributi devono essere modificati allo stesso tempo:

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/cert.pem
-
replace: olcTLSCertificateKeyFile 
olcTLSCertificateKeyFile: /etc/openldap/certs/priv.pem

Invia la nuova configurazione al server slapd:

# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/changes.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"
modifying entry "cn=config"
modifying entry "cn=config"
modifying entry "cn=config"
modifying entry "olcDatabase={1}monitor,cn=config"

Creare il file /etc/openldap/base.ldif e incollare le seguenti righe:

dn: dc=example,dc=com
dc: example
objectClass: top
objectClass: domain

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

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

Costruisci la struttura del servizio di directory:

# ldapadd -x -w redhat -D cn=Manager,dc=example,dc=com -f /etc/openldap/base.ldif
adding new entry "dc=example,dc=com"
adding new entry "ou=People,dc=example,dc=com"
adding new entry "ou=Group,dc=example,dc=com"

Nota: se hai il seguente messaggio di errore “ldap_bind: credenziali non valide (49)“, verifica che la riga della password sia corretta e riesegui ldapmodify -Y EXTERNAL -H ldapi: /// -f /etc/openldap/changes.ldif se non.

Ad esempio: olcRootPW: {SSHA} l8A+0c+lRcymtWuIFbbc3EJ1PRZz9mGg

Crea due utenti per il test:

# mkdir /home/guests
# useradd -d /home/guests/ldapuser01 ldapuser01
# passwd ldapuser01
Changing password for user ldapuser01.
New password: user01ldap
Retype new password: user01ldap
passwd: all authentication tokens updated successfully.
# useradd -d /home/guests/ldapuser02 ldapuser02
# passwd ldapuser02
Changing password for user ldapuser02.
New password: user02ldap
Retype new password: user02ldap
passwd: all authentication tokens updated successfully.

Migrazione dell’account utente

Vai alla directory per la migrazione degli account utente:

# cd /usr/share/migrationtools

Modifica il file migrate_common.ph e sostituisci le seguenti righe:

$DEFAULT_MAIL_DOMAIN = "example.com";
$DEFAULT_BASE = "dc=example,dc=com";

Crea gli utenti correnti nel servizio di directory:

# grep ":10[0-9][0-9]" /etc/passwd > passwd
# ./migrate_passwd.pl passwd users.ldif
# ldapadd -x -w redhat -D cn=Manager,dc=example,dc=com -f users.ldif
adding new entry "uid=ldapuser01,ou=People,dc=example,dc=com"
adding new entry "uid=ldapuser02,ou=People,dc=example,dc=com"
# grep ":10[0-9][0-9]" /etc/group > group
# ./migrate_group.pl group groups.ldif
# ldapadd -x -w redhat -D cn=Manager,dc=example,dc=com -f groups.ldif
adding new entry "cn=ldapuser01,ou=Group,dc=example,dc=com"
adding new entry "cn=ldapuser02,ou=Group,dc=example,dc=com"

Testare la configurazione con l’utente chiamato ldapuser01:

# ldapsearch -x cn=ldapuser01 -b dc=example,dc=com

Configurazione del firewall

Aggiungi un nuovo servizio al firewall (ldap: port tcp 389):

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

Ricarica la configurazione del firewall:

# firewall-cmd --reload

Modifica il file /etc/rsyslog.conf e aggiungi la seguente riga:

local4.* /var/log/ldap.log

Riavvia il servizio rsyslog:

# systemctl restart rsyslog

One thought on “Installazione di un server ldap

  1. Pingback: Altri Requisiti per conseguire l' RHCSA - prometheusproject

Comments are closed.