WindowsのMIT Kerberosでの複数のレルムと複数のTGT


10

私のローカルコンピューターはWindows 7 Proを使用し、ADサーバーによって管理されるレルムLRに属しています。そのレルムのネットワークに接続しているときに自分のコンピューターにログインします。Windows版のMIT KerberosでTGTを表示できます。4.0.1。

FRの外部レルムのリソースにアクセスしたい。LRとFRの間にはKerberosの信頼関係はありませんが、相互間のTCPトラフィックを許可します。KDC(Red Hat IdM / FreeIPA)を使用してFRのTGTを要求し、要求されたときにパスワードを正常に入力しました。繰り返しますが、Windows版MIT KerberosでTGTを表示できます。4.0.1。LRを起源としているにもかかわらず、パスワードを要求されることなくSSH経由でFRのリソースにアクセスできるようになりました。

問題は、FRのTGTを取得すると、LRプリンシパルのTGTが消えてしまうことです。FR TGTのみがMIT Kerberosで表示されます。コンピューターをロックしてからパスワードでロック解除すると、FR TGTはなくなり、新しいLR TGTに置き換えられます。

MIT Kerberos for Windowsは一度に1つのTGTしか保存できないようです。各TGTは、すべての意図と目的のためにその領域で完全に機能します。MIT Kerberosを構成して、各レルムに1つずつ、同時に2つのTGTを持たせるにはどうすればよいですか?それぞれが異なるKRB5_CONFIGおよびローカルキータブを指す複数のクライアントインスタンスで「コンパートメント化」することは可能ですか?私ができない場合、レルム間の信頼がない場合でも、クライアント側のKerberos 5の代替Windows実装はありますか?

PS-信頼したくない。信頼を得ることができません。

更新:問題を混乱させるかもしれないと思ったので、これらの詳細の一部を先に省略しました。しかし、ブラッドの答えに基づいて、それは正当化されるかもしれません。ほとんどのローカルソフトウェアはKerberosの組み込みのWindows実装を使用し、常にLRキータブを使用することを期待しています。

ただし、私のようなパワーユーザーはCygwinの下でheimdalを使用してFRにSSH接続します。Cygwin DLLを通過するものはすべてheimdalを使用し、LR TGTを表示しないことを期待しています(少なくともデフォルトではそうではありません)。私は明示的にkinitして次に進みます。

Cygwinを使用せずにPuTTYを使用する、サポートしなければならない非パワーユーザーには、注意が必要な部分があります。PuTTYでは、GSSAPI実装で使用するライブラリパスとDLLの両方を指定できます。たとえば、組み込みのWindows DLLではなくMIT Kerberos DLLを使用するようにSSHセッションを構成しています。LR TGT(heimdalのような)を見つけようとしないか、複数のレルムからの複数のTGTを許可しないDLLがそこにあると期待していました。MIT KerberosのようなGUIウィンドウは必要ありませんが、役立ちます。


興味深い質問です。
mfinni

回答:


4

まあ、それはWindowsではできないとは言えませんが、制限はセッションベースあると言います。 その場合の問題は、セッションごとにWindowsが1つのチケットをキャッシュすることです。コンピュータをロックしてからロックを解除すると、別のセッションが開始され、KDCから新しいキーが要求されます。同じことは、ログオフしてから再びコンピューターにログオンしたときにも発生します。この方法は実際にはサーバーセッションのユーザー権限も決定する方法です。つまり、キー/チケットをキャッシュできるため、開始するすべてのサーバーリソースまたはセッションがパスワードを要求する必要はありませんが、聞いたことはありません/複数のキャッシュを可能にするために、それを読み取り/調査しました。

さて、あなたはおそらくあなたがあなたの質問に表示した知識を与えられていることをすでに知っているので、TGTが発行されたときに取得したキーをWindowsが保存し、セッションベースであるという事実に基づいて、私は言いませんJUST Windowsでそれが可能だと思います。WindowsのMIT Kerberosでは、1人のユーザーの下で2つのセッションを開始する方法があるかもしれませんが、それでも、アクセスしているリソースがどのチケット/キーペアを使用するかを知る方法がわかりません。それは理にかなっていますか?

WindowsがTGT /キーペアを保存する方法については、こちらをご覧ください。

ところで非常に良い質問です。


私は元の質問を更新しました。うまくいけば、リソースがどのチケット/キーペアを使用するかを知る方法を説明しています。
Toddius Zho 2014

繰り返しになりますが、素晴らしい質問ですが、残念ながら、元の質問であなたが尋ねたとおり、ネイティブWindows側については(既に私が知っているように)しか答えられません。サードパーティのプラグイン/ソフトウェアは別として、GUIの有無にかかわらず、ネイティブで実行する方法を知りません。もっとお役に立てれば幸いです。
Brad Bouchard、2014年

4

わかりました。もう少し磨く必要がある実用的なソリューションを思いついたので、すべての環境で機能するとは限りません。

これは以下で動作します:

  1. MIT Kerberos for Windows 4.0.1とWindowsサポートツール(KSETUP.EXE、KTPASS.EXE)
  2. PuTTY 0.63
  3. Windows 7 SP1

私はMIT Kerberosソースを調べていて、WindowsREADMEを見つけました。特に興味深いのは、資格証明キャッシュのさまざまな値です。デフォルト値のAPI:採用していますが、意外なことに、代わりにMSLSA:を使用してレジストリを見つけました。

ccnameのさまざまな値をいじってみましたHKEY_CURRENT_USER\Software\MIT\Kerberos5MEMORY:を試してみたところ、最初は興味深い動作になりました。PuTTYセッションを開くと、MIT Kerberosチケットマネージャーウィンドウが復元され、フォアグラウンドになり、資格情報の入力を求められます。うわー!それはこれまでに起こったことはありませんが、悲しいことに、PuTTYはそれを拒否していました。私にとってトリックをした価値はでしたFILE:C:\Some\Full\File\Path。指定したファイルへのアクセスを保護する方法が正確にわからないので、読者のための演習のままにしておきます。私は同じウィンドウからフォアグラウンドの動作を取得しましたが、今回はPuTTYだけがそれを気に入っていました。チケットマネージャーウィンドウにも、最終的にLRチケットとFRチケットの両方が表示されました。チケットは転送可能であることが証明されており、複数のWindowsロック/ロック解除に耐えます。注意:レジストリの編集の途中でチケットマネージャを完全に終了して再起動してください。私はAPIのccnameをまだ試していません。

これが違いをもたらすかどうかはわかりませんが、これが機能するようになる前にKSETUPいじってみました。最初は、パラメーターのないKSETUPはLRに関する情報を表示するだけです。ローカルワークステーションにFRに関する情報を追加しました。

ksetup /AddKdc FOREIGN.REALM KDC.FOREIGN.REALM
ksetup /AddRealmFlags FOREIGN.REALM TcpSupported Delegate NcSupported

2

私には、WindowsのKerberosに実際にバグがあるように見えます。

私は次を見つけました:

KfW 4.0.1ウィンドウで「get ticket」オプションを使用すると、Just Works(TM)になります。「チケットを取得」ボタンを押すと、ログオン時に取得した元のチケットの追加チケットを取得できます。

KfWウィンドウで「デフォルトに設定」オプションを押すと、その時点から「チケットを取得」を押すたびに、既知のチケットのリストに別のエントリを追加するのではなく、新しいチケットがデフォルトのチケットを置き換えます。 。その時点でレジストリを確認すると、ccname(Toddiusの回答のように)エントリが追加されていることがわかります。そのエントリを削除すると、驚くべきことに、複数のチケットを許可する以前の動作が復元されます。


この動作を確認できます。MITのバグとして提起したのでしょうか。
Paul Hedderly、2015年

2

Toddiusの回答に続いて、私は同僚と同じような状況にあります(Windows 7 Enterprise 64ビット、ADドメインに参加し、MIT Kerberos for Windows 4.0.1も実行しています):Kerberosチケットマネージャーのコピーはプリンシパル/ TGTをそれぞれ1つだけ持つことを許可します。彼が「チケットを取得」ボタンを使用して別のプリンシパルのTGTを取得すると、以前のプリンシパルは表示されなくなります。

READMEを確認したところ、パスにあるccnameキーを除いて、ほとんどのレジストリキーは期待どおりに設定されていました。そのキーは値に設定されました。私たちの修正は、それをに変更することでした。具体的には、手順は次のとおりです。HKEY_CURRENT_USER\Software\MIT\Kerberos5MSLSA:API:

  1. Kerberos Ticket Managerを他のすべてのアプリケーションと共に終了します(再起動するため)。
  2. レジストリパスHKEY_CURRENT_USER\Software\MIT\Kerberos5で、ccnameキーをAPI:(API、次にコロン)に変更します。
  3. regeditを終了して再起動します。
  4. 再度ログインしたら、Kerberosチケットマネージャーを実行し、[チケットの取得]ボタンを使用して、AD以外のプリンシパルのTGTを取得します。

上記の手順ですべてが機能し、同僚が複数のプリンシパル/ TGTを一度に表示できるようになりました。

ちなみに、MIT Kerberos for Windowsは独自のコマンドラインプログラム(klistなど)を組み込んでおり、これらのプログラムは複数の資格情報キャッシュをサポートしています。64ビットシステムで、"C:\Program Files\MIT\Kerberos\bin\klist.exe" -A"複数のTGTを取得した後に実行すると、MSLSAキャッシュにActive Directoryプリンシパルが表示され、追加のプリンシパルごとに1つのAPIキャッシュがあります。

PSこれはこのサイトでの最初のエントリーなので、Toddiusの回答にコメントとして追加できませんでした。お詫び!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.