dpkg-reconfigure slapd
permitirá reconfigurar o banco de dados LDAP com mais detalhes:
falcot.com
”.
dpkg-reconfigure slapd
logo após a instalação inicial.
$
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 mais), converter seus dados, e injetá-los em um banco de dados LDAP.
/etc/migrationtools/migrate_common.ph
tem que ser editado; as opções IGNORE_UID_BELOW
e IGNORE_GID_BELOW
precisam ser habilitadas (descomentá-las é suficiente), e DEFAULT_MAIL_DOMAIN
/DEFAULT_BASE
precisa ser atualizada.
migrate_all_online.sh
, como a seguir:
#
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
faz algumas perguntas sobre o banco de dados LDAP para o qual os dados serão migrados. Tabela 11.1 resume as respostas dadas no caso da Falcot.
Tabela 11.1. Responda as perguntas feitas pelo script migrate_all_online.sh
Questão | Resposta |
---|---|
Contexto de nome X.500 | dc=falcot,dc=com |
Nome do servidor LDAP | localhost |
Gerenciando o DN | cn=admin,dc=falcot,dc=com |
Credenciais Bind | a senha administrativa |
Criar DUAConfigProfile | não |
PERL5LIB
variable. This is due to Debian bug report #982666.
/etc/aliases
file, since the standard schema as provided by Debian does not include the structures that this script uses to describe email aliases. Should we want to integrate this data into the directory, the /etc/ldap/schema/misc.schema
file should be added to the standard schema.
-c
do comando ldapadd
; essa opção faz com que o processamento não pare em caso de erro. O uso dessa opção é necessário porque a conversão do /etc/services
geralmente gera alguns erros que podem ser ignorados com segurança.
Tabela 11.2. Configuring the libnss-ldap package:
Questão | Resposta |
---|---|
LDAP server URI (Uniform Resource Identifier) | ldapi://ldap.falcot.com |
Nome distinto da base de pesquisa | dc=falcot,dc=com |
Versão LDAP para usar | 3 |
Conta LDAP para root | cn=admin,dc=falcot,dc=com |
A senha da conta de root do LDAP | a senha administrativa |
Permitir que a conta administrativa do LDAP se comporte como root local? | sim |
O banco de dados LDAP precisa de um login? | não |
/etc/nsswitch.conf
precisa então ser modificado para configurar o NSS para usar o recém-instalado módulo ldap
. Você pode usar o exemplo fornecido em /usr/share/doc/libnss-ldap/examples/nsswitch.ldap
ou editar sua configuração existente.
Exemplo 11.23. O arquivo /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
usualmente é inserido antes dos outros, e ele irá então ser consultado primeiro. A notável exceção é o serviço hosts
já que contactar o servidor LDAP requer consultar o DNS primeiro (para resolver ldap.falcot.com
). Sem essa exceção, uma consulta de hostname iria recair ao servidor LDAP; isso iria disparar uma resolução de nome ao servidor LDAP, e cairia em um loop infinito.
files
desconsiderados), serviços podem ser configurados com a seguinte sintaxe:
serviço: ldap [NOTFOUND=return] files
.
/etc/environment
e /etc/default/locale
) que irá permitir as aplicações realizarem as autenticações necessárias no banco de dados LDAP.
Tabela 11.3. Configuração do libpam-ldap
Questão | Resposta |
---|---|
Permitir a conta administrativa do LDAP se comportar como o root local? | Sim. Isto permite usar o comando usual passwd para modificar as senhas armazenadas no banco de dados LDAP. |
O banco de dados LDAP necessita estar logado? | não |
LDAP account for root: | cn=admin,dc=falcot,dc=com |
LDAP administrative password: | A senha do banco de dados administrativo LDAP |
Local encryption algorithm to use for passwords: | crypt |
PAM profiles to enable: | LDAP Authentication is among the enabled profiles |
/etc/pam.d/common-auth
, /etc/pam.d/common-password
e /etc/pam.d/common-account
. Esse mecanismo usa a ferramenta dedicada pam-auth-update
(fornecida pelo pacote libpam-runtime). Essa ferramenta pode também ser rodada pelo administrador caso ele queira habilitar ou desabilitar módulos PAM.
./easyrsa build-server-full ldap.falcot.com nopass
você será perguntado(a) sobre um “common name” (nome comum). A resposta para a pergunta deve ser um nome de máquina completamente qualificado para o servidor LDAP; em nosso caso, ldap.falcot.com
.
pki/issued/ldap.falcot.com.crt
; a chave privada correspondente é armazenada em 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
também precisa ser informado para usar essas chaves para criptografia. A configuração do servidor LDAP é gerenciada dinamicamente: a configuração pode ser atualizada através de operações normais do LDAP no objeto hierárquico cn=config
, e o servidor atualiza o /etc/ldap/slapd.d
em tempo real para fazer com que a configuração seja persistente. ldapmodify
é, assim, a ferramenta certa para atualizar a configuração:
Exemplo 11.24. Configurando slapd
para criptografia
#
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
no arquivo /etc/default/slapd
. Nós vamos torná-lo seguro e desabilitar o LDAP inseguro de uma vez só.
Exemplo 11.25. O nome /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
and running 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
. Isso irá evitar, consideravelmente, digitação.
Exemplo 11.26. O arquivo /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