web-dev-qa-db-ja.com

LinuxのリンクMIT KerberosとWindows2003 Active Directory

あいさつ、次のことを実現するために、Linux MIT KerberosをWindows2003 ActiveDirectoryとリンクする方法を考えていました。

  1. ユーザー[email protected]は、Linux MIT Kerberosと同じサーバー上で実行されているApacheWebサイトにログインしようとします。

  2. Apacheモジュールは、最初にローカルLinux MIT Kerberosに、その名前またはレルムでユーザーを知っているかどうかを尋ねます。

  3. MIT Kerberosは、そのレルムに責任がないことを検出し、要求をWindows 2003 ActiveDirectoryに転送します。

  4. Windows 2003 Active Directoryは肯定的に応答し、この情報をLinux MIT Kerberosに提供します。次に、これをApacheモジュールに通知し、ユーザーにファイルへのアクセスを許可します。

    これが状況のイメージです: dfdfdf

この問題に関して私が読んだドキュメントは、この問題とは異なることがよくあります。

  • 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出力をアップロードしました。

  1. 成功したActiveDirectoryユーザー "tester"([email protected])のkinit(KRB5KDC_ERR_PREAUTH_REQUIREDは無視してください。ここには事前認証はありません)

  2. Apache Webサーバーへの1回の旅行で、問題が発生していることがわかります。 [リンク]

EDIT:はい、常にEINDWERK.LANのTGTで認証を試みます。 ADとMIT Kerberos)の間に信頼を作成して、それが修正されるかどうかを確認します。

EDIT2:わかりました、信頼を作成することで( チュートリアルです )、すべてが正しくチェックアウトされているようですが、私はActive Directoryからのチケットのrc4-hmac暗号化を強制し、ApacheHTTPサービスはdes3-cbc-sha1で暗号化されます。プリンシパルを削除し、そのキーを特定の暗号化で暗号化する方法を知っている人はいますか?

2
Beerdude26

了解しました。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」エラーをスローします。これは、暗号化メカニズムの多くがレルムとユーザー名をソルトとして使用するため、ドメイン名を正しく設定する必要があるためと考えられます。

1
Beerdude26

複数のレルムを設定できます/etc/krb5.confLinux上のファイル。 MIT Kerberosドキュメント のレルムセクション)を参照してください。そこでWindowsレルムを構成すると、そのレルムの一部であるプリンシパルでログインするユーザーが認証されます。 Windows 2003 ActiveDirectory。

次に、 mod_auth_kerb を使用してApacheを設定し、Apacheを介して認証できるようにするすべてのレルムを含めるようにKrbAuthRealms構成変数を設定する必要があります。

何かが足りない場合を除いて、この構成は、マルチレルムKerberos構成を使用する場合、それほど複雑でかなり標準的な方法ではありません。

1
Kamil Kisiel