ديف أوبس

Kerberos مع LDAP على أوبنتو

الاستيثاق الشبكي – استخدام 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

  1. إدارة مركزية للمستخدمين: يمكن التحكم في الحسابات من مكان واحد.

  2. استيثاق موثوق وآمن: بفضل البنية القائمة على التذاكر وتشفير Kerberos.

  3. تجربة استخدام سلسة: لا يحتاج المستخدمون إلى إدخال كلمات المرور باستمرار.

  4. تقليل التكرار والتعارض: دمج قواعد البيانات والاستيثاق في نظام واحد.

  5. قابلية التوسع: يناسب البيئات الكبيرة ذات المستخدمين المتعددين والخوادم المتنوعة.

المتطلبات الأساسية على أوبنتو

قبل بدء الإعداد، يجب تجهيز البيئة التالية على خوادم أوبنتو:

  • نظام Ubuntu Server (يفضّل الإصدار LTS مثل 20.04 أو 22.04).

  • امتيازات المستخدم الجذر (root).

  • خادمان أو أكثر (أحدهما لخدمة Kerberos والآخر لـ LDAP، ويمكن الجمع بينهما على خادم واحد في بيئات اختبارية).

  • ضبط أسماء النطاقات (DNS) بشكل صحيح، لأن Kerberos يعتمد على أسماء النطاقات المؤهلة بالكامل (FQDN).

الخطوة الأولى: إعداد خادم Kerberos

1. تثبيت حزم Kerberos

bash
sudo 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

bash
sudo krb5_newrealm

ستُطلب كلمة مرور للمسؤول الرئيسي (admin principal). يجب تدوينها لأنها ستُستخدم لاحقًا.

4. إضافة مستخدم رئيسي (Principal)

bash
sudo kadmin.local addprinc utilisateur1

الخطوة الثانية: إعداد خادم LDAP (OpenLDAP)

1. تثبيت OpenLDAP

bash
sudo apt install slapd ldap-utils

أثناء التثبيت، سيُطلب تعيين كلمة مرور إدارية لـ LDAP.

2. إعادة تهيئة إعدادات slapd (اختياري)

bash
sudo dpkg-reconfigure slapd

اختر:

  • لا لاستخدام قاعدة بيانات موجودة.

  • اسم النطاق: exemple.local

  • اسم المؤسسة: Exemple

  • السوبر يوزر: admin

  • كلمة المرور: أدخل كما سبق

  • قاعدة البيانات: MDB أو HDB

3. اختبار الاتصال بـ LDAP

bash
ldapsearch -x -LLL -H ldap://localhost -b dc=exemple,dc=local

الخطوة الثالثة: ربط Kerberos بـ LDAP

Kerberos لا يخزن كلمات المرور في حد ذاته، بل يعتمد على قاعدة بيانات أو مصدر خارجي مثل LDAP لتمثيل المستخدمين. لتفعيل هذا التكامل:

1. إضافة مخطط Kerberos إلى LDAP

bash
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/kerberos.schema

2. إنشاء شجرة LDAP تتضمن حسابات Kerberos

ldif
dn: cn=krbContainer,dc=exemple,dc=local objectClass: top objectClass: krbContainer cn: krbContainer
bash
ldapadd -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 }

توليد ملف كلمات المرور:

bash
sudo kdb5_ldap_util stashsrvpw -f /etc/krb5kdc/service.keyfile cn=admin,dc=exemple,dc=local

ثم تهيئة قاعدة بيانات Kerberos في LDAP:

bash
sudo kdb5_ldap_util -D "cn=admin,dc=exemple,dc=local" create -subtrees "dc=exemple,dc=local" -r EXEMPLE.LOCAL -s

الخطوة الرابعة: إعداد العميل (Client)

1. تثبيت الحزم

bash
sudo 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:

text
passwd: compat systemd ldap group: compat systemd ldap shadow: compat ldap

3. اختبار الاستيثاق

إنشاء حساب Kerberos:

bash
sudo kadmin.local addprinc testuser

ثم من جهاز العميل:

bash
kinit testuser

يجب إدخال كلمة المرور وسيتم الحصول على تذكرة Kerberos.

4. التحقق من التذكرة

bash
klist

جدول: مقارنة بين Kerberos و LDAP

الخاصية Kerberos LDAP
الهدف الرئيسي استيثاق المستخدمين إدارة بيانات المستخدمين والمجموعات
نموذج الأمان قائم على التذاكر قائم على استعلامات وتحقق بسيط
التشفير مشفر بالكامل يعتمد على SSL/TLS
التخزين لا يخزن بيانات تعريفية يخزن كافة معلومات الحسابات
الأداء عالي في البيئات الكبيرة يحتاج تحسين في الأداء عند استخدام SSL
دعم المركزية كامل كامل

الخاتمة

الدمج بين Kerberos وLDAP على نظام أوبنتو يفتح الباب أمام بيئة مركزية وآمنة لإدارة حسابات المستخدمين واستيثاقهم في المؤسسات والشبكات الكبيرة. ورغم التعقيدات التي قد تنجم عن إعداد النظام لأول مرة، فإن النتيجة النهائية تضمن بنية قوية قابلة للتوسع وتعزز من أمان البنية التحتية الرقمية. يُنصح بإجراء اختبارات شاملة بعد الإعداد والتأكد من عمل جميع المكونات بشكل متكامل، مع استخدام الشهادات (SSL/TLS) لحماية الاتصالات بين المكونات.

المصادر