ديف أوبس

الاستيثاق بأوبنتو عبر Active Directory

الاستيثاق الشبكي – استخدام SSSD مع Active Directory على أوبنتو

مقدمة

مع تعاظم الحاجة إلى تكامل أنظمة التشغيل المفتوحة المصدر مثل أوبنتو Ubuntu مع البنى التحتية المؤسسية المعتمدة على Microsoft Active Directory، تبرز حلول مثل SSSD (System Security Services Daemon) كوسيلة فعالة لتمكين الاستيثاق الشبكي الموحد، والذي يتيح للمستخدمين تسجيل الدخول إلى أنظمة Linux باستخدام بيانات اعتمادهم في Active Directory، دون الحاجة إلى إدارة هويات منفصلة لكل نظام. هذا التكامل يعزز الأمان، ويبسط الإدارة، ويوفر وقتًا وجهدًا كبيرين لقسم تكنولوجيا المعلومات.

المقال التالي يقدم شرحًا موسعًا ومفصلًا لتقنية الاستيثاق الشبكي باستخدام SSSD مع Active Directory على توزيعة أوبنتو، موضحًا البنية، الإعدادات، العمليات المرافقة، الفوائد، وأهم المشكلات والحلول التي قد يواجهها مديرو النظام.


مفاهيم أساسية

ما هو الاستيثاق الشبكي؟

الاستيثاق الشبكي هو عملية تحقق مركزية من هوية المستخدمين عبر شبكة حواسيب، بحيث يمكن للمستخدم تسجيل الدخول إلى أي جهاز ضمن الشبكة باستخدام نفس بيانات الاعتماد. يعد Active Directory من أشهر أنظمة الاستيثاق الشبكي في بيئة ويندوز، بينما يمكن ربط الأنظمة المستندة إلى Linux باستخدام بروتوكولات مثل LDAP وKerberos مع أدوات مثل SSSD.

ما هو SSSD؟

SSSD هو اختصار لـ System Security Services Daemon، وهي خدمة في أنظمة Linux توفر آلية موحدة للوصول إلى مصادر الهوية (Identity Providers) مثل LDAP وActive Directory وFreeIPA. تشمل مهامه:

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

  • تنفيذ الاستيثاق عبر Kerberos أو LDAP.

  • تخزين بيانات المستخدمين مؤقتًا (caching).

  • فرض سياسات الوصول والتوثيق.


لماذا نستخدم SSSD مع Active Directory؟

يتزايد استخدام SSSD مع Active Directory في المؤسسات الكبيرة والمتوسطة نظرًا للمزايا التالية:

  • تكامل مباشر مع Active Directory دون الحاجة إلى أدوات خارجية معقدة.

  • دعم كامل لبروتوكولات الأمان مثل Kerberos وLDAP.

  • آلية تخزين مؤقت (cache) تسمح بتسجيل الدخول حتى أثناء انقطاع الاتصال.

  • سهولة الصيانة والإدارة من خلال ملفات إعدادات موحدة وقابلة للضبط.

  • تحكم دقيق في الصلاحيات باستخدام سياسات الدخول مثل access_provider=ad.


متطلبات بيئة العمل

قبل الشروع في الإعداد، يجب توفر العناصر التالية:

  • توزيعة Ubuntu حديثة (يفضل 20.04 أو 22.04).

  • وصول إداري root أو sudo.

  • اتصال شبكي مباشر مع خادم Active Directory.

  • اسم نطاق (Domain) صالح ومعروف (مثل: example.com).

  • إعداد صحيح لخدمة DNS يشير إلى خادم AD.

  • مزامنة الوقت عبر NTP بين الخوادم (ضروري لKerberos).


خطوات الإعداد التفصيلية

1. تثبيت الحزم المطلوبة

bash
sudo apt update sudo apt install sssd realmd adcli samba-common-bin oddjob oddjob-mkhomedir packagekit libnss-sss libpam-sss krb5-user

2. إعداد نظام الوقت

لضمان التزامن الزمني:

bash
sudo apt install chrony sudo systemctl enable chrony sudo systemctl start chrony

أو يمكن تعديل ملف إعدادات timesyncd:

bash
sudo timedatectl set-ntp true

3. الانضمام إلى نطاق Active Directory

قبل الانضمام، تحقق من إمكانية استعلام DNS:

bash
host example.com

ثم استخدم أمر realm للانضمام:

bash
sudo realm join --user=Administrator example.com

سيُطلب منك إدخال كلمة المرور، ويجب أن تكون عضوية الجهاز في نطاق AD ناجحة.

4. التحقق من الانضمام

bash
realm list

يجب أن ترى معلومات النطاق مفصلة، مع التأكيد أن نوع الـconfigured: kerberos-member.


إعداد ملفات التكوين

بعد الانضمام، يقوم realm بإنشاء الإعدادات اللازمة تلقائيًا، ولكن من الممكن تعديلها لتخصيص السلوك.

1. ملف إعدادات SSSD: /etc/sssd/sssd.conf

ini
[sssd] domains = example.com config_file_version = 2 services = nss, pam [domain/example.com] ad_domain = example.com krb5_realm = EXAMPLE.COM realmd_tags = manages-system joined-with-samba cache_credentials = True id_provider = ad fallback_homedir = /home/%u default_shell = /bin/bash access_provider = ad

قم بتعيين الأذونات المناسبة للملف:

bash
sudo chmod 600 /etc/sssd/sssd.conf

2. إعادة تشغيل خدمة SSSD

bash
sudo systemctl restart sssd

تهيئة PAM و NSS

1. تفعيل إنشاء مجلدات المستخدم تلقائيًا

bash
sudo pam-auth-update

اختر خيار Create home directory on login.

2. التحقق من وجود المستخدمين

بعد الإعداد، يمكن تنفيذ:

bash
getent passwd '[email protected]'

وإذا ظهر سجل المستخدم، فهذا يعني نجاح الربط.


إنشاء ملفات المستخدمين تلقائيًا

باستخدام oddjob-mkhomedir يمكن إنشاء مجلد home تلقائيًا عند تسجيل الدخول لأول مرة:

bash
sudo systemctl enable oddjobd sudo systemctl start oddjobd

التحكم في الوصول

يمكن تحديد من يُسمح لهم بتسجيل الدخول باستخدام إعدادات realm أو sssd.conf.

منع الوصول لجميع المستخدمين باستثناء مجموعة معينة:

ini
access_provider = ad ad_access_filter = (memberOf=CN=LinuxUsers,OU=Groups,DC=example,DC=com)

أو باستخدام realm:

bash
sudo realm permit --groups LinuxUsers

مثال توضيحي على بنية الشبكة

العنصر القيمة
اسم النطاق example.com
اسم خادم AD dc1.example.com
IP الخادم 192.168.1.10
اسم المضيف أوبنتو ubuntu-client
نظام التوثيق المستخدم Kerberos + LDAP عبر SSSD

الأمن والصيانة

  • تأكد من تحديث النظام دوريًا.

  • تحقق من سجلات SSSD في /var/log/sssd/ عند حدوث أخطاء.

  • لا تستخدم root للربط مع AD، بل حساب إداري محدود الصلاحيات.

  • استخدم sssd بدلاً من winbind لتجنب التعقيدات، خاصة مع Ubuntu.


المشاكل الشائعة وحلولها

المشكلة السبب المحتمل الحل المقترح
فشل تسجيل الدخول بالرغم من نجاح الانضمام مشكلة في Kerberos أو الوقت تحقق من NTP، أعد تهيئة kerberos باستخدام kinit
المستخدم غير موجود بعد الانضمام خطأ في إعداد NSS تحقق من nsswitch.conf وتأكد من وجود sss
لا يتم إنشاء مجلد home تلقائيًا خدمة oddjob غير مفعلة قم بتمكينها وتشغيلها
بطء في تسجيل الدخول مشاكل في التخزين المؤقت أو DNS امسح cache باستخدام sss_cache -E

الخاتمة

يوفر استخدام SSSD مع Active Directory على أوبنتو بنية قوية ومرنة للاستيثاق الشبكي، تسهم في تبسيط الإدارة وتعزيز الأمان وتوحيد إدارة المستخدمين في بيئات مختلطة بين Linux وWindows. عبر اعتماد هذا النهج، يمكن للمؤسسات الحديثة تحقيق تكامل سلس وفعال بين أنظمة التشغيل المتنوعة، دون التضحية بأمان الشبكة أو تعقيد إدارة الهويات.


المراجع:

  1. Red Hat Documentation – System Security Services Daemon (SSSD): https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/

  2. Ubuntu Official Documentation – Integration with Active Directory: https://ubuntu.com/server/docs/service-sssd