Linux вводится в домен, для которого HopeDC является KDC (выдаёт билеты Kerberos). На странице «Домены» это видно в колонке «Linux»:
| Бейдж | Что означает | Куда вводить Linux |
|---|---|---|
| «Поддерживается» | Собственный домен HopeDC (создан в HopeDC или отключён от AD). | В HopeDC — по этой инструкции. |
| «Поддерживается (KDC принят)» | Домен‑зеркало MS AD, для которого выполнено «Принять роль KDC». | В HopeDC — скриптом join-hopedc.sh (ввод идёт явно через HopeDC), см. раздел 9. |
| «через реальный DC» | Домен‑зеркало MS AD: билеты выдают контроллеры Windows. | В настоящий контроллер MS AD (штатными средствами AD), не в HopeDC. |
_ldap._tcp, _kerberos._tcp; HopeDC создаёт их сам. Имя контроллера в записях — hopedc.<домен>.| Порт | Назначение |
|---|---|
| 53 TCP/UDP | DNS (если DNS — HopeDC) |
| 88 TCP/UDP | Kerberos |
| 389 TCP/UDP | LDAP и CLDAP (realm discover, поиск контроллера SSSD) |
| 636 TCP | LDAPS (SSSD и агент политик) |
| 464 TCP/UDP | kpasswd — установка пароля компьютера при вводе и смена паролей. Без него ввод не завершится. |
| 3268/3269 TCP | Глобальный каталог |
| 445 TCP | SMB (SYSVOL) |
| 123 UDP | NTP (время для chrony) |
realmd sssd adcli и клиент Kerberos.Дальше в примерах домен — corp.local (realm CORP.LOCAL), IP HopeDC — 10.0.0.5. Подставьте свои.
Выдаваемый HopeDC sssd.conf берёт UID/GID из атрибутов каталога (ldap_id_mapping = false). Пользователь без uidNumber/gidNumber на Linux не появится.
uidNumber, gidNumber, loginShell (/bin/bash), unixHomeDirectory (/home/<логин>), gecos. Номера выдаются начиная с 10000, уникально по всему серверу.member.gidNumber) должна существовать как группа с тем же gidNumber — или будет показана числом.Современные дистрибутивы отключают RC4, поэтому нужны ключи AES. У учётных записей, созданных в HopeDC, они есть. У учётных записей, перенесённых из AD или созданных до поддержки AES, их может не быть: если kinit отвечает «KDC has no support for encryption type», один раз смените пароль учётной записи в панели.
Скрипт ввода сразу ставит агент политик Linux (Документ 11). Чтобы агент не использовал пароль администратора:
svc-hopedc-agent без административных прав; пароль показывается один раз — сохраните его.Домен → «Политики Linux» → «Агент»: укажите «IP контроллера HopeDC», способ аутентификации агента (и пароль bind‑учётки, если сервисная учётка не создана в этом сеансе) и нажмите join-hopedc.sh. Скрипт формируется под выбранный домен.
sudo bash join-hopedc.sh
# другой администратор домена для ввода:
sudo JOIN_USER=admin2 bash join-hopedc.sh
Скрипт выполняет семь шагов:
| Шаг | Что делает |
|---|---|
| 1/7 Проверка DNS | Проверяет, что имя домена разрешается; если нет — останавливается с подсказкой указать DNS‑сервером HopeDC. |
| 2/7 Пакеты | apt: realmd sssd sssd-tools adcli krb5-user oddjob oddjob-mkhomedir python3-ldap3 chrony (без вопросов debconf); dnf: аналогичный набор с krb5-workstation. |
| 3/7 Время | Настраивает chrony на HopeDC (server <IP> iburst, makestep) и выравнивает часы — до ввода в домен. |
| 4/7 Конфигурация | Пишет /etc/krb5.conf и /etc/sssd/sssd.conf (раздел 4.2). |
| 5/7 Ввод в домен | realm join (при неудаче — adcli join) от имени JOIN_USER; запрашивает пароль. |
| 6/7 Агент | Ставит /usr/local/bin/hopedc-agent.py (и сертификат в /etc/hopedc/ в режиме mTLS). |
| 7/7 Таймер | hopedc-agent.timer: через 2 мин после загрузки и каждые 10 минут; включает автосоздание домашних каталогов. |
После скрипта проверьте вход (раздел 5).
# Debian / Ubuntu / Astra Linux
sudo DEBIAN_FRONTEND=noninteractive apt install -y realmd sssd sssd-tools adcli krb5-user oddjob oddjob-mkhomedir chrony
# RHEL / Alma / Rocky / Fedora
sudo dnf install -y realmd sssd adcli krb5-workstation oddjob oddjob-mkhomedir chrony
/etc/krb5.conf:
[libdefaults]
default_realm = CORP.LOCAL
dns_lookup_kdc = true
rdns = false
default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 arcfour-hmac
default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 arcfour-hmac
[realms]
CORP.LOCAL = {
kdc = 10.0.0.5
admin_server = 10.0.0.5
}
[domain_realm]
.corp.local = CORP.LOCAL
corp.local = CORP.LOCAL
/etc/sssd/sssd.conf (права 600):
[sssd]
domains = corp.local
config_file_version = 2
services = nss, pam, sudo
[domain/corp.local]
id_provider = ad
auth_provider = ad
access_provider = ad
ad_gpo_access_control = permissive
sudo_provider = ad
ldap_sudo_search_base = DC=corp,DC=local
ad_domain = corp.local
krb5_realm = CORP.LOCAL
ad_server = 10.0.0.5
ldap_id_mapping = false
fallback_homedir = /home/%u
default_shell = /bin/bash
use_fully_qualified_names = false
cache_credentials = true
ldap_uri = ldaps://10.0.0.5:636
ldap_tls_reqcert = allow
ad_gpo_access_control = permissive — права входа из Windows GPO к Linux не применяются (Linux управляется политиками HopeDC, Документ 11).use_fully_qualified_names = false — вход по короткому имени (ivanov); при true — ivanov@corp.local.ldap_tls_reqcert = allow — подключение по IP не совпадает с именем в сертификате LDAPS. Для строгой проверки укажите ldap_uri = ldaps://hopedc.corp.local:636, положите корневой сертификат ЦС домена в систему и задайте demand.echo -e "server 10.0.0.5 iburst\nmakestep 1.0 3" | sudo tee /etc/chrony/conf.d/hopedc.conf # RHEL: /etc/chrony.d/
sudo systemctl restart chrony || sudo systemctl restart chronyd
chronyc tracking
dig -t SRV _ldap._tcp.corp.local
realm discover corp.local # type: kerberos, server-software: active-directory
kinit administrator@CORP.LOCAL
klist -e # etype aes256-cts-hmac-sha1-96
sudo realm join corp.local -U administrator
# или напрямую adcli (подробный вывод, контроллер по ИМЕНИ, не по IP):
sudo adcli join corp.local -U administrator --domain-controller=hopedc.corp.local -v
# в другое подразделение:
sudo adcli join corp.local -U administrator --computer-ou="OU=Linux,DC=corp,DC=local"
Успешный adcli join -v заканчивается строками Set computer password и Added the entries to the keytab. realm join дополнительно настраивает NSS/PAM; после голого adcli join включите их сами:
sudo pam-auth-update --enable mkhomedir # Debian/Ubuntu
sudo authselect select sssd with-mkhomedir --force && sudo systemctl enable --now oddjobd # RHEL
sudo systemctl restart sssd
realm join переписал sssd.conf, верните в него строки ldap_id_mapping = false, ad_gpo_access_control = permissive и sudo_provider из раздела 4.2 и перезапустите sssd.realm list # домен, configured: kerberos-member
sudo klist -k # ключи host/… и HOST$ в /etc/krb5.keytab
id ivanov # uid/gid из UNIX‑атрибутов, группы домена
getent passwd ivanov
su - ivanov # или ssh ivanov@<хост>
sudo -l -U ivanov # sudo‑правила (Документ 11)
В панели: домен → «Структура домена» → Computers — объект компьютера с objectSid, primaryGroupID = 515 (Domain Computers), SPN host/, RestrictedKrbHost/ и cifs/.
sudo realm leave corp.local -U administrator # или: sudo adcli delete-computer -U administrator
sudo rm -f /etc/krb5.keytab && sudo sss_cache -E
Если машина недоступна — удалите объект компьютера в «Структуре домена». Перед повторным вводом машины с тем же именем удалите её старый объект компьютера.
| Шаг клиента | Ответ HopeDC |
|---|---|
| Поиск контроллера (DNS SRV, CLDAP :389) | Записи DC‑locator создаются при старте; CLDAP отвечает именем домена, контроллера (hopedc.<домен>) и SID домена. |
| Вход администратора по Kerberos, LDAP‑bind | Билеты AES (RC4 — запасной); служебная учётка hopedc-ldap-svc со SPN ldap/, GC/, cifs/, HOST/ контроллера. |
| Поиск контейнера компьютеров | wellKnownObjects корня домена → CN=Computers. |
| Создание объекта компьютера | Только администраторами домена; objectSid из пула RID домена, primaryGroupID = 515, к каждому host/X автоматически добавляется cifs/X. |
| Установка пароля компьютера (kpasswd :464) | Принципал kadmin/changepw; HopeDC вычисляет NT‑хэш и ключи AES. |
| Keytab | Записывает сам клиент (adcli/realm) в /etc/krb5.keytab. |
| Изменения самим компьютером | Компьютер может менять у своего объекта только dNSHostName, SPN, msDS-SupportedEncryptionTypes, userCertificate и operatingSystem*. |
| Симптом | Причина и решение |
|---|---|
| Скрипт: «Имя … не разрешается» | DNS клиента не указывает на HopeDC. Netplan: nameservers: addresses: [10.0.0.5], search: [corp.local]; NetworkManager: nmcli con mod <соединение> ipv4.dns 10.0.0.5 ipv4.dns-search corp.local. |
kinit: Clock skew too great | Расхождение часов больше 5 минут: включите NTP в HopeDC (раздел 1) или синхронизируйте время клиента. |
kinit: KDC has no support for encryption type | У учётки нет ключей AES — смените пароль в панели. |
realm join: Cannot find domain / realm discover пусто | Нет SRV‑записей в DNS клиента или закрыт UDP 389 (CLDAP); проверьте dig -t SRV _ldap._tcp.corp.local. Домен с бейджем «через реальный DC» в HopeDC не вводится. |
adcli join: Server not found in Kerberos database | Контроллер указан по IP — укажите имя hopedc.corp.local. |
adcli join: Couldn't set password for computer account | Закрыт порт 464 TCP/UDP. |
adcli join: Insufficient access | Учётка для ввода — не администратор домена. |
id ivanov: no such user | Нет uidNumber/gidNumber (раздел 2.1); после назначения — sudo sss_cache -E. |
| Вход отклоняется, в журнале sssd — GPO access | В sssd.conf нет ad_gpo_access_control = permissive. |
| Нет домашнего каталога | Включите mkhomedir (раздел 4.5). |
| Запросы клиента отклоняются без ответа | Задан список «Сетевой доступ → Клиенты домена» без подсети клиента. |
Журналы: клиент — journalctl -u sssd, /var/log/sssd/*.log (для подробностей debug_level = 6 в sssd.conf); HopeDC — раздел «Логирование» (ввод компьютера, Kerberos, kpasswd).
objectSid выдаёт AD из своего пула RID, затем объект появляется в HopeDC с тем же SID; SPN и dNSHostName тоже записываются в AD;hopedc.<домен> (имя контроллера HopeDC). SRV‑записи локатора остаются как в AD — поэтому скрипт join-hopedc.sh для такого домена вводит компьютер явно через HopeDC (adcli join --domain-controller=hopedc.<домен>), а не через realm join, который выбрал бы контроллер AD с другим ключом krbtgt. Скачайте скрипт заново после «Принять роль KDC»;hopedc.<домен>)._ldap._tcp.<домен>, имя hopedc.<домен>) за последние 5 минут — раньше без входа отдавался основной домен сервера, и adcli не находил контейнер Computers второго домена.sAMAccountName — агент политик находит такие машины по обрезанному имени.adcli join — объект компьютера, пароль через kpasswd, keytab, SPN, objectSid, глобальный каталог. Вход через SSSD проверьте на своём дистрибутиве по разделу 5 перед массовым вводом. v181: ввод в домен‑зеркало (Samba AD в роли MS AD) с принятой ролью KDC — objectSid из AD, keytab, вход компьютера по keytab до и после отключения от AD.