Multi Realms dan Multiple TGTs di bawah MIT Kerberos untuk Windows

10

Komputer lokal saya menggunakan Windows 7 Pro dan milik ranah LR, dikelola oleh server AD. Saya login ke komputer saya ketika terhubung ke jaringan ranah itu. Saya dapat melihat TGT dengan MIT Kerberos untuk Windows ver. 4.0.1.

Saya ingin mengakses sumber daya di ranah asing, FR. Tidak ada kepercayaan Kerberos antara LR dan FR, tetapi mereka mengizinkan lalu lintas TCP antara satu sama lain. Saya meminta TGT untuk FR dengan KDC-nya (Red Hat IdM / FreeIPA) dan berhasil memasukkan kata sandi saya ketika ditantang. Sekali lagi, saya dapat melihat TGT dengan MIT Kerberos untuk Windows ver. 4.0.1. Saya sekarang dapat mengakses sumber daya di FR melalui SSH tanpa diminta kata sandi, meskipun berasal dari LR.

Masalahnya adalah ketika saya mendapatkan TGT untuk FR, TGT untuk prinsipal LR saya menghilang. Hanya FR TGT yang terlihat di MIT Kerberos. Jika saya mengunci komputer saya dan kemudian membuka kunci dengan kata sandi saya, sekarang FR TGT hilang, diganti dengan LR TGT baru.

Tampaknya MIT Kerberos untuk Windows hanya dapat menyimpan satu TGT dalam satu waktu. Setiap TGT sepenuhnya bekerja untuk wilayahnya untuk semua maksud dan tujuan. Bagaimana saya bisa mengkonfigurasi MIT Kerberos agar saya memiliki dua TGT sekaligus, satu untuk setiap bidang? Apakah mungkin untuk "memisah-misahkan" dengan beberapa instance klien, masing-masing menunjuk ke KRB5_CONFIG dan keytab lokal yang berbeda? Jika saya tidak bisa, apakah ada implementasi Windows alternatif Kerberos 5 sisi-klien yang akan, bahkan ketika tidak ada kepercayaan antar-wilayah?

PS - Saya tidak ingin kepercayaan. Tidak bisa mendapatkan kepercayaan

UPDATE: Saya meninggalkan beberapa detail ini sebelumnya karena saya pikir itu mungkin membingungkan masalah ini. Tetapi berdasarkan jawaban Brad, itu mungkin perlu. Saya berharap sebagian besar perangkat lunak lokal akan menggunakan implementasi Windows bawaan Kerberos dan selalu menggunakan LR keytab.

Namun, pengguna listrik seperti saya menggunakan heimdal di bawah Cygwin ke SSH ke FR. Saya mengharapkan sesuatu melalui Cygwin DLL menggunakan heimdal dan tidak pernah melihat LR TGT (yang tidak, setidaknya tidak secara default). Saya secara eksplisit kinit dan melanjutkan.

Bagian yang sulit muncul untuk pengguna non-daya yang harus saya dukung yang tidak menggunakan Cygwin tetapi gunakan Putty. Putty memungkinkan Anda menentukan jalur pustaka dan DLL untuk penerapan GSSAPI yang digunakan. Misalnya, saya mengkonfigurasi sesi SSH untuk menggunakan DLL MIT Kerberos alih-alih Windows DLL bawaan. Saya berharap ada DLL di luar sana yang entah tidak pernah mencoba menemukan LR TGT (seperti heimdal) atau mengizinkan beberapa TGT dari berbagai bidang. Tidak harus memiliki jendela GUI seperti MIT Kerberos, tetapi itu membantu.

Toddius Zho
sumber
Pertanyaan menarik.
mfinni

Jawaban:

4

Yah saya tidak akan mengatakan itu TIDAK BISA dilakukan dengan Windows, tapi saya akan mengatakan bahwa batasannya adalah sesi berbasis. Masalahnya kemudian, adalah bahwa untuk setiap sesi Windows cache satu tiket. Ketika Anda mengunci komputer Anda, lalu buka kunci, sesi lain akan dimulai dan kunci baru diminta dari KDC. Hal yang sama terjadi ketika Anda log off kemudian ke komputer Anda lagi. Metode ini sebenarnya adalah bagaimana izin pengguna ditentukan untuk sesi server juga, yang berarti kunci / tiket dapat di-cache sehingga setiap sumber daya server atau sesi yang Anda mulai tidak harus meminta kata sandi, tetapi saya tidak pernah mendengar / baca / teliti itu untuk dapat men-cache lebih dari satu.

Sekarang, Anda mungkin sudah tahu bahwa dengan pengetahuan Anda bahwa Anda telah ditampilkan dalam pertanyaan Anda, jadi saya akan mengatakan bahwa berdasarkan fakta bahwa Windows menyimpan kunci yang Anda dapatkan ketika TGT dikeluarkan dan berbasis sesi, saya tidak pikir itu mungkin dengan HANYA Windows. MIT Kerberos untuk Windows mungkin memiliki cara untuk memulai dua sesi di bawah satu pengguna, tetapi meskipun begitu, saya tidak yakin bagaimana sumber daya yang Anda akses akan tahu tiket / kunci pasangan mana yang akan digunakan. Apakah itu masuk akal?

Silakan lihat ini untuk deskripsi bagaimana Windows menyimpan TGT / pasangan kunci.

Pertanyaan yang sangat bagus.

Brad Bouchard
sumber
Saya memperbarui pertanyaan awal saya yang semoga menjelaskan bagaimana sumber daya tahu tiket / kunci pasangan mana yang digunakan.
Toddius Zho
Sekali lagi, pertanyaan yang bagus, tetapi sayangnya saya hanya bisa menjawab (seperti yang sudah saya miliki) tentang sisi asli Windows dari hal-hal yang Anda tanyakan dalam pertanyaan awal Anda; selain dari plugin pihak ke-3 / perangkat lunak saya tidak tahu cara untuk melakukannya secara asli, dengan atau tanpa GUI. Seandainya aku bisa lebih membantu.
Brad Bouchard
4

OK, saya datang dengan solusi kerja yang membutuhkan lebih banyak polesan, jadi mungkin tidak bekerja di semua lingkungan.

Ini bekerja dengan:

  1. MIT Kerberos untuk Windows 4.0.1 dengan alat dukungan Windows (KSETUP.EXE, KTPASS.EXE)
  2. Putty 0,63
  3. Windows 7 SP1

Saya mencari di sumber MIT Kerberos dan menemukan README untuk Windows . Yang menarik adalah nilai yang berbeda untuk Credentials Cache . Ini mendukung nilai default API :, tetapi saya secara mengejutkan menemukan registri saya menggunakan MSLSA: sebagai gantinya.

Saya bermain-main dengan berbagai nilai ccname di bawah HKEY_CURRENT_USER\Software\MIT\Kerberos5. Saya mencoba MEMORY: pada awalnya, yang mengarah pada perilaku yang menarik. Saat membuka sesi Putty, jendela MIT Kerberos Ticket Manager saya akan pulih dan datang ke latar depan, meminta saya untuk memasukkan kredensial. Wow! Itu tidak pernah terjadi sebelumnya, tetapi sayangnya, Putty akan menolaknya. Nilai yang berhasil bagi saya adalah FILE:C:\Some\Full\File\Path. Saya tidak yakin bagaimana cara mengamankan akses ke file yang ditentukan, jadi saya akan meninggalkan itu sebagai latihan untuk pembaca. Saya mendapat perilaku window-to-the-foreground yang sama, hanya PuTTY yang menyukainya saat ini. Jendela Ticket Manager akhirnya juga menampilkan tiket LR dan FR. Tiket terbukti dapat diteruskan dan akan bertahan beberapa Windows Lock / Unlock. CATATAN:pastikan untuk sepenuhnya Keluar dan memulai kembali Tiket Manajer di antara suntingan registri. Saya belum mencoba keluar ccname dari API: belum.

Saya tidak tahu apakah ini membuat perbedaan atau tidak, tetapi saya juga bermain-main dengan KSETUP sebelum ini mulai bekerja. Pada awalnya, KSETUP tanpa parameter hanya akan menunjukkan kepada saya informasi tentang LR. Saya menambahkan beberapa info tentang FR di workstation lokal saya.

ksetup /AddKdc FOREIGN.REALM KDC.FOREIGN.REALM
ksetup /AddRealmFlags FOREIGN.REALM TcpSupported Delegate NcSupported
Toddius Zho
sumber
2

Bagi saya, sepertinya ada bug di Kerberos untuk Windows.

Saya menemukan yang berikut:

Jika saya menggunakan opsi "dapatkan tiket" di jendela KfW 4.0.1, itu hanya berfungsi (TM); Saya bisa menekan tombol "Dapatkan tiket", dan mendapatkan tiket tambahan ke tiket asli yang saya dapatkan ketika saya masuk.

Jika saya menekan opsi "make default" di jendela KfW, maka sejak saat itu setiap kali saya menekan "dapatkan tiket", tiket baru akan menggantikan tiket apa pun yang merupakan bawaan, daripada menambahkan entri lain ke daftar tiket yang dikenal . Memeriksa registri pada saat itu akan menunjukkan bahwa ccnameentri (seperti dalam jawaban Toddius) telah ditambahkan. Menghapus entri itu, secara mengejutkan, mengembalikan perilaku sebelumnya yang mengizinkan beberapa tiket.

Wouter Verhelst
sumber
Saya dapat mengkonfirmasi perilaku ini. Saya ingin tahu apakah Anda meningkatkannya sebagai bug dengan MIT?
Paul Hedderly
2

Mengikuti jawaban Toddius, saya memiliki rekan kerja dalam situasi yang sama (Windows 7 Enterprise 64-bit, bergabung dengan domain AD, juga menjalankan MIT Kerberos untuk Windows 4.0.1): Salinannya dari Manajer Tiket Kerberos akan hanya mengizinkannya untuk memiliki satu kepala sekolah / satu TGT. Kapan pun dia akan menggunakan tombol "Dapatkan Tiket" untuk mendapatkan TGT untuk kepala sekolah yang berbeda, kepala sekolah sebelumnya akan hilang.

Saya meninjau README , dan sebagian besar kunci registri ditetapkan seperti yang diharapkan, kecuali untuk ccname kunci di jalan HKEY_CURRENT_USER\Software\MIT\Kerberos5. Kunci itu disetel ke nilainya MSLSA:. Perbaikan kami adalah mengubahnya menjadi API:. Lebih khusus lagi, langkah-langkahnya adalah:

  1. Keluar dari Pengelola Tiket Kerberos, bersama dengan semua aplikasi lain (karena Anda akan memulai ulang).
  2. Di jalur Registri HKEY_CURRENT_USER\Software\MIT\Kerberos5, ubah kunci ccname ke API:(API, lalu titik dua).
  3. Keluar dari regedit, dan mulai kembali.
  4. Setelah masuk kembali, jalankan Kerberos Ticket Manager, dan gunakan tombol Dapatkan Tiket untuk mendapatkan TGT non-AD principal Anda.

Dengan langkah-langkah di atas, semuanya bekerja, dan saya rekan kerja sekarang dapat melihat beberapa prinsipal / TGT sekaligus.

Omong-omong, MIT Kerberos untuk Windows menghadirkan serangkaian program command-line-nya sendiri (seperti klist), dan program-program itu mendukung banyak cache kredensial. Pada sistem 64-bit saya, ketika saya menjalankan "C:\Program Files\MIT\Kerberos\bin\klist.exe" -A"setelah mendapatkan beberapa TGT, saya melihat prinsip Active Directory saya di cache MSLSA, dan kemudian saya memiliki satu cache API untuk setiap prinsipal tambahan.

PS Ini adalah entri pertama saya di situs ini, jadi saya tidak dapat menambahkannya sebagai komentar untuk jawaban Toddius. Permintaan maaf!

Karl Kornel
sumber