Это сводит меня с ума. Я пытаюсь настроить интегрированный в AD сервер Ubuntu 16.04 для приема билетов Kerberos при входе в систему через SSH. У меня есть сервер CentOS 7, который без проблем принимает билеты после присоединения к домену AD, но я не получил правильную конфигурацию на сервере Ubuntu.
Вот установка:
Все было подключено к AD через realm, и это работает без проблем. Все также получают билеты Kerberos при входе в систему или через kinit. SSHing с wksf25 на sc7 работает нормально, и я могу войти в систему через SSH, используя билет kerberos, который я получаю при входе в wkfs25.
Вот шаги настройки для Ubuntu:
Установите пакеты:
apt install realmd oddjob oddjob-mkhomedir sssd sssd-tools adcli samba-common krb5-user chrony packagekit libpam-krb5
chrony.conf
использовать AD DC.Настройте realmd.conf: vim /etc/realmd.conf
[users]
default-home = /home/%D/%U
[realdomain.tld]
fully-qualified-names = no
manage-system = no
automatic-id-mapping = yes
Присоединяйтесь к домену: realm join -vU domainuser realdomain.tld
realm permit -R realdomain.tld -g linuxadmins
Специфика Ubuntu - настройка pam для создания домашнего каталога при входе в систему: `vim /etc/pam.d/common-session '
session optional pam_mkhomedir.so umask=0077
Только для Ubuntu - включите аутентификацию GSSAPI в OpenSSH: vim /etc/ssh/sshd_config
GSSAPIAuthentiction yes
GSSAPICleanupCredentials no
Войдите в систему с учетной записью домена и убедитесь, что все работает. На данный момент все работает, за исключением входа по SSH без пароля через билеты Kerberos на сервере Ubuntu.
Вот что я получаю от realm list
:
realdomain.tld
type: kerberos
realm-name: REALDOMAIN.TLD
domain-name: realdomain.tld
configured: kerberos-member
server-software: active-directory
client-software: sssd
required-package: sssd-tools
required-package: sssd
required-package: libnss-sss
required-package: libpam-sss
required-package: adcli
required-package: samba-common-bin
login-formats: %U
login-policy: allow-permitted-logins
permitted-logins:
permitted-groups: linuxusers
sssd.conf:
[sssd]
domains = realdomain.tld
config_file_version = 2
services = nss, pam
[domain/realdomain.tld]
ad_domain = realdomain.tld
krb5_realm = REALDOAMIN.TLD
realmd_tags = joined-with-adcli
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%d/%u
access_provider = simple
simple_allow_groups = linuxusers
krb5.conf:
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_ccache_name = KEYRING:persistent:%{uid}
default_realm = REALDOMAIN.TLD
[realms]
REALDOMAIN.TLD = {
}
[domain_realm]
realdomain.org = REALDOMAIN.TLD
.realdomain.org = REALDOMAIN.TLD
Что мне не хватает?
Исправлена. realm join -vU domainuser --membership-software=samba --client-software=sssd realdomain.tld
присоединиться к домену AD в Ubuntu, а не позволять realm
используйте значения по умолчанию.
В конфигурациях SSSD было одно небольшое отличие, которое я не считал уместным, но оказалось, что оно имело место.
Ubuntu: realmd_tags = joined-with-adcli
CentOS: realmd_tags = joined-with-samba
Чтобы по-другому взглянуть на проблему, я создал виртуальную машину OpenSUSE и начал исследовать, как SUSE интегрирует их с AD. Пока я выяснял, как работает SUSE, я наткнулся на сообщение, в котором предлагалось использовать Samba для присоединения к Windows Server 2012+ AD вместо adcli
.1 Добавьте это к разнице в конфигурациях выше, и это будет ключом к разгадке происходящего.
Выход из домена и повторное присоединение с обновленным realm
команда исправила проблему, и в последний день все было стабильно.
У меня нет точной основной причины различий между этими двумя методами, но это потребует дополнительных исследований, и это борьба за другой день.
У нас возникла аналогичная ситуация, совпадающая с добавлением сертификата SSL для поддержки LDAPS (хотя я никогда не отменял это изменение, чтобы определить, было ли оно причинным). Я не уверен, есть ли причина предпочесть adcli
, но я нашел два исправленных варианта realm join
пока все еще использую adcli
(в Ubuntu 14.04 и 16.04):
Решение 1 (Ubuntu 16.04 или 14.04)
Добавьте две настройки в наш krb5.conf
(ни один не помог):
[libdefaults]
...
canonicalize = true
rdns = false
Решение 2 (только Ubuntu 14.04)
Впоследствии я наткнулся на этот Проблема с git, предложившая другой вариант, который (сам по себе) также работает для нас 14.04:
[libdefaults]
...
dns_canonicalize_hostname = false
FWIW
Фактически мы полностью контролируем наш DNS и не смогли найти никаких проблем в наших существующих записях - или каких-либо изменений, которые устраняли необходимость в них.