Bagaimana saya bisa menggunakan generator kode sandi untuk otentikasi untuk login jarak jauh?

55

Saya ingin memperkuat otentikasi login SSH saya dengan menambahkan faktor lain: perangkat pembuat kode sandi, atau aplikasi pembuatan kode sandi di ponsel saya. Satu-satunya opsi yang jelas dalam pengaturan default adalah kata sandi tetap dan pasangan kunci. Bagaimana saya bisa melakukan ini?

(Jika saya menggunakan kata sandi ditambah generator kode sandi, ini memberikan otentikasi dua faktor (2FA): kata sandi adalah "apa yang saya tahu", dan kode sandi adalah "apa yang saya miliki".)

Jorge Castro
sumber

Jawaban:

49

Salah satu cara untuk melakukan ini adalah dengan alat yang disediakan oleh Google yang disebut Google Authenticator .

  1. Instal libpam-google-authenticator Instal libpam-google-authenticator

    • atau hanya sudo apt-get install libpam-google-authenticator
  2. Edit /etc/pam.d/sshduntuk menyertakan modul:

    • sudoedit /etc/pam.d/sshd
    • dan kemudian sertakan baris ini di bagian atas file dan simpan:

      auth required pam_google_authenticator.so
      
  3. Edit file konfigurasi SSH Anda untuk menghidupkan tantangan:

    • sudoedit /etc/ssh/sshd_config lalu ubah otentikasi respons dari:

      ChallengeResponseAuthentication no 
      

      untuk

      ChallengeResponseAuthentication yes
      

      dan kemudian simpan file tersebut.

  4. sudo restart ssh untuk memulai kembali SSH

  5. Lari google-authenticator

    • Ini akan memberi Anda kunci rahasia, kode verifikasi, dan kode awal darurat Anda. Ini juga akan menanyakan beberapa pertanyaan pembatasan tingkat.

Aplikasi Seluler:

Anda memerlukan salah satu dari ini untuk menerima kode otentikasi pada perangkat lain.

Terkait dan Berguna:

Perhatikan bahwa menggabungkan kata sandi dengan kode sandi sekali pakai adalah otentikasi dua faktor: menggabungkan kata sandi "apa yang Anda ketahui" (kata sandi) dengan "apa yang Anda miliki" (perangkat pembuat kode sandi). Di sisi lain, jika Anda menggabungkan kode sandi sekali pakai dengan pasangan kunci SSH, itu semua tentang "apa yang Anda miliki". Ketika dua faktor otentikasi memiliki tipe yang sama, Anda tidak memiliki otentikasi dua faktor; ini kadang-kadang disebut "otentikasi satu-dan-setengah-faktor".

Jorge Castro
sumber
12

Google Authenticator baik untuk server pribadi Anda, tetapi Anda mungkin menemukan bahwa itu tidak cocok dengan infrastruktur identitas Anda yang ada. Jika Anda ingin menjelajahi opsi lain, pikirkan tentang menggunakan RADIUS sebagai protokol otentikasi dan plugin pam-radius. Semua sistem otentikasi dua faktor yang berorientasi perusahaan mendukung radius. Kami telah menulis dokumen tentang cara menambahkan otentikasi dua faktor WiKID melalui pam-radius ke Ubuntu .

Menggunakan radius memungkinkan Anda untuk mengikat sistem lain selain SSH ke server otentikasi yang sama. Anda juga dapat merutekan permintaan auth melalui freeradius ke LDAP dan kemudian ke server 2FA Anda untuk memisahkan otorisasi dari otentikasi. Anda dapat melakukan hal yang sama dengan AD btw.

sekarang
sumber
1

Saya dorongan orang untuk menempatkan baris berikut di atas dan tidak di bagian bawah dari /etc/pam.d/sshdseperti dijelaskan di atas sebelumnya (sekarang dikoreksi):

auth required pam_google_authenticator.so

Jika tidak, sistem Anda akan tetap terbuka terhadap serangan brute force pada kata sandi Anda, mengkompromikan bagian pertama dari otentikasi dua faktor: kata sandi Anda.

Anda akan diminta terlebih dahulu untuk kode verifikasi Anda, dan kemudian kata sandi Anda (terlepas dari apakah kode itu benar). Jika salah satu dari mereka salah, Anda harus memasukkan keduanya lagi. Anda dapat mengkonfigurasinya sebaliknya tetapi itu sedikit perubahan yang lebih sulit untuk dijelaskan dalam konfigurasi sshd ubuntu default saat ini.

Untuk detail mengapa ini diperlukan, periksa masalah ini:

https://github.com/google/google-authenticator/issues/514

Maarten
sumber