Интеграция Linux-серверов в домен Active Directory: SSSD и Realmd

Каждый новый сотрудник — это ручная возня с локальными учётками, разрозненными паролями и настройкой доступа к общим ресурсам. Мы интегрируем Linux-серверы в Active Directory с помощью SSSD и Realmd под ключ — от аудита до внедрения, обеспечивая централизованную аутентификацию и последующую поддержку.
Часто задаваемые вопросы

На сервере без интеграции с 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-роль для массового развёртывания
  • Обучение ваших администраторов

Процесс работы

  1. Аналитика: проверка сетевой доступности к DC и DNS.
  2. Проектирование: выбор схемы доменов, групп доступа, политик GPO.
  3. Реализация: установка пакетов, присоединение к домену, настройка SSSD.
  4. Тестирование: вход пользователей, sudo, работа при недоступном DC.
  5. Деплой: Ansible-плейбук для всех серверов.

Сроки ориентировочно

Первый сервер и отработка конфигурации — 1 день. Применение на всех серверах через Ansible — от 4 часов в зависимости от количества хостов. Стоимость рассчитывается индивидуально.

Свяжитесь с нами для консультации по интеграции ваших Linux-серверов с AD. Мы поможем разработать решение под вашу инфраструктуру и предоставим гарантию совместимости. Закажите аудит — мы предложим оптимальное решение. Наш опыт: внедрили SSSD на 200+ серверах, сократив время на управление доступом на 90%.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139