الاستيثاق الشبكي – استخدام 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. تثبيت الحزم المطلوبة
bashsudo apt update sudo apt install sssd realmd adcli samba-common-bin oddjob oddjob-mkhomedir packagekit libnss-sss libpam-sss krb5-user
2. إعداد نظام الوقت
لضمان التزامن الزمني:
bashsudo apt install chrony
sudo systemctl enable chrony
sudo systemctl start chrony
أو يمكن تعديل ملف إعدادات timesyncd:
bashsudo timedatectl set-ntp true
3. الانضمام إلى نطاق Active Directory
قبل الانضمام، تحقق من إمكانية استعلام DNS:
bashhost example.com
ثم استخدم أمر realm للانضمام:
bashsudo realm join --user=Administrator example.com
سيُطلب منك إدخال كلمة المرور، ويجب أن تكون عضوية الجهاز في نطاق AD ناجحة.
4. التحقق من الانضمام
bashrealm 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
قم بتعيين الأذونات المناسبة للملف:
bashsudo chmod 600 /etc/sssd/sssd.conf
2. إعادة تشغيل خدمة SSSD
bashsudo systemctl restart sssd
تهيئة PAM و NSS
1. تفعيل إنشاء مجلدات المستخدم تلقائيًا
bashsudo pam-auth-update
اختر خيار Create home directory on login.
2. التحقق من وجود المستخدمين
بعد الإعداد، يمكن تنفيذ:
وإذا ظهر سجل المستخدم، فهذا يعني نجاح الربط.
إنشاء ملفات المستخدمين تلقائيًا
باستخدام oddjob-mkhomedir يمكن إنشاء مجلد home تلقائيًا عند تسجيل الدخول لأول مرة:
bashsudo systemctl enable oddjobd
sudo systemctl start oddjobd
التحكم في الوصول
يمكن تحديد من يُسمح لهم بتسجيل الدخول باستخدام إعدادات realm أو sssd.conf.
منع الوصول لجميع المستخدمين باستثناء مجموعة معينة:
iniaccess_provider = ad
ad_access_filter = (memberOf=CN=LinuxUsers,OU=Groups,DC=example,DC=com)
أو باستخدام realm:
bashsudo 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. عبر اعتماد هذا النهج، يمكن للمؤسسات الحديثة تحقيق تكامل سلس وفعال بين أنظمة التشغيل المتنوعة، دون التضحية بأمان الشبكة أو تعقيد إدارة الهويات.
المراجع:
-
Red Hat Documentation – System Security Services Daemon (SSSD): https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/
-
Ubuntu Official Documentation – Integration with Active Directory: https://ubuntu.com/server/docs/service-sssd

