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
. Isso é devido ao reporte de bug Debian #982666.
/etc/aliases
deliberadamente, já que o schema padrão, como o fornecido pelo Debian não inclui as estruturas que esse script usa para descrever "email aliases". Se quisermos integrar esse dado no diretório, o arquivo /etc/ldap/schema/misc.schema
deve ser adicionado ao schema padrão.
-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. Configurando o pacote libnss-ldap:
Questão | Resposta |
---|---|
Servidor LDAP 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 |
Conta LDAP para root: | cn=admin,dc=falcot,dc=com |
a senha administrativa do LDAP: | A senha do banco de dados administrativo LDAP |
Algorítimo de criptografia local para ser usado em senhas: | crypt |
Perfil PAM a habilitar: | Autenticação LDAP está entre os perfis habilitados |
/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
e executando 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