dpkg-reconfigure slapd
позволит вам перенастроить базу данных LDAP более детально:
falcot.com
”.
dpkg-reconfigure slapd
сразу после первоначальной установки.
$
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
и так далее), преобразования этих данных и внедрения их в базу данных LDAP.
/etc/migrationtools/migrate_common.ph
необходимо редактировать; опции IGNORE_UID_BELOW
и IGNORE_GID_BELOW
должны быть включены (достаточно раскомментировать их), и DEFAULT_MAIL_DOMAIN
/DEFAULT_BASE
необходимо обновить.
migrate_all_online.sh
как указано далее:
#
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
задаёт несколько вопросов о базе данных LDAP, в которую необходимо перенести данные. Таблица 11.1 суммирует ответы, данные в сценарии использования Falcot.
Таблица 11.1. Ответы на вопросы, заданные скриптом migrate_all_online.sh
Вопрос | Ответ |
---|---|
X.500 контекст именования | dc=falcot,dc=com |
LDAP сервер имя хоста | localhost |
Manager DN | cn=admin,dc=falcot,dc=com |
Привязать учётные данные | пароль администратора |
Создать DUAConfigProfile | нет |
PERL5LIB
. Это связано с отчетом об ошибке Debian № 982666.
/etc/aliases
, поскольку стандартная схема, предоставляемая Debian, не включает структуры, которые этот сценарий использует для описания псевдонимов электронной почты. Если мы захотим интегрировать эти данные в каталог, файл /etc/ldap/schema/misc.schema
следует добавить в стандартную схему.
-c
вариант для команды ldapadd
; эта опция требует, чтобы обработка не останавливалась в случае ошибки. Использование этой опции необходимо, поскольку преобразование /etc/services
часто генерирует несколько ошибок, которые можно безопасно игнорировать.
Таблица 11.2. Конфигурирование пакета libnss-ldap:
Вопрос | Ответ |
---|---|
LDAP сервер URI (Uniform Resource Identifier) | ldapi://ldap.falcot.com |
Отличительное имя поисковой базы | dc=falcot,dc=com |
Версия LDAP для использования | 3 |
Учётная запись LDAP для root | cn=admin,dc=falcot,dc=com |
LDAP root пароль учётной записи | пароль администратора |
Разрешить учётной записи администратора LDAP вести себя как локальный root? | yes |
Требует ли база данных LDAP входа в систему? | нет |
/etc/nsswitch.conf
затем его необходимо изменить, чтобы настроить NSS для использования только что установленного модуля ldap
. Вы можете использовать пример, приведённый в /usr/share/doc/libnss-ldap/examples/nsswitch.ldap
или отредактируйте существующую конфигурацию.
Пример 11.23. Файл /etc/nsswitch.conf
#ident $Id: nsswitch.ldap,v 2.4 2003/10/02 02:36:25 lukeh Exp $ # # Пример файла, который можно скопировать в /etc/nsswitch.conf; # он использует соединение LDAP с файлами. # # "hosts:" и "services:" в этом файлеиспользуются только если # файл /etc/netconfig имеет "-" для nametoaddr_libs "inet" транспортов. # следующие строки убирают "+" запись в /etc/passwd и /etc/group. passwd: files ldap shadow: files ldap group: files ldap # вначале сверьтесь с DNS, это нужно для резолвинга LDAP хоста. # (Если резолвинг невозможен, возникнет бесконечная рекурсия, потому что # libldap вызывает gethostbyname(). Осторожно!) 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 # пока нет поддержки сетевых масок, загрузочных параметров и открытого ключа. netmasks: files bootparams: files publickey: files automount: files # Я уверен nsswitch.conf справляется непосредственно у sendmail, # поэтому мы мало что можем сделать здесь. Вместо этого, используйте # bbense's LDAP правила sendmail. aliases: files sendmailvars: files # Примечание. В Solaris (пока) нет поддержки сетевых групп. netgroup: ldap [NOTFOUND=return] files
ldap
обычно вставляется раньше других, и поэтому он будет запрошен первым. Заметным исключением является hosts
служба, поскольку для связи с сервером LDAP требуется сначала обратиться к DNS (для разрешения ldap.falcot.com
). Без этого исключения запрос имени хоста будет пытаться обратиться к серверу LDAP; это вызовет разрешение имени для сервера LDAP и так далее в бесконечном цикле.
files
не принимаются во внимание), службы можно настроить с помощью следующего синтаксиса:
service: ldap [NOTFOUND=return] files
.
/etc/environment
и /etc/default/locale
), это позволит приложениям выполнять необходимую аутентификацию в базе данных LDAP.
Таблица 11.3. Configuration of libpam-ldap
Вопрос | Ответ |
---|---|
Разрешить учетной записи администратора LDAP вести себя как локальный root? | Да. Это позволяет использовать обычную команду passwd для изменения паролей, хранящихся в базе данных LDAP. |
Требуется ли вход в базу данных LDAP? | нет |
LDAP account for root: | cn=admin,dc=falcot,dc=com |
Пароль администратора LDAP: | пароль администратора базы данных LDAP |
Алгоритм локального шифрования, используемый для паролей: | crypt |
Профили PAM для включения: | Аутентификация LDAP входит в число включённых профилей |
/etc/pam.d/common-auth
, /etc/pam.d/common-password
и /etc/pam.d/common-account
. Этот механизм использует выделенный инструмент pam-auth-update
(обеспечиваемый пакетом libpam-runtime). Этот инструмент также может запустить администратор, если он хочет включить или отключить модули PAM.
./easyrsa build-server-full ldap.falcot.com nopass
спросит вас об “common name”. Ответом на этот вопрос должно быть полное квалифицированное имя (fully-qualified hostname) LDAP сервера; в нашем случае ldap.falcot.com
.
pki/issued/ldap.falcot.com.crt
; соответствующий закрытый ключ хранится в 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
также необходимо указать, что нужно использовать эти ключи для шифрования. Конфигурация сервера LDAP управляется динамически: конфигурацию можно обновлять с помощью обычных операций LDAP на иерархии объектов cn=config
и обновлений сервера /etc/ldap/slapd.d
в режиме реального времени, чтобы сделать конфигурацию постоянной. ldapmodify
таким образом, это правильный инструмент для обновления конфигурации:
Пример 11.24. Configuring slapd
for encryption
#
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
в файле /etc/default/slapd
. Мы будем действовать осторожно и вообще отключим незащищённый LDAP.
Пример 11.25. Файл /etc/default/slapd
# Умолчальное местоположение slapd.conf file или slapd.d cn=config directory. # Если пусто, используйте вкомпиленный умолчальный (/etc/ldap/slapd.d с возвратом к # /etc/ldap/slapd.conf). SLAPD_CONF= # Системная учётная запись, под которой будет запущен сервер slapd. # Если пусто, сервер будет работать от имени пользователя root. SLAPD_USER="openldap" # Системная группа, под которой будет запущен сервер slapd. # Если пусто, сервер будет работать от имени первичной группы этого пользователя. SLAPD_GROUP="openldap" # Путь к pid файлу slapd сервера. Если не установлен init.d скрипт # попробовать выяснить из $SLAPD_CONF (/etc/ldap/slapd.d # по умолчанию) SLAPD_PIDFILE= # slapd в норме обслуживает ldap только на всех TCP портах 389. slapd также может # обслуживать запросы на TCP порту 636 (ldaps) и запросы через unix # сокеты. # Пример использования: # SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:/// ldapi:///" SLAPD_SERVICES="ldaps:/// ldapi:///" # Если SLAPD_NO_START установлен, init скрипт не запустится или не перезапустится # slapd (но стоп всё равно будет работать). Раскомментируйте это если вы # запустили slapd с помощью каких-то других средств или если не хотите чтобы slapd # нормально запускался при загрузке. #SLAPD_NO_START=1 # Если в SLAPD_SENTINEL_FILE установлен путь к файлу, и этот файл существует, # init скрипт не запустит или не перезапустит slapd (но стоп всё равно будет работать). # Используйте это для временного отключения запуска slapd (при выполнении # обслуживания, к примеру, или через систему управления конфигурацией) # когда вы не хотите редактировать конфигурационный файл. SLAPD_SENTINEL_FILE=/etc/ldap/noslapd # Для Kerberos аутентификации (через SASL), slapd умолчально использует system # keytab файл (/etc/krb5.keytab). Для использования другого keytab файла, # раскомментируйте эту строку и измените путь к нему. #export KRB5_KTNAME=/etc/krb5.keytab # Дополнительные опции для передачи в slapd SLAPD_OPTIONS=""
ldaps://
URI.
/usr/local/share/ca-certificates
и запустить 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
. Это позволит сэкономить немало времени на наборе текста.
Пример 11.26. Файл /etc/ldap/ldap.conf
# # LDAP умолчания # # См. ldap.conf(5) для подробностей # Этот файл должен быть доступен для чтения всем, но не доступен для записи. #BASE dc=example,dc=com #URI ldap://ldap.example.com ldap://ldap-provider.example.com:666 #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never # TLS сертификаты (необходимо для GnuTLS) TLS_CACERT /etc/ssl/certs/ca-certificates.crt