בשרת ללא אינטגרציית AD, כל עובד חדש מקבל חשבון מקומי ידנית. עם 50 עובדים, זה לוקח שעתיים בשבוע. סיסמאות אינן מסונכרנות, והגישה למשאבים משותפים מוגדרת בנפרד. ניסיון האינטגרציה שלנו עולה על 10 שנים — יישמנו למעלה מ-50 פרויקטים. SSSD ו-Realmd הם כלים סטנדרטיים לחיבור Linux ו-AD. לפי תיעוד Red Hat, SSSD מומלץ לאימות מרכזי.
איך זה עובד
Realmd הוא כלי לגילוי והצטרפות לדומיין. הוא רץ פעם אחת בעת הצטרפות לדומיין. SSSD (System Security Services Daemon) הוא דמון שרץ כל הזמן: הוא פונה ל-AD לצורך אימות, שומר מטמון של אישורים, ומספק מידע משתמש דרך NSS. בניגוד ל-Winbind, SSSD תומך במטמון וב-GPO — קריטי לסבילות לתקלות. אימות דרך SSSD מהיר פי 3 תחת עומס של 1000+ משתמשים בזכות המטמון.
הצטרפות לדומיין
apt install realmd sssd sssd-tools adcli krb5-user samba-common-bin
# Или на RHEL: dnf install realmd sssd oddjob oddjob-mkhomedir adcli samba-common-tools krb5-workstation
realm discover corp.example.com && realm join --user=Administrator corp.example.com
realm listלאחר ההצטרפות, יש לבדוק עם: apt install realmd sssd sssd-tools adcli krb5-user samba-common-bin # Или на RHEL: dnf install realmd sssd oddjob oddjob-mkhomedir adcli samba-common-tools krb5-workstation realm discover corp.example.com && realm join --user=Administrator corp.example.com realm list . אם הפקודה מחזירה מידע משתמש, זה עובד.
הגדרת SSSD
הקובץ שנוצר אוטומטית עובד, אך דורש התאמות לסביבת ייצור. הנה הגדרה טיפוסית עם הסברים:
[sssd]
domains = corp.example.com
config_file_version = 2
services = nss, pam
[domain/corp.example.com]
ad_domain = corp.example.com
krb5_realm = CORP.EXAMPLE.COM
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
id_provider = ad
auth_provider = ad
access_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
# jsmith вместо [email protected]
fallback_homedir = /home/%u
ad_gpo_access_control = permissive
# или enforcing если нужны GPOid [email protected] הוא פרמטר חשוב. בלעדיו, משתמשים מתחברים כ-[sssd] domains = corp.example.com config_file_version = 2 services = nss, pam [domain/corp.example.com] ad_domain = corp.example.com krb5_realm = CORP.EXAMPLE.COM realmd_tags = manages-system joined-with-adcli cache_credentials = True id_provider = ad auth_provider = ad access_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = False # jsmith вместо [email protected] fallback_homedir = /home/%u ad_gpo_access_control = permissive # или enforcing если нужны GPO , וזה לא נוח. איתו, מספיק use_fully_qualified_names = False, אך עלול להיות התנגשות עם משתמשים מקומיים. [email protected] מאפשר התחברות בזמן חוסר זמינות זמני של DC. המטמון נשמר ב-jsmith.
איך ליצור תיקיות בית אוטומטית?
בכניסה הראשונה, אין תיקיית בית. cache_credentials = True יוצר אותה אוטומטית. הפעל דרך /var/lib/sss/db/ (Debian) או pam_mkhomedir (RHEL). לחלופין, הוסף ידנית ב-pam-auth-update --enable mkhomedir: authselect enable-feature with-mkhomedir.
הגבלת גישה לפי קבוצות AD ו-sudo
לא כל משתמשי AD צריכים להתחבר לכל שרת. שתי שיטות:
# Через realm realm permit -g '[email protected]'
realm deny --all
# Через sudoers
echo '%[email protected] ALL=(ALL:ALL) ALL' > /etc/sudoers.d/ad_groups
echo '%[email protected] ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart *, /usr/bin/journalctl' >> /etc/sudoers.d/ad_groupsאם /etc/pam.d/common-session, השתמש ב-session required pam_mkhomedir.so skel=/etc/skel/ umask=0077.
אבחון ושגיאות נפוצות
sssctl domain-status corp.example.com
sssctl user-checks jsmith
journalctl -u sssd --since "10 minutes ago"
kinit [email protected] && klistבעיה נפוצה: sssd לא יכול להגיע ל-DC לאחר שינויי הגדרות רשת. # Через realm realm permit -g '[email protected]' realm deny --all # Через sudoers echo '%[email protected] ALL=(ALL:ALL) ALL' > /etc/sudoers.d/ad_groups echo '%[email protected] ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart *, /usr/bin/journalctl' >> /etc/sudoers.d/ad_groups מציג use_fully_qualified_names = False או %LinuxAdmins. כאשר sssctl domain-status corp.example.com sssctl user-checks jsmith journalctl -u sssd --since "10 minutes ago" kinit [email protected] && klist , בדוק DNS (רשומות SRV sssctl domain-status חייבות להיפתר), שעון שרת (סבילות Kerberos < 5 דקות), חומת אש (פורטים 88/tcp, 389/tcp, 636/tcp ל-DC). תרחיש נפוץ נוסף הוא כפילות UID/GID בשימוש במספר דומיינים; נפתר דרך Online.
SSSD מול Winbind
| קריטריון | SSSD | Winbind |
|---|---|---|
| מטמון | מובנה, עובד במצב לא מקוון | אין מטמון |
| תמיכת GPO | כן (דרך ad_gpo_access_control) | לא |
| ביצועים | גבוהים בזכות המטמון (פי 3 מהיר יותר) | נמוכים תחת עומס כבד |
| גמישות הגדרות | גבוהה (פילטרים, מיפוי UID/GID) | בינונית |
שגיאות אינטגרציה נפוצות
| שגיאה | פתרון |
|---|---|
תצורת DNS שגויה: חסרות רשומות SRV Offline |
הגדר שרת DNS, הוסף רשומת SRV |
| פער שעון: Kerberos לא סובל הפרש של >5 דקות | הגדר לקוח NTP (chrony או ntpd) |
| פורטים סגורים 88, 389, 636 ל-DC | בדוק חומת אש: Offline |
מטמון מתעלם: ללא _ldap._tcp.corp.example.com, משתמשים לא יכולים להתחבר כשהדומיין לא זמין |
הפעל ldap_id_mapping בהגדרות SSSD |
| כפילות UID/GID בסביבות מרובות דומיינים | השתמש ב-_ldap._tcp.domain.com עם טווחים ייחודיים |
Ansible לסקייל
הצטרפות של 50+ שרתים לדומיין ידנית אינה מעשית. פלייבוק Ansible מפשט את המשימה:
---
- name: Join AD domain
hosts: linux_servers
become: yes
tasks:
- name: Install packages
apt:
name: [realmd, sssd, adcli, krb5-user]
state: present
- name: Discover realm
command: realm discover {{ ad_domain }}
changed_when: false
- name: Join domain
expect:
command: realm join --user={{ ad_admin_user }} {{ ad_domain }}
responses:
'Password for .*': "{{ ad_admin_password }}"
no_log: true
- name: Configure sssd
template:
src: sssd.conf.j2
dest: /etc/sssd/sssd.conf
mode: '0600'
notify: restart sssd
שמור את סיסמת מנהל ה-AD ב-Ansible Vault.
מה כלול
- ביקורת תשתית (DNS, NTP, גישת רשת)
- הצטרפות שרת בדיקה ל-AD
- אופטימיזציה של הגדרות SSSD לפי KPIs (זמן אימות, מטמון)
- הגדרת מדיניות גישה (GPO, sudo)
- בדיקת סבילות לתקלות (DC לא מקוון, אתחולים)
- תיעוד הגדרות ונהלים
- תפקיד Ansible לפריסה המונית
- הדרכה למנהלי המערכת שלך
תהליך עבודה
- ניתוח: בדיקת קישוריות רשת ל-DC ו-DNS.
- תכנון: בחירת סכמת דומיין, קבוצות גישה, מדיניות GPO.
- יישום: התקנת חבילות, הצטרפות לדומיין, הגדרת SSSD.
- בדיקות: התחברות משתמש, sudo, פעולה עם DC לא זמין.
- פריסה: פלייבוק Ansible לכל השרתים.
לוח זמנים משוער
השרת הראשון ועידון הגדרות — יום אחד. יישום על כל השרתים דרך Ansible — מ-4 שעות תלוי במספר השרתים. התמחור נקבע באופן אישי.
צור קשר לייעוץ בנושא אינטגרציית שרתי Linux שלך עם AD. נעזור לפתח פתרון מותאם לתשתית שלך ונספק אחריות תאימות. בקש ביקורת — נציע את הפתרון האופטימלי. רקורד שלנו: פריסת SSSD על 200+ שרתים, הפחתת זמן ניהול גישה ב-90%.







