Otentikasi Putty Kerberos / GSSAPI

9

Saya mengkonfigurasi beberapa server Linux untuk mengautentikasi dengan Active Directory Kerberos menggunakan sssd di RHEL6. Saya juga mengaktifkan otentikasi GSSAPI dengan harapan login tanpa kata sandi.

Tapi sepertinya saya tidak bisa mendapatkan Putty (0.63) untuk diautentikasi tanpa kata sandi.

GSSAPI berfungsi antara sistem Linux (klien openSSH) yang dikonfigurasi untuk otentikasi AD, menggunakan pengaturan .ssh / config untuk mengaktifkan GSSAPI.

Ini juga bekerja dari Cygwin (klien openSSH), menggunakan pengaturan .ssh / config yang sama serta menjalankan perintah kinit untuk mendapatkan tiket.

Samba juga berbagi di semua sistem Linux, termasuk direktori home yang berfungsi dari Windows Explorer tanpa memerlukan kata sandi (Saya tidak yakin apakah GSSAPI ikut berperan di sana)

Hal-hal apa yang dapat saya coba atasi masalah ini? Sebagian besar pengguna saya menggunakan Putty. Juga, saya bukan Admin Windows jadi saya tidak bisa melakukan apa pun pada pengontrol domain. Akun saya hanya memiliki hak istimewa untuk menambahkan server ke Domain AD.


Saya menyalakan logging SSH paket dempul. Saya menemukan ini agak menarik, saya belum yakin apa yang harus dilakukan dengan informasi ini:

Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2
Event Log: We claim version: SSH-2.0-PuTTY_Release_0.63
Outgoing packet #0x0, type 20 / 0x14 (SSH2_MSG_KEXINIT)
Incoming packet #0x0, type 20 / 0x14 (SSH2_MSG_KEXINIT)
Event Log: Doing Diffie-Hellman group exchange
Outgoing packet #0x1, type 30 / 0x1e (SSH2_MSG_KEX_DH_GEX_REQUEST)
Incoming packet #0x1, type 31 / 0x1f (SSH2_MSG_KEX_DH_GEX_GROUP)
Event Log: Doing Diffie-Hellman key exchange with hash SHA-256
Outgoing packet #0x2, type 32 / 0x20 (SSH2_MSG_KEX_DH_GEX_INIT)
Incoming packet #0x2, type 33 / 0x21 (SSH2_MSG_KEX_DH_GEX_REPLY)
Outgoing packet #0x3, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised AES-256 SDCTR client->server encryption
Event Log: Initialised HMAC-SHA1 client->server MAC algorithm
Outgoing raw data at 2014-11-25 00:21:08
Incoming packet #0x3, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised AES-256 SDCTR server->client encryption
Event Log: Initialised HMAC-SHA1 server->client MAC algorithm
Outgoing packet #0x4, type 5 / 0x05 (SSH2_MSG_SERVICE_REQUEST)
Incoming packet #0x6, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
...%gssapi-keyex
,gssapi-with-mic
,password.
Event Log: Using SSPI from SECUR32.DLL
Event Log: Attempting GSSAPI authentication
Outgoing packet #0x6, type 50 / 0x32 (SSH2_MSG_USERAUTH_REQUEST)
Incoming packet #0x7, type 60 / 0x3c (SSH2_MSG_USERAUTH_GSSAPI_RESPONSE)
Event Log: GSSAPI authentication initialised
Outgoing packet #0x7, type 61 / 0x3d (SSH2_MSG_USERAUTH_GSSAPI_TOKEN)
Incoming packet #0x8, type 61 / 0x3d (SSH2_MSG_USERAUTH_GSSAPI_TOKEN)
Event Log: GSSAPI authentication initialised
Event Log: GSSAPI authentication loop finished OK
Outgoing packet #0x8, type 66 / 0x42 (SSH2_MSG_USERAUTH_GSSAPI_MIC)
Incoming packet #0x9, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
...%gssapi-keyex
,gssapi-with-mic
,password.
xdaxdb
sumber
1
Mengaktifkan debug pada ssh daemon night show info berguna. Anda selalu dapat memulai instance kedua pada port yang berbeda untuk pengujian.
Paul Haldane

Jawaban:

7

Pada mesin Windows yang merupakan bagian dari domain Active Directory, pengguna menerima tiket Pemberian tiket Kerberos mereka ketika mereka masuk ke Windows, dan Putty dapat menggunakannya untuk otentikasi jika otentikasi GSSAPI diaktifkan di Putty Konfigurasi Konfigurasi Koneksi | SSH | Auth | GSSAPI (dan metode otentikasi lainnya yang dicoba sebelum GSSAPI, seperti kunci publik melalui Pageant, tidak disiapkan atau dinonaktifkan di Connection | SSH | Auth).

[Jika Anda juga membutuhkan delegasi tiket (mis., Untuk memasang sistem file yang dikerberikan pada server setelah login), pastikan bahwa delegasi GSSAPI juga diaktifkan di Putty, dan server yang Anda masuki ditandai di Active Directory di tab Delegasi sebagai " Percayai komputer ini untuk pendelegasian ke layanan apa pun (hanya Kerberos) ", yang tidak secara default. Pengaturan kepercayaan terakhir dalam AD anehnya hanya diperlukan untuk delegasi untuk bekerja dari klien Windows seperti Putty; itu tidak diperlukan untuk klien "ssh -K" Linux.]

Pada mesin Windows yang dikelola sendiri (pribadi) yang bukan bagian dari domain Direktori Aktif, Anda masih dapat menggunakan otentikasi Kerberos / GSSAPI (dan delegasi tiket) melalui Putty, tetapi Anda harus mendapatkan tiketnya sendiri. Sayangnya, Windows 7 tidak diinstal dengan program kinit yang setara (bagi Anda untuk secara manual meminta tiket), dan Putty juga tidak meminta Anda untuk kata sandi Kerberos Anda baik jika Anda kekurangan tiket. Karena itu, Anda harus menginstal MIT Kerberos untuk Windowspaket, yang mencakup kedua alat baris perintah kinit / klist / kdestroy biasa, serta alat GUI yang rapi "MIT Kerberos Ticket Manager". Gunakan itu untuk mendapatkan tiket Anda, dan kemudian Putty akan secara otomatis menggunakan perpustakaan MIT GSSAPI alih-alih Microsoft SSPI, dan semuanya akan berfungsi. Jika "MIT Kerberos Ticket Manager" sedang berjalan, maka secara otomatis akan meminta Anda untuk kata sandi Kerberos Anda ketika PuTTY membutuhkan tiket, jadi sebaiknya Anda menautkannya dari folder Startup.

Markus Kuhn
sumber
1
Sejak itu saya mengetahui bahwa Windows sebenarnya memiliki sejenis kinitperintah MIT Kerberos yang disebut cmdkey.
Markus Kuhn
1
Mengenai memungkinkan delegasi tiket, jika Anda adalah salah satu dari orang-orang yang memahami bahwa Active Directory adalah benar-benar hanya Microsoft LDAPv3 bawah tenda: pastikan masuknya LDAP pokok layanan yang ingin Anda dapat mendelegasikan tiket Kerberos untuk memiliki di nya userAccountControl yang bit TRUSTED_FOR_DELEGATION = 0x80000 = 524288 ditetapkan.
Markus Kuhn
FYI kepada siapa pun yang mempertimbangkan untuk mengonfigurasi "Percayai komputer ini untuk didelegasikan ke layanan apa pun (hanya Kerberos)", misalnya delegasi Kerberos yang tidak dibatasi, ini memiliki implikasi keamanan SERIUS yang harus Anda pertimbangkan. Saya sarankan membaca adsecurity.org/?p=1667 terlebih dahulu.
Brad
3

Pertama, periksa apakah output klist Anda pada kotak Windows yang menjalankan Putty menunjukkan TGT yang valid. Kemudian dalam konfigurasi untuk sesi Putty Anda, pastikan Percobaan otentikasi GSSAPI diaktifkan di Connection - SSH - Auth - GSSAPI. Terakhir, pastikan sudah dikonfigurasi untuk masuk dengan nama pengguna Anda secara otomatis Connection - Data. Anda dapat secara eksplisit menentukan nama pengguna atau memilih tombol radio untuk Menggunakan nama pengguna sistem .

Secara historis, hanya itu yang perlu saya lakukan untuk membuat login SSH tanpa password berfungsi melalui Kerberos.

Ryan Bolger
sumber
1
klist tgt sepertinya masuk akal bagiku. mengatakan itu bisa diteruskan juga. klist menampilkan 5 kunci, untuk hal-hal seperti Exchange. Saya juga punya tiket untuk server Linux yang saya coba ssh. Saya sudah membahas konfigurasi dempul 100 kali. Semua dokumen / panduan online cukup banyak mengatakan hal yang sama jadi saya yakin bagian itu sudah diatur dengan benar.
xdaxdb
3

Masalahnya ada di pengaturan Windows Kerberos. Saya pikir Direktori Aktif kami diatur funky, saya tidak benar-benar tahu saya bukan admin Windows.

Tapi saya memperbaiki masalah dengan mengkonfigurasi secara manual Kerberos menggunakan ksetup di Windows 7 CLI.

Setelah reboot ke workstation jarak jauh saya, saya tidak bisa login ke PC saya. Itu karena dalam konfigurasi asli, bagian TLD dari domain ranah saya selalu tidak ada (domain \ pengguna) tetapi setelah saya mengkonfigurasi secara manual saya harus mengubah domain login saya untuk mencerminkan nama domain ranah lengkap (domain.TLD \ pengguna) dan Saya dapat masuk ke PC Windows saya, meskipun tampaknya perlu waktu lebih lama untuk mengautentikasi sekarang.

Sebelum perubahan output dari ksetup hanya menunjukkan ranah default saya, dan itu dalam huruf kecil.

Saya menggunakan "nslookup -type = SRV _kerberos._tcp.domain.TLD" untuk mendapatkan semua server kdc untuk wilayah saya.

Saya tidak mengatur bendera apa pun.

Saya mengatur pemetaan nama pengguna saya "ksetup / mapuser [email protected] user"

Sumber yang saya gunakan: https://wiki.ncsa.illinois.edu/display/ITS/Windows+7+Kerberos+Login+using+External+Kerberos+KDC

https://www.cgl.ucsf.edu/Security/CGLAUTH/CGLAUTH.html

Jika ada yang punya saran yang bisa saya berikan kepada orang-orang admin Windows tentang bagaimana mereka dapat memperbaikinya (apakah rusak?) Saya akan meneruskannya.

xdaxdb
sumber