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@)
このコマンド:
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
にすることはできません。