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 sub # 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: 3 # numEntries: 2
/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
#
LDAPADD="/usr/bin/ldapadd -c" ETC_ALIASES=/dev/null ./migrate_all_online.sh
migrate_all_online.sh
بضعة أسئلة عن قاعدة بيانات LDAP التي يجب تهجير البيانات إليها. يلخص جدول 11.1 الإجابات التي استخدمت في حالة فلكوت.
جدول 11.1. إجابات الأسئلة التي يطرحها السكربت migrate_all_online.sh
السؤال | الجواب |
---|---|
X.500 naming context | dc=falcot,dc=com |
LDAP server hostname | localhost |
Manager DN | cn=admin,dc=falcot,dc=com |
Bind credentials | كلمة سر الإدارة |
Create DUAConfigProfile | لا |
/etc/aliases
عمداً، لأن السكيما القياسية التي توفرها دبيان لا تتضمن البنى التي يستخدمها هذا السكربت لتوصيف الأسماء المتعددة لعناوين البريد الإلكتروني. إذا أردنا نقل هذه البيانات إلى المجلد، يجب إضافة الملف /etc/ldap/schema/misc.schema
إلى السكيما القياسية.
-c
مع الأمر ldapadd
؛ يطلب هذا الأمر عدم إيقاف المعالجة في حال حدوث خطأ. نحتاج استخدام هذا الخيار لأن تحويل /etc/services
يولّد غالباً بضعة أخطاء يمكن تجاهلها بأمان.
جدول 11.2. إعداد الحزمة libnss-ldap
السؤال | الجواب |
---|---|
LDAP server Uniform Resource Identifier (عنوان URI لمخدم LDAP) | ldap://ldap.falcot.com |
Distinguished name of the search base (الاسم المميِّز لقاعدة البحث) | dc=falcot,dc=com |
LDAP version to use (نسخة LDAP المستخدمة) | 3 |
Does the LDAP database require login? (هل تحتاج قاعدة بيانات LDAP تسجيل الدخول؟)? | لا |
Special LDAP privileges for root (إعطاء صلاحيات LDAP خاصة للجذر) | نعم |
Make the configuration file readable/writeable by its owner only (منح صلاحيات قراءة وتعديل ملف الضبط لمالكه فقط) | لا |
LDAP account for root (حساب LDAP للجذر) | cn=admin,dc=falcot,dc=com |
LDAP root account password (كلمة سر حساب جذر LDAP) | كلمة سر الإدارة |
/etc/nsswitch.conf
، بحيث يستخدم NSS وحدة ldap
المُثبّتة حديثاً.
مثال 11.26. الملف /etc/nsswitch.conf
# /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: ldap compat group: ldap compat shadow: ldap compat hosts: files dns ldap networks: ldap files protocols: ldap db files services: ldap db files ethers: ldap db files rpc: ldap db files netgroup: ldap files
ldap
قبل الوحدات الأخرى عادة، وبالتالي تُرسَل الطلبات إليها أولاً. الاستثناء الواضح هو خدمة hosts
لأن الاتصال بمخدم LDAP يحتاج استشارة DNS أولاً (لاستبيان ldap.falcot.com
). إذا لم نضع هذا الاستثناء، ستحاول طلبات استبيان (resolve) أسماء المضيفات سؤال مخدم LDAP، وهذا سيحتاج لطلب استبيان اسم مخدم LDAP نفسه، وتدور الطلبات في حلقة لا نهائية.
files
بعين الاعتبار)، فيجب إعداد الخدمات باستخدام الصيغة التالية:
service: ldap [NOTFOUND=return] files
.
/etc/environment
و /etc/default/locale
) بطريقة تسمح للتطبيقات بإجراء المصادقات المطلوية مع قاعدة بيانات LDAP.
جدول 11.3. إعداد libpam-ldap
السؤال | الجواب |
---|---|
Allow LDAP admin account to behave like local root? (السماح لحساب مدير LDAP بالعمل مثل الجذر المحلي؟)? | نعم. هذا يسمح باستخدام الأمر المعتاد passwd لتغيير كلمات السر المخزّنة في قاعدة بيانات LDAP. |
Does the LDAP database require logging in? (هل تحتاج قاعدة بيانات LDAP لتسجيل الدخول؟)? | لا |
LDAP account for root (حساب LDAP للجذر) | cn=admin,dc=falcot,dc=com |
LDAP root account password (كلمة سر حساب جذر LDAP) | كلمة سر إدارة قاعدة بيانات LDAP |
Local encryption algorithm to use for passwords (خوارزمية تشفير كلمات السر المستخدمة محلياً) | crypt |
/etc/pam.d/common-auth
و/etc/pam.d/common-password
و/etc/pam.d/common-account
. تستخدم هذه الآلية الأداة المتخصصة pam-auth-update
(التي توفرها الحزمة libpam-runtime). كما يستطيع مدير النظام أيضاً تشغيل هذه الأداة إذا أراد تفعيل او تعطيل وحدات PAM.
./build-key-server ldap.falcot.com
سيطرح أسئلة سخيفة كثيرة (المكان، اسم المنظّمة، وماشابه). يجب الإجابة على السؤال عن ”Common Name“ بالاسم الكامل (fully-qualified) لمخدم LDAP؛ في حالتنا، ldap.falcot.com
.
keys/ldap.falcot.com.crt
، ويخزّن المفتاح الخاص الموافق لها في keys/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 keys/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 newcert.pem /etc/ssl/certs/ldap.falcot.com.pem
slapd
أيضاً لاستخدام هذه المفاتيح للتشفير. إدارة إعدادات مخدم LDAP ديناميكية: بما أنها مخزنة في جزء خاص من الدليل نفسه، فيمكن تحديث الإعدادات باستخدام عمليات LDAP عادية تُجرَى على شجرة الكائنات cn=config
، ويحدّث المخدم الملف /etc/ldap/slapd.d
في الوقت الحقيقي حتى تصبح الإعدادات دائمة. الأداة ldapmodify
هي الأداة الصحيحة لتحديث الإعدادات:
مثال 11.27. إعداد slapd
لاستخدام التشفير
#
cat >ssl.ldif <<END dn: cn=config changetype: modify add: olcTLSCertificateFile olcTLSCertificateFile: /etc/ssl/certs/ldap.falcot.com.pem - add: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/ssl/private/ldap.falcot.com.key - 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"
SLAPD_SERVICES
في الملف /etc/default/slapd
. حتى نتفادى أي مخاطرات، سوف نعطّل LDAP غير المؤمن كله.
مثال 11.28. الملف /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.conf 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
واستدعاء update-ca-certificates
.
#
cp keys/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.29. الملف /etc/ldap/ldap.conf
# # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. BASE dc=falcot,dc=com URI ldaps://ldap.falcot.com #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never # TLS certificates (needed for GnuTLS) TLS_CACERT /etc/ssl/certs/ca-certificates.crt