GNU/Linux >> Linux Esercitazione >  >> Debian

Come configurare il server OpenLDAP su Debian 10

In qualità di amministratore di sistema, probabilmente hai già familiarità con il protocollo LDAP .

Se lavori in un'azienda di dimensioni medio-grandi, puoi essere certo che la tua azienda possiede già un server LDAP , sia su Linux che su Windows.

Inventato nei primi anni '80, il protocollo LDAP (per Lightweight Directory Access Protocol ) è stato creato per archiviare i dati a cui è necessario accedere tramite una rete.

Il protocollo LDAP è stato definito come parte della specifica RFC 4511 ed è stato implementato da molti fornitori diversi.

In questo tutorial, esamineremo una delle implementazioni del protocollo LDAP:OpenLDAP .

OpenLDAP è un'implementazione gratuita e open source di LDAP che fornisce un server (chiamato slapd) oltre a utilità e librerie per gli sviluppatori.

Usando questo tutorial, sarai in grado di configurare un server OpenLDAP completo e configurarlo per usarlo per l'autenticazione centrale.

Cosa imparerai

Se segui questo tutorial fino alla fine, potrai conoscere i seguenti argomenti:

  • Come installare un server OpenLDAP su Debian 10;
  • Come configurare OpenLDAP e cosa significa effettivamente la configurazione;
  • Come usare LDIF e utilità LDAP per modificare il database LDAP;
  • Come aggiungere utenti al tuo server OpenLDAP per l'autenticazione centralizzata;
  • Come configurare i client e come funziona l'autenticazione centrale su Linux;

È un articolo piuttosto lungo, quindi, senza ulteriori indugi, iniziamo installando un semplice server OpenLDAP su Debian 10.

Installa il server OpenLDAP su Debian 10

Prima di iniziare, assicurati di disporre dei diritti di amministratore sul tuo sistema:ti serviranno per installare nuovi pacchetti.

Per verificare se disponi dei diritti sudo, esegui il comando "sudo" con l'opzione "-v".

$ sudo -v

Se non sei sicuro di come fornire i diritti sudo per gli utenti su Debian 10 o CentOS 8, assicurati di leggere le nostre guide dedicate a riguardo.

Inoltre, assicurati che i tuoi pacchetti siano aggiornati correttamente per ottenere l'ultima versione del pacchetto dai repository.

$ sudo apt-get update

Su Linux, il server OpenLDAP è chiamato "slapd “.

È un server autonomo semplice e configurabile utilizzato per leggere, modificare ed eliminare da una directory LDAP.

Il demone slapd include anche molte utilità diverse che possono essere utilizzate per creare facilmente nuove voci o per modificare facilmente le voci:slapadd o slappasswd solo per citarne alcune.

$ sudo apt-get install slapd

Quando installi questo nuovo pacchetto, ti verrà chiesto di configurare il demone slapd al termine dell'installazione.

Configurazione di slapd su Debian 10

La configurazione slapd si presenta come interfacce basate su testo che devi compilare per configurare correttamente il server.

Innanzitutto, ti viene chiesto di fornire una password di amministratore per il server LDAP.

Scegli una password protetta perché la voce dell'amministratore nella directory LDAP ha tutti i diritti sull'intero albero:aggiungi, elimina e modifica tutte le voci oltre a leggere tutti gli attributi LDAP.

Nella schermata successiva, ti viene chiesto di confermare la password:digita semplicemente ciò che hai digitato nella schermata precedente.

Da lì, il tuo server LDAP dovrebbe essere inizializzato .

Quando si installa il server slapd, l'installazione anche:

  • Creato un utente chiamato “openldap ” sul tuo server;
  • Creata una configurazione iniziale disponibile in /etc/ldap
  • Creato un database iniziale e vuoto che è pronto ad accettare nuove voci.

Per impostazione predefinita, il server OpenLDAP creerà una prima voce di database che riflette il tuo nome di dominio corrente.

Tuttavia, se non hai configurato correttamente il tuo nome di dominio (ad esempio durante l'installazione), è possibile che il tuo server OpenLDAP sia configurato male.

Per dare una prima occhiata alla configurazione iniziale del tuo server OpenLDAP, usa il comando "slapcat" e osserva i nomi distinti creati da slapd.

$ sudo slapcat

$ sudo slapcat | grep dn

Di solito, i tuoi DN principali OpenLDAP dovrebbero corrispondere ai nomi DNS del tuo dominio.

Significa che se stai attualmente lavorando nel dominio "devconnected.com", il tuo server OpenLDAP dovrebbe avere i migliori nomi distinti "dc=devconnected,dc=com".

Come puoi vedere, per ora non è così, ma fortunatamente per noi c'è un modo per riconfigurare il demone slapd.

Riconfigurazione di slapd utilizzando dpkg-reconfigure

Per riconfigurare il demone slapd, eseguire il comando “dpkg-reconfigure ” sul demone “slapd”. Ancora una volta, hai bisogno dei privilegi sudo per riconfigurare slapd.

$ sudo dpkg-reconfigure slapd

Innanzitutto, ti viene chiesto se desideri omettere la configurazione del server OpenLDAP.

Ovviamente vogliamo premere "No" su questa opzione perché vogliamo che venga creata per noi la configurazione iniziale del database.

Nel passaggio successivo, ti viene chiesto di fornire il nome distinto di base del tuo server LDAP.

Come puoi vedere, il demone slapd descrive che il nome di dominio DNS viene utilizzato per costruire il DN di base della tua directory OpenLDAP.

In questo caso, scegliamo di avere “dc=devconnected,dc=com” :nota che devi modificare questa voce in modo che corrisponda alle tue impostazioni DNS correnti.

Se non sei sicuro del dominio a cui appartieni, usa semplicemente il comando "nomedominio" nel tuo terminale.

$ domainname
devconnected.com

Successivamente, ti viene chiesto di fornire il nome della tua organizzazione . Questo è esattamente lo stesso passaggio di quello fatto prima, digita semplicemente il nome della tua organizzazione e premi "Ok".

Infine, analogamente alla prima configurazione slapd, ti viene chiesto di fornire credenziali di amministratore per il tuo server LDAP .

Ancora una volta, scegli una password complessa in quanto può essere utilizzata per leggere e modificare ogni singola voce nella directory LDAP.

Nella schermata successiva, ti viene chiesto di fornire il back-end che verrà utilizzato da LDAP.

Per questo passaggio, desideri mantenere i valori predefiniti (ovvero un MDB per il back-end MariaDB) a meno che tu non abbia un motivo per scegliere un altro back-end di archiviazione.

Successivamente, ti viene chiesto se desideri rimuovere il database quando slapd viene eliminato.

In questo caso, sceglieremo "No" :ci sono molte situazioni in cui vuoi semplicemente aggiornare il tuo pacchetto slapd o passare a un server LDAP diverso.

Se scegli sì, il tuo database verrà rimosso, il che può essere un vero problema se non hai alcun backup della tua directory LDAP.

Infine, ti viene chiesto con un avviso:ci sono già alcuni file in “/var/lib” directory del tuo server.

In questa directory, hai attualmente archiviato il tuo vecchio database. Mentre stai tentando di riconfigurare il tuo server OpenLDAP, sovrascriverai il contenuto di questa cartella.

Scegliendo "Sì", l'utilità slapd effettuerà il backup del contenuto del database esistente nella cartella "/var/backups".

Fatto!

Il tuo server slapd è ora configurato correttamente per corrispondere alle tue attuali impostazioni DNS.

Per dare una prima occhiata al contenuto del tuo database LDAP, esegui semplicemente "slapcat" (con privilegi sudo se non sei attualmente registrato come root)

$ sudo slapcat

Con questa configurazione iniziale :

  • I tuoi file di configurazione sono memorizzati in “/etc/ldap” :stanno memorizzando il file di configurazione ldap, gli schemi che puoi aggiungere a slapd, nonché la directory slapd.d utilizzata per la personalizzazione del server;
  • Il tuo database è memorizzato in “/var/lib/ldap” sotto il database “data.mdb” :dovresti probabilmente impostare i backup di questo file per assicurarti di non perdere tutto.

Configurazione delle regole del firewall per LDAP

Se stai utilizzando un firewall, è molto probabile che dovrai accettare le richieste in entrata al tuo server LDAP.

Come rapido promemoria, OpenLDAP viene eseguito sulla porta 389.

Per assicurarti che funzioni correttamente, esegui il comando "systemctl status" sul server "slapd".

$ sudo systemctl status slapd

Se stai usando distribuzioni recenti di Debian, probabilmente stai usando UFW come firewall predefinito.

Per abilitare OpenLDAP su UFW, esegui il comando "ufw allow" sulla porta 389 del tuo server. Puoi accettare connessioni TCP e UDP tutte insieme.

$ sudo ufw allow 389

Rule added
Rule added (v6)

È quindi possibile verificare che la regola sia stata creata correttamente utilizzando il comando di stato.

Nella prossima sezione, vedremo come aggiungere facilmente nuove voci al tuo server LDAP utilizzando i file LDIF.

Aggiungi voci OpenLDAP utilizzando file LDIF

Quando aggiungi nuove voci al tuo server OpenLDAP, puoi usare l'utilità "slapadd" per aggiungere un nuovo file LDIF.

Tuttavia, questa non è l'utilità che useremo, invece useremo "ldapadd".

Differenza tra slapadd e ldapadd

Prima di aggiungere nuove voci, è importante conoscere la differenza tra utilità slap e utilità ldap.

Entrambe le utilità prendono i file formattati LDIF come argomento e avevano il contenuto nel database.

Tuttavia, quando utilizzi slapadd, dovrai riavviare il tuo server LDAP per le modifiche da applicare.

Questo non è il caso quando si utilizzano utility ldap come “ldapadd” :le modifiche vengono eseguite direttamente sull'albero delle directory.

Per poter usare “ldapadd”, “ldapsearch” e altre utilità LDAP, devi installare il pacchetto “ldap-utils” sul tuo sistema.

$ sudo apt-get install ldap-utils

Creazione del tuo primo file LDIF

Come spiegato in precedenza, se stai utilizzando la linea console, avrai bisogno di creare file LDIF e aggiungili alla configurazione o al database LDAP corrente.

Il formato LDIF è un formato utilizzato per aggiungere o modificare voci esistenti in una directory LDAP.

Utilizzando LDIF, specifichi il nome distinto del nodo che desideri modificare e descrivi le modifiche da eseguire.

Ad esempio, supponiamo che tu voglia creare un nuovo nodo nella tua directory LDAP chiamato "users".

Aggiunta di un gruppo di utenti

Per ottenere ciò, crea un nuovo file LDIF denominato "users.ldif" e aggiungi il seguente contenuto.

$ sudo touch /etc/ldap/users.ldif

# Content of the users file

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

Come puoi vedere, ci viene fornito il DN completo del nodo da aggiungere, specifichiamo la classe dell'oggetto e il nome del nodo da creare.

Per aggiungere questa voce alla tua directory LDAP, devi usare il comando “ldapadd” e specificare il file LDIF da usare.

$ sudo ldapadd -D "cn=admin,dc=devconnected,dc=com" -W -H ldapi:/// -f users.ldif

Enter LDAP Password:
added new entry "ou=People,dc=devconnected,dc=com"

Se non hai familiarità con le opzioni dell'utilità ldap, ecco una descrizione delle opzioni fornite :

  • -D :utilizzato per specificare un nodo a cui collegarsi. Quando aggiungi nuove voci a un server LDAP, puoi scegliere il tuo meccanismo di autenticazione ma di solito vuoi collegarti al nodo admin per ottenere tutti i privilegi sull'albero;
  • -W :utilizzato per specificare che si desidera che la password venga richiesta durante la connessione;
  • -H :utilizzato per specificare il server LDAP a cui connettersi. In questo caso, ci stiamo connettendo a un server LDAP disponibile su localhost;
  • -f :per specificare il file LDIF da aggiungere al server LDAP.

Nota che non puoi utilizzare un'autenticazione esterna per aggiungere nuove voci a LDAP per impostazione predefinita:gli ACL non sono configurati per farlo.

Ora che il tuo nodo è stato aggiunto al tuo albero, puoi provare a trovarlo usando il comando "ldapsearch".

$ sudo ldapsearch -x -b "dc=devconnected,dc=com" ou

Ottimo!

Ora che è stata aggiunta l'unità organizzativa "Persone", aggiungiamo alcuni utenti al tuo albero LDAP.

Aggiunta di nuovi utenti a LDAP

Per aggiungere nuovi utenti, seguiremo la stessa logica:creare un file LDIF contenente singole voci per gli utenti.

Come descritto in precedenza, OpenLDAP utilizza schemi per definire “oggetti ” che può essere aggiunto alla directory.

In questo caso, utilizzeremo lo schema "posixAccount" che è già stato aggiunto alla configurazione del database per impostazione predefinita.

Il "Account posix ” ha diversi campi che possono essere utilizzati per descrivere un account utente Linux come il nome utente, il cognome ma soprattutto la password utente .

Crea un nuovo file LDIF e aggiungi il seguente contenuto:

$ sudo touch /etc/ldap/new_users.ldif

# Content of new_users LDIF file

dn: cn=john,ou=People,dc=devconnected,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: john
uid: john
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/john
userPassword: <password>
loginShell: /bin/bash

Quando hai finito, salva il tuo file e usa il comando ldapadd per aggiungere la tua voce all'albero delle directory LDAP.

$ sudo ldapadd -D "cn=admin,dc=devconnected,dc=com" -W -H ldapi:/// -f new_users.ldif

Enter LDAP Password:
added new entry "cn=john,ou=People,dc=devconnected,dc=com"

Congratulazioni, ora hai il tuo primo utente archiviato in OpenLDAP.

È possibile leggere le informazioni sull'utente emettendo un comando di ricerca LDAP. Tieni presente che non sarai in grado di leggere la password dell'utente poiché sei limitato da ACL.

$ sudo ldapsearch -x -b "ou=People,dc=devconnected,dc=com"

Fantastico, ora che il tuo server LDAP è configurato, configuriamo un client per configurare l'autenticazione centrale.

Configurazione dei client LDAP per l'autenticazione centralizzata

Nell'ultima sezione di questa configurazione del server OpenLDAP, vedremo come configurare i client LDAP (ovvero le tue macchine host) in modo che si connettano utilizzando le informazioni LDAP.

Come funziona l'autenticazione client LDAP

Prima di impartire qualsiasi comando, è importante che tu abbia una comprensione globale di ciò che stiamo effettivamente costruendo.

Prima di LDAP (e NIS), se volevi configurare utenti e raggruppare le autorizzazioni su più computer di una rete, dovevi connetterti a loro uno per uno e modificarne le impostazioni.

LDAP è un'ottima soluzione per questo:LDAP centralizzerà le informazioni degli utenti in un unico posto sulla tua rete.

Quando un client si connette a qualsiasi macchina del tuo dominio, l'host contatterà prima il server LDAP e verificherà che la password utente fornita sia corretta.

La libreria client legherà (o autenticherà) al server LDAP remoto utilizzando l'account amministratore e recuperare le informazioni associate all'utente che tenta di connettersi.

Successivamente, recupererà la password associata all'account e la confronterà con la password che hai digitato al momento dell'accesso.

Se le password corrispondono, verrai registrato nel tuo account, altrimenti ti verrà negato.

Imposta l'autenticazione LDAP del client su Debian

Per configurare l'autenticazione LDAP del client, dovrai installare "libnss-ldap ” pacchetto sul tuo client.

$ sudo apt-get install libnss-ldap

Durante l'installazione di questo pacchetto, ti verranno richieste molte domande diverse per configurare l'autenticazione centralizzata del client.

Per prima cosa ti viene chiesto di fornire l'URL del tuo server LDAP:si consiglia di impostare un indirizzo IP (configurato ovviamente come statico) per evitare problemi nelle risoluzioni DNS.

Sul server, identifica il tuo indirizzo IP con il comando ip e compila il campo corrispondente sul client.

# On the server

$ ip a

Nota :assicurati di utilizzare il protocollo LDAP e non il protocollo LDAPI. Per qualche motivo, il tuo server non sarà raggiungibile se utilizzi il protocollo LDAPI.

Successivamente, ti viene chiesto di fornire il nome distinto radice del tuo server LDAP . Se non sei sicuro, dovresti eseguire un comando ldapsearch sul server per ottenere queste informazioni.

Nella schermata successiva, ti viene richiesta la versione LDAP che desideri utilizzare:scegli la versione 3 di LDAP per ora.

Successivamente, ti viene chiesto se desideri rendere la radice locale l'amministratore del database.

Vuoi digitare "Sì" a questa opzione in quanto si desidera modificare la password dell'utente direttamente dalla macchina host.

Con questa opzione, sarai in grado di eseguire "passwd" e modificare la password direttamente nella directory LDAP, il che è piuttosto utile.

Per impostazione predefinita, il database LDAP non richiede un accesso, quindi puoi digitare "No" su questa opzione.

Nota :il database LDAP non ha accesso ma hai un account amministratore nella parte superiore della tua directory LDAP. Sono due concetti diversi, molto diversi l'uno dall'altro.

Quindi, digita l'account amministratore LDAP da utilizzare per le legature.

Come promemoria, questo è l'account che verrà utilizzato per ottenere le informazioni sulla password dell'utente dal server.

Infine, digita la password associata all'account amministratore sul server LDAP.

Fatto, ora dovresti essere in grado di interrogare il tuo server LDAP.

Collegamento delle informazioni del cliente a LDAP

Per collegare le informazioni del tuo client (come nome utente e password) alla directory LDAP, devi modificare il file nsswitch.

Come promemoria, il file nsswitch viene utilizzato per collegare alcune informazioni sul tuo sistema (come utenti, gruppi o host) a diverse fonti (locali, LDAP, NIS o altre).

Modifica il file /etc/nsswitch.conf e aggiungi una voce "ldap" alle prime quattro sezioni:passwd, group, shadow, gshadow.

$ sudo nano /etc/nsswitch.conf

Salva il tuo file e ora dovresti essere in grado di elencare gli utenti dal server LDAP.

$ getent passwd

Nota :se non hai dimestichezza con il comando getent, ecco tutti i comandi usati per elencare gli utenti su Linux.

Eccezionale!

Ora che il tuo utente può essere recuperato tramite LDAP, potrai accedere a questo account utilizzando la password utente che hai specificato nella directory LDAP.

$ su - john

<Type password specified in LDAP>

[email protected]:/home/john

Conclusione

In questo tutorial, hai imparato come impostare facilmente un semplice server OpenLDAP su Debian 10 utilizzando l'utilità slapd.

Hai anche imparato a conoscere le utilità LDAP che puoi utilizzare per aggiungere e cercare voci nella tua directory LDAP.

Infine, hai visto come configurare le macchine client per utilizzare l'autenticazione LDAP per la connessione alle tue macchine.

Questa è un'architettura che può essere utilizzata nella maggior parte delle architetture IT aziendali:tieni presente che dovrai impostare la crittografia TLS in modo che le password non vengano trasmesse sulla rete in chiaro.

Se sei interessato all'amministrazione del sistema Linux, abbiamo una sezione completa dedicata ad esso sul sito Web, quindi assicurati di dare un'occhiata!


Debian
  1. Come abilitare SSH su Debian 9 o 10

  2. Come installare OpenLDAP Server su Debian o Ubuntu

  3. Come configurare il server Rsyslog su Debian 11

  4. Come installare Redis Server su Debian 11

  5. Come installare MySQL 8.0 / 5.7 su Debian 11 / Debian 10

Come configurare Symfony 4 su Debian 9 Server

Come installare MySQL 8 su Debian 10

Installa e configura OpenLDAP su Ubuntu 16.04 / Debian 8

Come configurare il server NFS su Debian 9 / Ubuntu 16.04 / LinuxMint 18

Come installare Todoman sul server Debian 11

Procedura:configurazione iniziale del server Debian 8.2