Otentikasi SSH menggunakan gssapi-keyex atau gssapi-with-mic (publickey tidak diizinkan)


15

Perusahaan saya telah menonaktifkan otentikasi kunci publik SSH, oleh karena itu saya harus memasukkan secara manual setiap kali kata sandi saya (saya tidak seharusnya berubah /etc/ssh/sshd_config).

Namun gssapi-keyexdan gssapi-with-micotentikasi diaktifkan (lihat di bawah ini sshhasil debug).

Bagaimana saya bisa menggunakan login otomatis dalam kasus ini?
Bisakah saya mengeksploitasi gssapi-keyexdan / atau gssapi-with-micotentikasi?

> ssh -v -o PreferredAuthentications=publickey hostxx.domainxx
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to hostxx.domainxx [11.22.33.44] port 22.
debug1: Connection established.
debug1: identity file /home/me/.ssh/identity type -1
debug1: identity file /home/me/.ssh/id_rsa type -1
debug1: identity file /home/me/.ssh/id_dsa type 2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'hostxx.domainxx' is known and matches the RSA host key.
debug1: Found key in /home/me/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: gssapi-keyex,gssapi-with-mic,password
debug1: No more authentication methods to try.
Permission denied (gssapi-keyex,gssapi-with-mic,password).

1
Kain Python melakukan pekerjaan yang baik dalam berurusan dengan ssh automation.
Dan Garthwaite

Hai @DanGarthwaite Apakah Anda menggunakan Fabric untuk login secara manual ke server jarak jauh lainnya? Tolong bisakah Anda menjelaskan bagaimana Anda menggunakannya. Tolong berikan jawaban. Cheers
olibre

3
Jika Anda tidak berada di ranah Kerberos (atau domain Direktori Aktif), maka GSSAPI sepertinya tidak akan berguna bagi Anda. Yang mengatakan, menonaktifkan otentikasi kunci publik tampaknya sangat tidak masuk akal.
Michael Hampton

1
@olibre Fabric adalah utilitas untuk menjalankan perintah pada satu atau lebih server melalui SSH. Perintah-perintah ini biasanya diatur dalam "fabfile", seperti Makefile. Itu melakukan pekerjaan yang sangat baik untuk membuat SSH menghilang (setelah Anda mengotentikasi) dan menangani semua cara banyak klien dan server SSH cenderung mengganggu kontrol. Tersedia tutorial singkat: docs.fabfile.org/en/1.7/tutorial.html
Dan Garthwaite

Silakan @DanGarthwaite, dapatkah Anda memberikan contoh fabfile yang akan masuk ke komputer lain (SSH gssapi tanpa meminta kata sandi) dan membuka shell? Anda dapat memberikannya dalam jawaban. (Dalam lima menit, saya tidak menemukan tutorial bagaimana melakukannya). Cheers;)
olibre

Jawaban:


19

Mungkin.

  • Bisakah Anda mendapatkan tiket untuk kepala sekolah Anda pada sistem klien Anda baik sebagai bagian dari proses login standar atau secara manual ( kinit, MIT Kerberos untuk Windows)?
  • Apakah server memiliki prinsipal kerberos atau dapatkah Anda memberikannya? Itu harus dalam bentuk host/server.example.com@EXAMPLE.COM.
  • Apakah GSSAPIotentikasi diaktifkan pada klien Anda?
  • Apakah klien Anda tahu ranah server mana yang dimiliki oleh catatan sumber daya DNS TXT atau pemetaan lokal?

Jika Anda mengatakan "ya" untuk semua hal di atas, maka selamat, Anda dapat menggunakannya GSSAPIAuthentication.

  • Anda mungkin juga perlu mengaktifkan delegasi kredensial, tergantung pada pengaturan Anda.

Langkah-langkah pengujian:
(Dengan asumsi: domain = example.com; realm = EXAMPLE.COM)

  1. kinit username@EXAMPLE.COM
    • Idealnya ini ditangani oleh proses login standar Anda dengan memasukkan salah satu pam_krb5atau pam_sss(dengan auth_provider = krb5) yang sesuai pam stack.
  2. kvno host/server.example.com@EXAMPLE.COM
    • Ini adalah langkah debugging. sshmelakukan ini secara otomatis jika Anda memiliki cache yang valid dan Anda berbicara dengan sshdyang mendukung gssapi-with-micatau gssapi-keyex.
  3. dig _kerberos.example.com txt harus kembali "EXAMPLE.COM"
    • Sebagai alternatif, pemetaan dapat disimpan pada [domain_realm]bagian /etc/krb5.confas .example.com = EXAMPLE.COM, tetapi dnsmetode ini berskala jauh lebih baik.
  4. ssh -o GSSAPIAuthentication=yes username@server.example.com
    • Untuk masuk ke nama pengguna selain dari kepala sekolah Anda di server harus tahu untuk memetakannya detail yang saya tidak masuk ke sini.

Hai. Saya telah memberi Anda +1 beberapa waktu yang lalu, tetapi pada kenyataannya, saya tidak tahu cara memeriksa empat poin Anda. (Saya bukan administrator, hanya pengembang). Bisakah Anda memberikan baris perintah untuk memeriksa koneksi SSH menggunakan gssapiauthentication? Mungkin saya juga bisa menggunakan gssapiauthenticationdi mesin Linux saya. (Haruskah saya gunakan kinituntuk itu?) Cheers;)
olibre

5

Metode 4 langkah ini benar (ada juga catatan Kerberos SRV dalam DNS yang bahkan lebih elegan dan hadir di setiap Direktori Aktif). Saya menggunakan ini sepanjang waktu, dan telah menganjurkan metode pubkey di atas untuk, sebagian besar alasan terkait keamanan dan kontrol.

Yang mengatakan, ini hanya memberikan login interaktif, meskipun dapat quasi-interaktif setelah Anda mendapatkan tiket di workstation Anda. Tiket Kerberos bertindak seperti agen SSH; setelah Anda memilikinya, koneksi baru instante dan bebas kata sandi; walaupun dengan batas waktu.

Untuk mendapatkan login batch interaktif, Anda perlu mendapatkan file keytab, file yang pada dasarnya berisi kata sandi untuk akun Kerberos, seperti halnya separuh pribadi kunci SSH. Menurut tindakan pencegahan keamanan berlaku; terutama karena keytab tidak dienkripsi atau dilindungi dengan kata sandi.

Saya cukup enggan untuk memberikan kepada pengguna saya keytab mereka untuk akun pribadi mereka, tetapi saya secara agresif menggunakan akun layanan dengan izin minimal untuk berbagai pekerjaan batch, terutama di mana sangat penting bahwa kredensial didelegasikan ke sistem jarak jauh, sesuatu yang mudah dilakukan pubkey ' t mencapai.

Keytabs dapat dibuat menggunakan ktutil di Unix atau KTPASS.EXE di Windows (yang terakhir dari layanan AD Kerberos). Perhatikan bahwa ktutil ada dalam dua rasa, Heimdal dan MIT, dan sintaksanya berbeda. Membaca halaman manual pada sistem yang relevan membantu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.