GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Kerberos bekerja dengan SSH?

Masuk pertama:

  • L mengirimkan permintaan autentikasi nama pengguna dan SSH ke S1
  • S1 mengembalikan mekanisme autentikasi SSH yang tersedia, dengan "sandi" sebagai salah satunya
  • L mengambil "kata sandi" dan mengirimkan kata sandi biasa ke S1
  • S1 memberikan nama pengguna dan kata sandi ke tumpukan PAM.
  • Pada S1, PAM (biasanya pam_krb5 atau pam_sss ) meminta TGT (tiket pemberian tiket) dari Kerberos KDC.
    1. S1 mendapatkan TGT.
      • Gaya lama (tanpa preauth):S1 mengirimkan AS-REQ dan menerima AS-REP yang berisi TGT.
      • Gaya baru (dengan preauth):S1 menggunakan kata sandi Anda untuk mengenkripsi stempel waktu saat ini, dan melampirkannya ke AS-REQ. Server mendekripsi stempel waktu dan memverifikasi bahwa itu berada dalam kemiringan waktu yang diizinkan; jika dekripsi gagal, kata sandi langsung ditolak. Jika tidak, TGT dikembalikan di AS-REP.
    2. S1 mencoba mendekripsi TGT menggunakan kunci yang dibuat dari kata sandi Anda. Jika dekripsi berhasil, sandi dianggap benar.
    3. TGT disimpan ke cache kredensial yang baru dibuat. (Anda dapat memeriksa $KRB5CCNAME variabel lingkungan untuk menemukan ccache, atau gunakan klist untuk membuat daftar isinya.)
  • S1 menggunakan PAM untuk melakukan pemeriksaan otorisasi (tergantung konfigurasi) dan membuka sesi.
    • Jika pam_krb5 dipanggil dalam tahap otorisasi, memeriksa apakah ~/.k5login ada. Jika ya, itu harus mencantumkan prinsipal klien Kerberos. Jika tidak, satu-satunya kepala sekolah yang diizinkan adalah username@DEFAULT-REALM .

Masuk kedua:

  • S1 mengirimkan nama pengguna dan permintaan autentikasi SSH ke S2
  • S2 mengembalikan mekanisme autentikasi yang tersedia, salah satunya adalah "gssapi-with-mic"
  • S1 meminta tiket untuk host/s2.example.com@EXAMPLE.COM , dengan mengirimkan TGS-REQ dengan TGT ke KDC, dan menerima TGS-REP dengan tiket layanan darinya.
  • S1 membuat "AP-REQ" (permintaan autentikasi) dan mengirimkannya ke S2.
  • S2 mencoba mendekripsi permintaan. Jika berhasil, autentikasi selesai. (PAM tidak digunakan untuk autentikasi.)
    • Protokol lain seperti LDAP dapat memilih untuk mengenkripsi transmisi data lebih lanjut dengan "kunci sesi" yang disertakan dengan permintaan; namun, SSH telah menegosiasikan lapisan enkripsinya sendiri.
  • Jika autentikasi berhasil, S2 menggunakan PAM untuk melakukan pemeriksaan otorisasi dan membuka sesi, sama seperti S1.
  • Jika penerusan kredensial diaktifkan dan TGT memiliki bendera "dapat diteruskan", maka S1 meminta salinan TGT pengguna (dengan set bendera "diteruskan") dan mengirimkannya ke S2, tempat salinan itu disimpan ke ccache baru . Hal ini memungkinkan login berulang yang diautentikasi Kerberos.

Perhatikan bahwa Anda juga dapat memperoleh TGT secara lokal. Di Linux, Anda dapat melakukannya menggunakan kinit , lalu sambungkan menggunakan ssh -K . Untuk Windows, jika Anda masuk ke domain AD Windows, Windows melakukannya untuk Anda; jika tidak, MIT Kerberos dapat digunakan. Putty 0.61 mendukung penggunaan Windows (SSPI) dan MIT (GSSAPI), meskipun Anda harus mengaktifkan penerusan (delegasi) secara manual.

gssapi-keyex juga memungkinkan tetapi tidak diterima di OpenSSH resmi.


Linux
  1. Linux – Bagaimana Load Average Bekerja Dengan CPU Modern?

  2. Cara Menonaktifkan Login SSH Dengan Kata Sandi

  3. Cara:Memulai dengan Ansible

  1. Apa itu NGINX? Bagaimana cara kerjanya?

  2. Bagaimana Cara Kerja Awk ‘!a[$0]++’?

  3. Bagaimana cara kerja perintah ps?

  1. Bagaimana Cara Kerja Sticky Bit?

  2. Ssh – Bagaimana Tcp-keepalive Bekerja Di Ssh?

  3. Bagaimana rm bekerja? Apa yang rm lakukan?