Я пытаюсь настроить поддержку входа в систему Kerberos (домен Windows AD, предоставляющий kerberos) для рабочих станций Kubuntu 12.04 Linux в компании, в которой я работаю.
Он почти полностью работает, но я не могу заставить Kerberos работать как для входа в систему (через kdm), так и для ssh одновременно. Проблема, похоже, в том, что kdm определяет полностью определенный домен хоста как hostname.domain. а ssh определяет полностью определенный домен как hostname.domain (обратите внимание на отсутствие завершающего.)
Это отсутствие или наличие. на конце домена, который используется в запросах Kerberos, достаточно, чтобы запрос билета завершился ошибкой «Сервер не найден в базе данных Kerberos». Если я обновлю / etc / hosts, чтобы получить полное имя хоста как hostname.domain. и присоединиться к домену с использованием samba. kdm-логины с использованием kerberos работают правильно, но ssh-логины не работают. Если я обновлю / etc / hosts, чтобы в качестве хоста было имя hostname.domain, тогда ssh-логины с использованием kerberos будут работать, но войти в kdm не удастся.
Я немного не понимаю, почему две службы по-разному определяют полностью определенное доменное имя - я провел обширный поиск и не нашел никаких ссылок на кого-либо еще, у кого есть эта проблема, или какие-либо варианты принудительного использования одной из служб различать их доменные имена.
Технические подробности
Использование Kubuntu 12.04 является техническим требованием вне моего контроля, поэтому обновление до более позднего дистрибутива на данном этапе не вариант.
pam_krb5 используется для обеспечения аутентификации Kerberos через pam. Используемый dns не является dns Windows (нельзя переключать DNS-серверы, пока не будет завершена дальнейшая работа над другой инфраструктурой), поэтому основные детали, используемые для керберозного присоединения samba к домену, приходят из / etc / hosts, который выглядит примерно так
127.0.0.1 hostname.domain. hostname localhost
(хотя используемый dns-сервер unix имеет правильные прямые и обратные записи DNS для хостов)
/etc/krb5.conf (в основном это дистрибутив по умолчанию с указанием данных домена и серверов)
[libdefaults]
default_realm = DOMAIN
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
# samba 3 didn't like the default enc type so overridden to ones it supported
default_tkt_enctypes = arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc
default_tgs_enctypes = arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc
[realms]
DOMAIN = {
kdc = dc01.domain
kdc = dc02.domain
admin_server = dc01.domain
}
[domain_realm]
.domain = DOMAIN
[login]
krb4_convert = true
krb4_get_tickets = false
/etc/samba/smb.conf (используется только для присоединения к домену)
[global]
security = ads
realm = WETAFX.CO.NZ
workgroup = WETAFX.CO.NZ
kerberos method = secrets and keytab
client signing = yes
client use spnego = yes
server string = %h server (Samba, Ubuntu)
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
pam мудрый /etc/pam.d/kdm просто включает файлы common-pam, которые имеют стандартные записи pam_krb5.so, такие как
auth sufficient pam_krb5.so minimum_uid=1000
которые в основном взяты непосредственно из страниц руководства для pam_krb5.conf
конфигурация ssh имеет
GSSAPIAuthentication yes
а остальное - стандартный конфигурационный файл ubuntu ssh по умолчанию.
Спасибо за любые указатели на то, что вызывает это несоответствие в обнаруженном полностью квалифицированном домене между службами.
Думаю, я понял, что здесь происходит. Похоже, что дополнительная информация сохраняется в файле keytab после того, как хост был присоединен с / без. в конце домена, и именно отсюда происходило странное поведение.
После того, как я удалил /etc/krb5.keytab и повторно зарегистрировал присоединение к домену, в результате был создан новый keytab, который когда-либо устанавливался только с доменным именем, настроенным без расширения. в конце. На этом этапе и kdm, и ssh корректно работали с kerberos.