dpkg-reconfigure slapd
vi permetterà di riconfigurare il database LDAP con maggiori dettagli:
falcot.com
”.
dpkg-reconfigure slapd
subito dopo la prima installazione.
$
ldapsearch -x -b dc=falcot,dc=com
# extended LDIF # # LDAPv3 # base <dc=falcot,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # falcot.com dn: dc=falcot,dc=com objectClass: top objectClass: dcObject objectClass: organization o: Falcot Corp dc: falcot # admin, falcot.com dn: cn=admin,dc=falcot,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
/etc/passwd
, /etc/group
, /etc/services
, /etc/hosts
e così via), convertire questi dati ed inserirli all'interno del database LDAP.
/etc/migrationtools/migrate_common.ph
dev'essere modificato. Le opzioni IGNORE_UID_BELOW
e IGNORE_GID_BELOW
devono essere abilitate (è sufficiente decommentarle), e DEFAULT_MAIL_DOMAIN
DEFAULT_BASE
devono essere aggiornate.
migrate_all_online.sh
, come segue:
#
cd /usr/share/migrationtools
#
PERL5LIB="${PERL5LIB}:/etc/migrationtools" LDAPADD="/usr/bin/ldapadd -c" ETC_ALIASES=/dev/null ./migrate_all_online.sh
migrate_all_online.sh
rivolge alcune domande a proposito del database LDAP nel quale si vogliono migrare i dati. Tabella 11.1 riassume le risposte fornite nel caso d'uso della Falcot.
Tabella 11.1. Le risposte fornite alle domande poste dallo script migrate_all_online.sh
Domanda | Risposta |
---|---|
X.500 naming context | dc=falcot,dc=com |
Nome host del server LDAP | localhost |
Manager DN | cn=admin,dc=falcot,dc=com |
Bind credentials | la password amministrativa |
Create DUAConfigProfile | no |
PERL5LIB
. Questo è dovuto al bug report Debian #982666.
/etc/aliases
dato che lo schema standard, come fornito da Debian, non include le strutture che utilizza questo script per descrivere gli alias delle email. Se si dovessero integrare questi dati nella directory, il file /etc/ldap/schema/misc.schema
dovrebbe essere aggiunto allo schema standard.
-c
con il comando ldapadd
: questa opzione richiede che l'elaborazione non si interrompa in caso di errori. Utilizzare questa opzione è necessario poiché convertire il database /etc/services
genera spesso qualche errore che può essere ignorato senza conseguenze.
Tabella 11.2. Configurare il pacchetto libnss-ldap:
Domanda | Risposta |
---|---|
URI (Uniform Resource Identifier) del server LDAP | ldapi://ldap.falcot.com |
Il nome distintivo per la base di ricerca | dc=falcot,dc=com |
La versione di LDAP da utilizzare | 3 |
L'account LDAP per root | cn=admin,dc=falcot,dc=com |
La password per l'account root di LDAP | la password amministrativa |
Permettere all'account amministrativo LDAP di agire come root? | yes |
Il database LDAP deve richiedere il login? | no |
/etc/nsswitch.conf
deve quindi essere modificato per poter configurare NSS in modo che utilizzi il modulo ldap
appena installato. Si può usare l'esempio fornito in /usr/share/doc/libnss-ldap/examples/nsswitch.ldap
o modificare la configurazione esistente.
Esempio 11.23. Il file /etc/nsswitch.conf
#ident $Id: nsswitch.ldap,v 2.4 2003/10/02 02:36:25 lukeh Exp $ # # An example file that could be copied over to /etc/nsswitch.conf; it # uses LDAP conjunction with files. # # "hosts:" and "services:" in this file are used only if the # /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports. # the following lines obviate the "+" entry in /etc/passwd and /etc/group. passwd: files ldap shadow: files ldap group: files ldap # consult DNS first, we will need it to resolve the LDAP host. (If we # can't resolve it, we're in infinite recursion, because libldap calls # gethostbyname(). Careful!) hosts: dns ldap # LDAP is nominally authoritative for the following maps. services: ldap [NOTFOUND=return] files networks: ldap [NOTFOUND=return] files protocols: ldap [NOTFOUND=return] files rpc: ldap [NOTFOUND=return] files ethers: ldap [NOTFOUND=return] files # no support for netmasks, bootparams, publickey yet. netmasks: files bootparams: files publickey: files automount: files # I'm pretty sure nsswitch.conf is consulted directly by sendmail, # here, so we can't do much here. Instead, use bbense's LDAP # rules ofr sendmail. aliases: files sendmailvars: files # Note: there is no support for netgroups on Solaris (yet) netgroup: ldap [NOTFOUND=return] files
ldap
è generalmente inserito prima degli altri, e sarà di conseguenza richiamato per primo. L'unica eccezione degna di nota è il servizio hosts
dato che contattare il server LDAP richiede prima la consultazione del DNS (per risolvere ldap.falcot.com
). Senza questa eccezione, la richiesta cercherebbe di contattare il server LDAP; questo causerebbe un tentativo di risoluzione del nome per il server LDAP, e così via in un ciclo infinito.
files
ignorati) i servizi possono essere configurati con la seguente sintassi:
servizio: ldap [NOTFOUND=return] files
.
/etc/environment
e /etc/default/locale
) che consentirà alle applicazioni di eseguire le autenticazioni richieste attraverso il database LDAP.
Tabella 11.3. Configurazione di libpam-ldap
Domanda | Risposta |
---|---|
Permettere all'account amministrativo LDAP di agire come root? | Sì. Questo ci consente di utilizzare il comando passwd per cambiare le password conservate nel database LDAP. |
Il database LDAP richiede il login? | no |
L'account LDAP per root: | cn=admin,dc=falcot,dc=com |
Password amministrativa LDAP: | La password amministrativa del database LDAP |
Algoritmo di crittografia locale da utilizzare per le password: | crypt |
Profili PAM da abilitare: | L'autenticazione LDAP è tra i profili abilitati |
/etc/pam.d/common-auth
, /etc/pam.d/common-password
e /etc/pam.d/common-account
. Questo meccanismo utilizza lo strumento dedicato pam-auth-update
(fornito con il pacchetto libpam-runtime). Questo strumento può anche essere eseguito dall'amministratore qualora desideri abilitare o disabilitare dei moduli PAM.
./easyrsa build-server-full ldap.falcot.com nopass
richiederà il "nome comune". La risposta deve essere il nome di dominio pienamente qualificato del server LDAP; nel nostro caso ldap.falcot.com
.
pki/issued/ldap.falcot.com.crt
; la corrispondente chiave privata è conservata nel file pki/private/ldap.falcot.com.key
.
openldap
:
#
adduser openldap ssl-cert
Adding user `openldap' to group `ssl-cert' ... Adding user openldap to group ssl-cert Done. #
mv pki/private/ldap.falcot.com.key /etc/ssl/private/ldap.falcot.com.key
#
chown root.ssl-cert /etc/ssl/private/ldap.falcot.com.key
#
chmod 0640 /etc/ssl/private/ldap.falcot.com.key
#
mv pki/issued/ldap.falcot.com.crt /etc/ssl/certs/ldap.falcot.com.pem
#
chown root.root /etc/ssl/certs/ldap.falcot.com.pem
#
chmod 0644 /etc/ssl/certs/ldap.falcot.com.pem
slapd
di usare queste chiavi per la crittografia. La configurazione del server LDAP è gestita dinamicamente: la configurazione può essere aggiornata con le normali operazioni LDAP sulla gerarchia di oggetti cn=config
, ed il server aggiornerà /etc/ldap/slapd.d
in tempo reale per rendere la configurazione persistente. ldapmodify
è quindi lo strumento giusto per aggiornare la configurazione:
Esempio 11.24. Configurare slapd
per la cifratura
#
cat >ssl.ldif <<END dn: cn=config changetype: modify add: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/ssl/private/ldap.falcot.com.key - add: olcTLSCertificateFile olcTLSCertificateFile: /etc/ssl/certs/ldap.falcot.com.pem END
#
ldapmodify -Y EXTERNAL -H ldapi:/// -f ssl.ldif
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config" #
systemctl restart slapd.service
#
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config -s base | grep TLS
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 olcTLSCertificateFile: /etc/ssl/certs/ldap.falcot.com.pem olcTLSCertificateKeyFile: /etc/ssl/certs/ldap.falcot.com.key
SLAPD_SERVICES
nel file /etc/default/slapd
. Inoltre, per essere prudenti, si renderà necessario disabilitare l'LDAP non sicuro.
Esempio 11.25. Il file /etc/default/slapd
# Default location of the slapd.conf file or slapd.d cn=config directory. If # empty, use the compiled-in default (/etc/ldap/slapd.d with a fallback to # /etc/ldap/slapd.conf). SLAPD_CONF= # System account to run the slapd server under. If empty the server # will run as root. SLAPD_USER="openldap" # System group to run the slapd server under. If empty the server will # run in the primary group of its user. SLAPD_GROUP="openldap" # Path to the pid file of the slapd server. If not set the init.d script # will try to figure it out from $SLAPD_CONF (/etc/ldap/slapd.d by # default) SLAPD_PIDFILE= # slapd normally serves ldap only on all TCP-ports 389. slapd can also # service requests on TCP-port 636 (ldaps) and requests via unix # sockets. # Example usage: # SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:/// ldapi:///" SLAPD_SERVICES="ldaps:/// ldapi:///" # If SLAPD_NO_START is set, the init script will not start or restart # slapd (but stop will still work). Uncomment this if you are # starting slapd via some other means or if you don't want slapd normally # started at boot. #SLAPD_NO_START=1 # If SLAPD_SENTINEL_FILE is set to path to a file and that file exists, # the init script will not start or restart slapd (but stop will still # work). Use this for temporarily disabling startup of slapd (when doing # maintenance, for example, or through a configuration management system) # when you don't want to edit a configuration file. SLAPD_SENTINEL_FILE=/etc/ldap/noslapd # For Kerberos authentication (via SASL), slapd by default uses the system # keytab file (/etc/krb5.keytab). To use a different keytab file, # uncomment this line and change the path. #export KRB5_KTNAME=/etc/krb5.keytab # Additional options to pass to slapd SLAPD_OPTIONS=""
ldaps://
.
/usr/local/share/ca-certificates
ed eseguendo update-ca-certificates
.
#
cp pki/ca.crt /usr/local/share/ca-certificates/falcot.crt
#
update-ca-certificates
Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... Adding debian:falcot.pem done. done.
/etc/ldap/ldap.conf
. Ciò farà risparmiare un bel po' di battitura.
Esempio 11.26. Il file /etc/ldap/ldap.conf
# # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. #BASE dc=example,dc=com #URI ldap://ldap.example.com ldap://ldap-provider.example.com:666 #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never # TLS certificates (needed for GnuTLS) TLS_CACERT /etc/ssl/certs/ca-certificates.crt