الاستيثاق الشبكي – استخدام Kerberos مع LDAP على أوبنتو
المقدمة
يُعدّ الاستيثاق الشبكي من الركائز الأساسية في أمن أنظمة المعلومات الحديثة، حيث يسمح بتحديد هوية المستخدمين والأجهزة بشكل آمن وفعال ضمن بيئة شبكية موحدة. ومن بين التقنيات التي تُستخدم بشكل واسع في هذا السياق، نجد بروتوكول Kerberos الذي يوفر آلية موثوقة للاستيثاق، وLDAP (بروتوكول الوصول الخفيف للدليل) الذي يُستخدم لتخزين المعلومات عن المستخدمين والمجموعات ضمن قاعدة بيانات مركزية يمكن الوصول إليها من قبل مختلف الخدمات.
عند الجمع بين Kerberos وLDAP على نظام تشغيل مثل أوبنتو، نحصل على بيئة آمنة مركزية تتيح التحكم في حسابات المستخدمين والتفويض والوصول إلى الموارد بطريقة منظمة، ما يُعد مثاليًا في الشبكات الكبيرة والأنظمة المؤسسية. هذا التكامل يمكن أن يكون معقدًا قليلًا، لكنه يقدم مستوى متقدمًا من الأمان، والموثوقية، وإدارة المستخدمين بشكل مركزي.
الفهم الأساسي لـ Kerberos وLDAP
Kerberos
Kerberos هو بروتوكول استيثاق يعتمد على التذاكر (Tickets)، تم تطويره في معهد MIT، ويعمل على أساس نموذج العميل/الخادم. يُصدر خادم Kerberos (المعروف باسم KDC – Key Distribution Center) تذاكر مشفرة تسمح للمستخدمين بالوصول إلى الخدمات ضمن الشبكة دون الحاجة إلى إدخال كلمات المرور مرارًا وتكرارًا.
يعمل Kerberos بثلاثة مكونات رئيسية:
-
KDC (Key Distribution Center): يتكوّن من مكونين فرعيين، AS (Authentication Service) وTGS (Ticket Granting Service).
-
Client (العميل): يطلب تذكرة للوصول إلى الخدمات.
-
Application Server (خادم التطبيقات): يقدم الخدمة للعميل بعد التحقق من التذكرة.
LDAP
LDAP هو بروتوكول يُستخدم للوصول إلى خدمات الدليل (Directory Services)، والتي تُستخدم لتنظيم وتخزين معلومات عن المستخدمين، المجموعات، الأجهزة، والسياسات. تعمل خوادم LDAP مثل OpenLDAP أو Microsoft Active Directory كقاعدة بيانات مركزية مرنة يمكن استعلامها من أي جهاز ضمن الشبكة.
تُستخدم LDAP غالبًا لتخزين بيانات المستخدمين واسترجاعها عند عمليات الاستيثاق أو التفويض، ويعمل بشكل جيد مع Kerberos عندما يُستخدم كمصدر للبيانات التعريفية للمستخدمين.
فوائد الدمج بين Kerberos وLDAP
-
إدارة مركزية للمستخدمين: يمكن التحكم في الحسابات من مكان واحد.
-
استيثاق موثوق وآمن: بفضل البنية القائمة على التذاكر وتشفير Kerberos.
-
تجربة استخدام سلسة: لا يحتاج المستخدمون إلى إدخال كلمات المرور باستمرار.
-
تقليل التكرار والتعارض: دمج قواعد البيانات والاستيثاق في نظام واحد.
-
قابلية التوسع: يناسب البيئات الكبيرة ذات المستخدمين المتعددين والخوادم المتنوعة.
المتطلبات الأساسية على أوبنتو
قبل بدء الإعداد، يجب تجهيز البيئة التالية على خوادم أوبنتو:
-
نظام Ubuntu Server (يفضّل الإصدار LTS مثل 20.04 أو 22.04).
-
امتيازات المستخدم الجذر (root).
-
خادمان أو أكثر (أحدهما لخدمة Kerberos والآخر لـ LDAP، ويمكن الجمع بينهما على خادم واحد في بيئات اختبارية).
-
ضبط أسماء النطاقات (DNS) بشكل صحيح، لأن Kerberos يعتمد على أسماء النطاقات المؤهلة بالكامل (FQDN).
الخطوة الأولى: إعداد خادم Kerberos
1. تثبيت حزم Kerberos
bashsudo apt update sudo apt install krb5-kdc krb5-admin-server
2. إعداد ملفات التكوين
يتم تعديل الملف الرئيسي /etc/krb5.conf ليعكس نطاق Kerberos:
ini[libdefaults]
default_realm = EXEMPLE.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
EXEMPLE.LOCAL = {
kdc = kerberos.exemple.local
admin_server = kerberos.exemple.local
}
[domain_realm]
.exemple.local = EXEMPLE.LOCAL
exemple.local = EXEMPLE.LOCAL
3. إعداد قاعدة بيانات Kerberos
bashsudo krb5_newrealm
ستُطلب كلمة مرور للمسؤول الرئيسي (admin principal). يجب تدوينها لأنها ستُستخدم لاحقًا.
4. إضافة مستخدم رئيسي (Principal)
bashsudo kadmin.local addprinc utilisateur1
الخطوة الثانية: إعداد خادم LDAP (OpenLDAP)
1. تثبيت OpenLDAP
bashsudo apt install slapd ldap-utils
أثناء التثبيت، سيُطلب تعيين كلمة مرور إدارية لـ LDAP.
2. إعادة تهيئة إعدادات slapd (اختياري)
bashsudo dpkg-reconfigure slapd
اختر:
-
لا لاستخدام قاعدة بيانات موجودة.
-
اسم النطاق: exemple.local
-
اسم المؤسسة: Exemple
-
السوبر يوزر: admin
-
كلمة المرور: أدخل كما سبق
-
قاعدة البيانات: MDB أو HDB
3. اختبار الاتصال بـ LDAP
bashldapsearch -x -LLL -H ldap://localhost -b dc=exemple,dc=local
الخطوة الثالثة: ربط Kerberos بـ LDAP
Kerberos لا يخزن كلمات المرور في حد ذاته، بل يعتمد على قاعدة بيانات أو مصدر خارجي مثل LDAP لتمثيل المستخدمين. لتفعيل هذا التكامل:
1. إضافة مخطط Kerberos إلى LDAP
bashsudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/kerberos.schema
2. إنشاء شجرة LDAP تتضمن حسابات Kerberos
ldifdn: cn=krbContainer,dc=exemple,dc=local objectClass: top objectClass: krbContainer cn: krbContainer
bashldapadd -x -D cn=admin,dc=exemple,dc=local -W -f krbcontainer.ldif
3. ربط قاعدة بيانات Kerberos بـ LDAP
تعديل ملف /etc/krb5kdc/kdc.conf:
ini[realms]
EXEMPLE.LOCAL = {
database_module = openldap_ldapconf
}
[dbmodules]
openldap_ldapconf = {
db_library = kldap
ldap_kdc_dn = "cn=admin,dc=exemple,dc=local"
ldap_kadmind_dn = "cn=admin,dc=exemple,dc=local"
ldap_service_password_file = /etc/krb5kdc/service.keyfile
ldap_servers = ldapi:///
ldap_conns_per_server = 5
}
توليد ملف كلمات المرور:
bashsudo kdb5_ldap_util stashsrvpw -f /etc/krb5kdc/service.keyfile cn=admin,dc=exemple,dc=local
ثم تهيئة قاعدة بيانات Kerberos في LDAP:
bashsudo kdb5_ldap_util -D "cn=admin,dc=exemple,dc=local" create -subtrees "dc=exemple,dc=local" -r EXEMPLE.LOCAL -s
الخطوة الرابعة: إعداد العميل (Client)
1. تثبيت الحزم
bashsudo apt install krb5-user libpam-krb5 libpam-ldapd libnss-ldapd
خلال الإعداد، أدخل:
-
Realm: EXEMPLE.LOCAL
-
KDC: kerberos.exemple.local
-
Admin Server: kerberos.exemple.local
2. تكوين NSS و PAM
تحرير ملف /etc/nsswitch.conf:
textpasswd: compat systemd ldap group: compat systemd ldap shadow: compat ldap
3. اختبار الاستيثاق
إنشاء حساب Kerberos:
bashsudo kadmin.local addprinc testuser
ثم من جهاز العميل:
bashkinit testuser
يجب إدخال كلمة المرور وسيتم الحصول على تذكرة Kerberos.
4. التحقق من التذكرة
bashklist
جدول: مقارنة بين Kerberos و LDAP
| الخاصية | Kerberos | LDAP |
|---|---|---|
| الهدف الرئيسي | استيثاق المستخدمين | إدارة بيانات المستخدمين والمجموعات |
| نموذج الأمان | قائم على التذاكر | قائم على استعلامات وتحقق بسيط |
| التشفير | مشفر بالكامل | يعتمد على SSL/TLS |
| التخزين | لا يخزن بيانات تعريفية | يخزن كافة معلومات الحسابات |
| الأداء | عالي في البيئات الكبيرة | يحتاج تحسين في الأداء عند استخدام SSL |
| دعم المركزية | كامل | كامل |
الخاتمة
الدمج بين Kerberos وLDAP على نظام أوبنتو يفتح الباب أمام بيئة مركزية وآمنة لإدارة حسابات المستخدمين واستيثاقهم في المؤسسات والشبكات الكبيرة. ورغم التعقيدات التي قد تنجم عن إعداد النظام لأول مرة، فإن النتيجة النهائية تضمن بنية قوية قابلة للتوسع وتعزز من أمان البنية التحتية الرقمية. يُنصح بإجراء اختبارات شاملة بعد الإعداد والتأكد من عمل جميع المكونات بشكل متكامل، مع استخدام الشهادات (SSL/TLS) لحماية الاتصالات بين المكونات.
المصادر
-
MIT Kerberos Documentation: https://web.mit.edu/kerberos
-
OpenLDAP Administration Guide: https://www.openldap.org/doc/admin24/

