На сервере без интеграции с AD каждому новому сотруднику заводят локальную учётную запись вручную. При штате 50 человек это отнимает 2 часа в неделю. Пароли не синхронизируются, доступ к общим ресурсам настраивается отдельно. Наш опыт интеграции превышает 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После присоединения проверяем: id [email protected]. Если команда возвращает информацию о пользователе, всё работает.
Конфигурация 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 если нужны GPO
use_fully_qualified_names = False — важный параметр. Без него пользователь входит как [email protected], что неудобно. С ним — просто jsmith, но может конфликтовать с локальными пользователями. cache_credentials = True — позволяет входить при временной недоступности DC. Кэш хранится в /var/lib/sss/db/.
Как настроить автосоздание домашних директорий?
При первом входе домашней директории нет. pam_mkhomedir создаёт её автоматически. Активируется через pam-auth-update --enable mkhomedir (Debian) или authselect enable-feature with-mkhomedir (RHEL). Альтернативно добавьте вручную в /etc/pam.d/common-session строку: session required pam_mkhomedir.so skel=/etc/skel/ umask=0077.
Ограничение доступа по группам 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Если 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Частая проблема: sssd не может обратиться к DC после изменения сетевой конфигурации. sssctl domain-status показывает Online или Offline. При Offline — проверять DNS (должны резолвиться SRV-записи _ldap._tcp.corp.example.com), время на сервере (Kerberos не терпит расхождения > 5 минут), firewall (порты 88/tcp, 389/tcp, 636/tcp к DC). Ещё один частый сценарий — дублирование UID/GID при использовании нескольких доменов; решается через ldap_id_mapping.
Сравнение SSSD и Winbind
| Критерий | SSSD | Winbind |
|---|---|---|
| Кэширование | Встроенное, работает офлайн | Нет кэширования |
| Поддержка GPO | Да (через ad_gpo_access_control) | Нет |
| Производительность | Высокая за счёт кэширования (в 3 раза быстрее) | Низкая при большой нагрузке |
| Гибкость настройки | Высокая (фильтры, маппинг UID/GID) | Средняя |
Типичные ошибки при интеграции
| Ошибка | Решение |
|---|---|
Не настроен DNS: отсутствуют SRV-записи _ldap._tcp.domain.com |
Настроить DNS-сервер, добавить SRV-запись |
| Рассинхронизация времени: Kerberos не допускает расхождение > 5 минут | Настроить NTP-клиент (chrony или ntpd) |
| Не открыты порты 88, 389, 636 к DC | Проверить firewall: nc -zv dc_ip 389 |
Игнорирование кэша: без cache_credentials = True при недоступности DC пользователи не зайдут |
Включить cache_credentials = True в конфиге SSSD |
| Дублирование UID/GID при смешанной среде с несколькими доменами | Использовать ldap_id_mapping с уникальными диапазонами |
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 под KPI (время аутентификации, кэширование)
- Настройка политик доступа (GPO, sudo)
- Тестирование отказоустойчивости (отключение DC, перезагрузки)
- Документирование конфигурации и процедур
- Ansible-роль для массового развёртывания
- Обучение ваших администраторов
Процесс работы
- Аналитика: проверка сетевой доступности к DC и DNS.
- Проектирование: выбор схемы доменов, групп доступа, политик GPO.
- Реализация: установка пакетов, присоединение к домену, настройка SSSD.
- Тестирование: вход пользователей, sudo, работа при недоступном DC.
- Деплой: Ansible-плейбук для всех серверов.
Сроки ориентировочно
Первый сервер и отработка конфигурации — 1 день. Применение на всех серверах через Ansible — от 4 часов в зависимости от количества хостов. Стоимость рассчитывается индивидуально.
Свяжитесь с нами для консультации по интеграции ваших Linux-серверов с AD. Мы поможем разработать решение под вашу инфраструктуру и предоставим гарантию совместимости. Закажите аудит — мы предложим оптимальное решение. Наш опыт: внедрили SSSD на 200+ серверах, сократив время на управление доступом на 90%.







