Saya menggunakan Ubuntu.
Saya hanya ingin tahu apakah mungkin untuk memiliki libpam-google-authenticator (yang memungkinkan Anda masuk menggunakan kode yang dihasilkan oleh telepon Anda) DAN otentikasi sertifikat diatur untuk bekerja bersama, dan jika mungkin, bagaimana saya akan lanjut tentang pengaturannya. Jadi - untuk masuk ke akun saya, Anda harus memiliki kata sandi, telepon saya (dan passcode-nya) DAN sertifikat / kunci pribadi dan kata sandinya.
Saya mendapatkan keduanya untuk bekerja secara mandiri tetapi tidak pernah bisa membuat mereka bekerja bersama. Tapi saya yakin itu mungkin.
Terima kasih.
Jawaban:
Dimungkinkan untuk melakukan ini dengan merantai bersama modul PAM. Tapi sebelum saya masuk ke detail:
Mengkonfigurasi PAM secara tidak benar dapat dan AKAN mencegah Anda masuk ke sistem Anda
Untungnya Anda selalu dapat boot ke mode pengguna tunggal dan memperbaiki masalah, tetapi hanya diingatkan bahwa PAM bukanlah sesuatu yang Anda ingin mengacaukan lebih dari yang diperlukan.
Pokoknya, ide di balik ini adalah bahwa adalah mungkin untuk memanfaatkan susun modul PAM memastikan bahwa
pam-google-authenticator
,pam_unix
(ini cek Anda password) dan modul sertifikat semua harus berhasil untuk memungkinkan Anda akses. Secara default, PAM dikonfigurasi untuk memungkinkan modul otentikasi mana pun untuk mengotentikasi Anda, melompati yang lain.Di /etc/pam.d/common-auth, Anda akan melihat di dekat bagian atas sebuah garis yang mirip dengan yang berikut ini:
Ini memberitahu PAM bahwa harus
pam_unix.so
berhasil, ia akan melewati dua aturan berikutnya (yang biasanya merupakan modul otentikasi lain kemudianpam_deny.so
) dan melanjutkan ke modul opsional. Namun, jika modul gagal, maka akan diabaikan, dan kontrol akan diteruskan ke modul berikutnya dalam rantai. Ini melanjutkan setiap modul otentikasi hingga kontrol melompat ke blok opsional, atau PAM hits pam_deny.so dan gagal di sana.Ini dapat ditingkatkan untuk memastikan bahwa
pam-google-authenticator
,pam_unix.so
dan modul PAM sertifikat Anda semua harus berhasil memungkinkan Anda mengakses. Saya tidak tahu nama modul autentikator Google atau modul sertifikat yang Anda gunakan, tetapi Anda harus dapat menemukannya di file common-auth Anda. Jadi dengan meletakkan sesuatu seperti ini di atas:Mengganti
<n>
dengan jumlah modul antara modul pam_permit.so di sini danpam_permit.so
modul berikutnya - dengan kata lain ini harus diatur ke kode [sukses = n default = abaikan] modul-modul auth atas + 1. Sintaks ini agak funky , tetapi pada dasarnya melewatkan modul auth setelah modul di atas berhasil.Tentu saja, Anda mungkin bertanya-tanya bagaimana cara membatasi otentikasi tiga langkah ini hanya pada akun pengguna Anda. Ini dapat dilakukan dengan
pam_succeed_if.so
modul, dan harus dimasukkan di atas blok auth tiga langkah yang dijelaskan di atas:Di mana
<username>
diganti oleh nama pengguna Anda. Baris ini hanya mengatakan bahwa seharusnya pam_succeed_if.so berhasil (alias nama pengguna Anda cocok dengan nama pengguna pada baris itu) maka PAM harus melanjutkan dengan modul berikutnya, yang merupakan modul auth tiga langkah. Jika tidak, PAM harus melompat ke modul nyata, yang berjarak 4 modul dari modul ini.Untuk mencocokkan banyak hal, misalnya keanggotaan grup bersama dengan nama pengguna tertentu, beberapa baris harus digunakan, misalnya:
Sebelum melakukan semua ini, saya akan membuat cadangan file auth umum, dan juga membiasakan diri dengan mode pengguna tunggal dan cara mengembalikan file lama jika terjadi keadaan darurat. Konfigurasi ini belum diuji oleh saya, tetapi harus berfungsi.
Untuk pengujian ini pertama kali, buka satu atau dua root root, dan biarkan saja. Ini bertindak sebagai cadangan jika terjadi kesalahan, karena Anda dapat dengan mudah mengganti common-auth dengan cadangan. Lalu, buat perubahan ini. Selanjutnya, coba gunakan
su
untuk masuk ke akun pengguna Anda - Anda harus melalui proses otentikasi tiga langkah.Dokumentasi lengkap untuk
pam_succeed_if.so
modul dapat ditemukan di http://linux.die.net/man/8/pam_succeed_ifsumber
ChallengeResponseAuthentication
danUsePAM
ke 'ya', kemudian mengatur garis-garis yang terinci dalam jawaban saya di atas menjadi /etc/pam.d/sshd atau /etc/pam.d/common -auth, tergantung pada apakah Anda ingin melakukan ini untuk semua login atau hanya SSH. Ingatlah untuk menghapus baris filler 'pam_certificate_auth.so' dan ubah baris [success = <n> sebagai hasilnya.Saya membaca posting ini dan berpikir itu kedengarannya keren - inilah cara saya mendapatkan otentikasi tiga faktor untuk bekerja. Saya menulis posting blog di sini .
Pada dasarnya, saya mengatur Google Authenticator dan kata sandi di PAM, kemudian setelah itu mengatur otentikasi kunci publik di OpenSSH (ini memintas dua yang lain), dan akhirnya diperlukan oleh OpenSSH untuk juga mengautentikasi melalui PAM (baris terakhir)
Dari / etc / ssh / sshd_conf
sumber
Hanya Pubkey + GoogleAuth yang harus Anda tambahkan ke atas /etc/pam.d/sshd Anda
Saya berasumsi Anda memiliki OpenSSH> = 6.2 dan sshd_config diedit
Untuk keamanan lebih paranoid, tambahkan beberapa konfigurasi tambahan: D
sumber