あいさつ、次のことを実現するために、Linux MIT KerberosをWindows2003 ActiveDirectoryとリンクする方法を考えていました。
ユーザー[email protected]は、Linux MIT Kerberosと同じサーバー上で実行されているApacheWebサイトにログインしようとします。
Apacheモジュールは、最初にローカルLinux MIT Kerberosに、その名前またはレルムでユーザーを知っているかどうかを尋ねます。
MIT Kerberosは、そのレルムに責任がないことを検出し、要求をWindows 2003 ActiveDirectoryに転送します。
Windows 2003 Active Directoryは肯定的に応答し、この情報をLinux MIT Kerberosに提供します。次に、これをApacheモジュールに通知し、ユーザーにファイルへのアクセスを許可します。
これが状況のイメージです:
この問題に関して私が読んだドキュメントは、この問題とは異なることがよくあります。
MIT KerberosをActiveDirectoryとリンクして、ActiveDirectoryサーバー上のリソースにアクセスすることについて議論する人もいます。
別の人はリンクを使用してWindowsユーザーをMIT KerberosthroughWindows 2003 Active Directoryに認証します(私の問題はその逆です。 )
だから私の質問は要約すると、これです:
Linux MIT KerberosサーバーでActiveDirectoryレルムの要求を通過させてから、応答を受信して要求元のサービスに渡すことは可能ですか?(ただし、問題がない場合は問題ありません)。要求元のサービスとWindows2003 Active Directoryは直接通信します。)
提案や建設的な批判は大歓迎です。 :)
後の編集
これに関していくつか問題があります。 MIT Kerberos(私の場合はEINDWERK.LAN)とネゴシエーションを行うように、mod_auth_kerbを正常に構成しました。また、ローカルMIT = Ubuntuでkinit
を使用するKerberosの場合、ログインを要求されることなく、ApacheWebサーバーにアクセスできます。
ただし、Active Directoryサーバー(私の場合はWINDOWS.LAN)からチケットをフェッチし、Apache Webサーバーにアクセスすると、ログインプロンプトが表示されます。 Wiresharkを介してパケットを見ると、ApacheWebサーバーがWINDOWS.LANにEINDWERK.LANのTGTを誤って使用しようとしているようです。
次のWireshark出力をアップロードしました。
成功したActiveDirectoryユーザー "tester"([email protected])のkinit
(KRB5KDC_ERR_PREAUTH_REQUIREDは無視してください。ここには事前認証はありません)
Apache Webサーバーへの1回の旅行で、問題が発生していることがわかります。 [リンク]
EDIT:はい、常にEINDWERK.LANのTGTで認証を試みます。 ADとMIT Kerberos)の間に信頼を作成して、それが修正されるかどうかを確認します。
EDIT2:わかりました、信頼を作成することで( チュートリアルです )、すべてが正しくチェックアウトされているようですが、私はActive Directoryからのチケットのrc4-hmac暗号化を強制し、ApacheHTTPサービスはdes3-cbc-sha1で暗号化されます。プリンシパルを削除し、そのキーを特定の暗号化で暗号化する方法を知っている人はいますか?
了解しました。Kerberosデータベースを再作成し、すべてのenctypeでプリンシパルを追加することで、利用可能になりました(aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3)次に、HTTP/link.to.website @ REALMをApacheのキータブにエクスポートすると、ActiveDirectoryユーザーもログインできるようになります。
エンコーディングごとにプリンシパルを追加し、それをキータブにエクスポートする例を次に示します。
addprinc -e "aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3" HTTP /www.eindwerk。 lan
ktadd -e "aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3" -kt/etc/Apache2 /Apache.keytab HTTP/www.eindwerk.lan
EDIT:OK、これはすべて正しく機能しているようですが、InternetExplorerは最初の試行で常にHTTP/[TRUSTED_DOMAIN_NAME_IN_WIN_2003]のチケットを取得しようとします。 。私の場合、これは「HTTP/EINDWERK.LAN」に変換されますが、「HTTP /NS.EINDWERK.LAN」である必要があります。
また、信頼のドメイン名を変更しようとすると、 [IMAGE] は、レルム間の認証を完全かつ完全に破壊することに気付きました。TGTは正しく交換されますが、ローカルLinuxKDCが実際に使用しようとするとチケットは、復号化できないことを検出し、KDCログに「PROCESS_TGS:authtime 0、for HTTP/ns.eindwerk.lan @ EINDWERK.LAN、No match key inentry」エラーをスローします。これは、暗号化メカニズムの多くがレルムとユーザー名をソルトとして使用するため、ドメイン名を正しく設定する必要があるためと考えられます。
複数のレルムを設定できます/etc/krb5.conf
Linux上のファイル。 MIT Kerberosドキュメント のレルムセクション)を参照してください。そこでWindowsレルムを構成すると、そのレルムの一部であるプリンシパルでログインするユーザーが認証されます。 Windows 2003 ActiveDirectory。
次に、 mod_auth_kerb を使用してApacheを設定し、Apacheを介して認証できるようにするすべてのレルムを含めるようにKrbAuthRealms
構成変数を設定する必要があります。
何かが足りない場合を除いて、この構成は、マルチレルムKerberos構成を使用する場合、それほど複雑でかなり標準的な方法ではありません。