Kerberos 認証を使用するときに、kdm と ssh が異なる完全修飾ドメイン名を検出する

Kerberos 認証を使用するときに、kdm と ssh が異なる完全修飾ドメイン名を検出する

私は勤務先の会社で、Kubuntu 12.04 Linux ワークステーションに Kerberos ログイン サポート (Kerberos を提供する Windows AD ドメイン) を設定しようとしています。

ほぼ完全に動作していますが、マシン ログイン (kdm 経由) と ssh の両方で同時に Kerberos を動作させることができません。問題は、kdm がホストの完全修飾ドメインを hostname.domain として検出し、ssh が完全修飾ドメインを hostname.domain として検出することにあるようです (末尾の . がないことに注意してください)。

Kerberos 要求で使用されるドメインの末尾に . がないか、または存在すると、チケット要求が失敗し、「Kerberos データベースにサーバーが見つかりません」というエラーが発生します。/etc/hosts を更新して完全修飾ホスト名を hostname.domain. にして、samba を使用してドメインに参加すると、Kerberos を使用した kdm ログインは正常に機能しますが、ssh ログインは失敗します。/etc/hosts を更新してホストを hostname.domain にすると、Kerberos を使用した ssh ログインは機能しますが、kdm ログインは失敗します。

2 つのサービスが完全修飾ドメイン名を異なる方法で検出する理由が少しわかりません。広範囲に検索しましたが、この問題を抱えている他の人の参考資料や、いずれかのサービスにドメイン名を異なる方法で検出させるオプションは見つかりませんでした。

技術的な詳細

使用されている Kubuntu 12.04 は、私の制御外の技術的な要件であるため、現段階ではそれ以降のディストリビューションにアップグレードすることはできません。

pam_krb5 は、pam 経由で Kerberos 認証を提供するために使用されています。使用されている DNS は Windows DNS ではありません (他のインフラストラクチャの作業が完了するまで DNS サーバーを切り替えることはできません)。そのため、ドメインへの samba Kerberos 参加に使用される主な詳細は、次のような /etc/hosts から取得されます。

127.0.0.1 hostname.domain.  hostname  localhost

(ただし、使用中の UNIX DNS サーバーには、ホストの正しいフォワード DNS エントリとリバース 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には、次のような標準のpam_krb5.soエントリを持つ共通pamファイルのみが含まれています。

auth sufficient pam_krb5.so minimum_uid=1000

これらは基本的にpam_krb5.confのマニュアルページから直接引用したものです。

SSH設定には

 GSSAPIAuthentication yes

残りは標準のデフォルトの ubuntu ssh 設定ファイルです。

サービス間で検出された完全修飾ドメインの不一致の原因についてご指摘いただければ幸いです。

答え1

ここで何が起こっているのかがわかったと思います。ドメインの末尾に . を付けて/付けずにホストが結合された後、キータブ ファイルに追加情報が保存され、それが奇妙な動作の原因だったようです。

一度 /etc/krb5.keytab を削除し、ドメインへの参加を再実行すると、末尾の . を除いたドメイン名のみで設定された新しいキータブが作成されました。その時点では、kdm と ssh の両方が Kerberos で正常に動作していました。

関連情報