web-dev-qa-db-ja.com

初期化中にクライアントがkerberosデータベースに見つかりません

Ubuntu 14.10にSquid3をインストールしていますが、それをKerberos 5を使用してWindows Server 2012のADDSに統合したいと思います。私のインフラストラクチャは次のとおりです。

デフォルトゲートウェイ:

192.168.1.1

DNS&ドメインコントローラー(Windows Server 2012):

dc.mydomain.com

 address   192.168.1.250
 netmask 255.255.255.0
 gateway 192.168.1.1

プロキシ(Ubuntuデスクトップ14.10)vmproxy

address 192.168.1.251
netmask 255.255.255.0
gateway 192.168.1.1
dns-search mydomain.com
dns-nameservers 192.168.1.2

手順は次のとおりです

手順1:DNSルックアップを確認します。正引きと逆引きの両方で正常に機能します。

手順2:プロキシサーバーで正しいタイムゾーンを構成します。

  $ Sudo service ntp stop
  $ Sudo ntpdate -b dc.mydomain.com
  $ Sudo service ntp start

ステップ3:Kerberosクライアントライブラリをインストールし、Kerberosレルム名をMYDOMAIN.COMに設定します

$ Sudo apt-get install krb5-user

ステップ4:Kerberos構成ファイル/etc/krb5.confを編集します。

[libdefaults]
default_realm = MYDOMAIN.COM    
default_tgs_enctypes = rc4-hmac des3-hmac-sha1    
default_tkt_enctypes = rc4-hmac des3-hmac-sha1

Kerberos構成が正しいことを確認してください。沿って

$ kinit [email protected]
$ klist

ステップ:5 Active Directoryで特殊なユーザーを作成し、このユーザーをKerberosプリンシパル名にマッピングする

c:/> ktpass -princ HTTP/[email protected] -mapuser [email protected] -crypto rc4-hmac-nt -pass P@ssw0rd -ptype KRB5_NT_PRINCIPAL -out krb5.keytab

手順:6 keytabファイルをvmproxyの/etc/krb5.keytabにコピーします


私の/etc/krb5.confは次のとおりです:

[libdefaults]
default_realm= MYDOMAIN.COM
default_tgs_enctypes=rc4.hmac des3-hmac.sha1
default_tkt_enctypes=rc4.hmac des3-hmac.sha1

[realms]
MYDOMAIN.COM={

kdc=dc.mydomain.com
admin_server=dc.mydomain.com
default_domain=mydomain.com

}

[domain_realm]
.mydomain.com=  MYDOMAIN.COM
mydomain.com=MYDOMAIN.COM

今、dc.mydomain.comからTGTを:としてテストするとき

$ kinit -V -k -t /etc/krb5.keytab HTTP/[email protected]

それは言う:

Using default cache: /tmp/krb5cc_0
Using principal: HTTP/[email protected]
Using Keytab: /etc/krb5.keytab
kinit:Client 'HTTP/[email protected]' not found in kerberos database while getting initial credentials

使用中

$ kinit -k

それは言う

kinit:Cannot determine realm for Host (principal Host/vmproxy@)
1
Vinod Patidar

このコマンド:

c:/> ktpass -princ HTTP/[email protected] -mapuser [email protected] -crypto rc4-hmac-nt -pass P@ssw0rd -ptype KRB5_NT_PRINCIPAL -out krb5.keytab

HTTP/[email protected]をADの[email protected]ユーザーに関連付けられたサービスプリンシパルに設定すると思います。 Active Directoryでは通常、サービスプリンシパルとして認証することはできません(具体的には、AS_REQ経由でTGTを取得することはできません)。理論的には、サービスプリンシパルはユーザーの資格情報を受け入れるためのものであり、Kerberosレルムに対する認証のためのものではありません。

これはUnix KDCとは異なり、通常はデフォルトで「サービスプリンシパル」と「ユーザープリンシパル」を区別しないため、kinitを使用して認証できます。 Active Directoryでは、代わりにKDCはプリンシパルが存在しないように見せかけ、kinitをしようとすると混乱を招く傾向があります。

他のユーザーとして正常に認証できる場合は、代わりに次のコマンドを実行して、サービスプリンシパルが機能しているかどうかをテストしてみます。

$ kinit some_other_user
$ kvno HTTP/[email protected]

これは、HTTP/vmproxy.mydomain.com @ MYDOMAIN.COMのサービスチケットを取得するだけです。または、設定したサービスプリンシパルの代わりに[email protected]として認証できる場合があります。

HTTP/[email protected]として直接kinitを実行できるようにする必要がある場合、それは可能だと思いますが、関連するADアカウントのuserPrincipalName属性を変更する必要があります。現時点ではその方法を思い出せませんが、正しく思い出せば、そのようなUPNは1つしか持てません。同じアカウントに対して複数の異なるプリンシパル名をkinitにすることはできません。

4
adeason