Modul Yubico PAM menyediakan cara mudah untuk mengintegrasikan YubiKey ke dalam infrastruktur otentikasi pengguna Anda yang ada. PAM digunakan oleh GNU/Linux, Solaris dan Mac OS X untuk otentikasi pengguna, dan oleh aplikasi khusus lainnya seperti NCSA MyProxy.
Modul ini berfungsi untuk sistem multi-pengguna. Mode operasi utama adalah dengan melakukan validasi online menggunakan layanan validasi YubiKey (seperti YubiCloud, atau layanan pribadi yang dikonfigurasi menggunakan parameter 'daftar url').
Di versi 2.6, validasi offline juga dimungkinkan melalui penggunaan Challenge-Response HMAC-SHA1 yang ditemukan di YubiKey 2.2 dan yang lebih baru. Hal ini menyebabkan ketergantungan libykpers-1 dari paket ykpersonalize. Lewati --without-cr
untuk configure
guna menghindari ketergantungan ini.
Komunitas pengembangan dikoordinasikan melalui halaman proyek GitHub.
Proyek ini dilisensikan di bawah lisensi BSD. Lihat file COPYING untuk kata-kata yang tepat. Untuk rentang tahun hak cipta apa pun yang ditentukan sebagai YYYY-ZZZZ dalam paket ini, perhatikan bahwa rentang tersebut menentukan setiap tahun dalam interval tertutup tersebut.
Lewati ke bagian berikutnya jika Anda menggunakan versi paket resmi.
Anda dapat memeriksa sumber menggunakan Git dengan perintah berikut:
$ git klon https://github.com/Yubico/yubico-pam.git
Ini akan membuat direktori yubico-pam
.
Autoconf, automake, libtool, asciidoc, xsltproc dan docbook-xsl harus diinstal untuk membuat pohon sumber yang dapat dikompilasi.
Hasilkan sistem build menggunakan:
$cd yubico-pam $ autoreconf --instal
Anda harus menginstal libykclient (ykclient.h, libykclient.so) dan libpam-dev (security/pam_appl.h, libpam.so). Ini pada gilirannya memerlukan cURL, yang harus Anda instal, dan libyubikey.
Otentikasi offline Challenge-Response memerlukan libykpers-1 dari proyek personalisasi yubikey:
Tes mandiri memerlukan Perl dengan modul Net::LDAP::Server terinstal.
Sistem build menggunakan Autoconf, untuk mengatur agar sistem build dijalankan:
./konfigurasi
Gunakan --without-ldap untuk menonaktifkan dukungan ldap.
Kemudian buat kodenya, jalankan tes mandiri dan instal binari:
lakukan pengecekan instalasi
Sudah ada paket di Fedora/EPEL yubico-pam yang dapat diinstal dengan menggunakan yum:
$ sudo enak instal pam_yubico
Ada PPA Ubuntu (Arsip Paket Pribadi) untuk yubico-pam yang dapat diinstal menggunakan perintah berikut pada platform Ubuntu yang cukup modern:
$ sudo add-apt-repository ppa:yubico/stable $ sudo pembaruan apt-get $ sudoapt-get install libpam-yubico
Lihat file /usr/share/doc/libpam-yubico/README.Debian
setelah instalasi.
yubico-pam dan paket pendukung Yubico memiliki port FreeBSD yang sesuai. Untuk menginstal:
$ cd /usr/ports/keamanan/pam_yubico $ membuat instalasi bersih
Catatan konfigurasi lanjutan tersedia di sini.
Instal di pengaturan PAM Anda dengan menambahkan baris ke file yang sesuai di /etc/pam.d/
:
auth cukup pam_yubico.so id=debug [ID Klien API Anda].
dan pindahkan pam_yubico.so ke /lib/security/ (atau di mana pun modul PAM berada di sistem Anda):
mv /usr/local/lib/security/pam_yubico.so /lib/security/
Untuk informasi lebih lanjut, lihat dokumentasi proyek.
Parameter modul PAM yang didukung adalah:
file autentikasi | Untuk menunjukkan lokasi file yang menyimpan pemetaan ID token YubiKey ke nama pengguna. |
pengenal | ID Klien API Anda di server validasi Yubico. Jika Anda ingin menggunakan layanan default YubiCloud, buka di sini. |
kunci | Untuk menunjukkan kunci klien Anda dalam format base64. Kunci klien juga dikenal sebagai kunci API, dan memberikan integritas dalam komunikasi antara klien (Anda) dan server validasi. Jika Anda ingin mendapatkannya untuk digunakan dengan layanan default YubiCloud, buka di sini. |
men-debug | untuk mengaktifkan keluaran debug. |
debug_file | nama file untuk menulis debug, file harus ada dan berupa file biasa. stdout adalah bawaannya. |
selalu baik-baik saja | untuk mengaktifkan semua upaya otentikasi agar berhasil (alias mode presentasi). |
coba_pass_pertama | Sebelum meminta kata sandi kepada pengguna, modul terlebih dahulu mencoba kata sandi modul bertumpuk sebelumnya jika kata sandi tersebut memenuhi modul ini juga. |
gunakan_first_pass | Argumen use_first_pass memaksa modul untuk menggunakan kata sandi modul yang ditumpuk sebelumnya dan tidak akan pernah meminta pengguna - jika kata sandi tidak tersedia atau kata sandi tidak sesuai, akses pengguna akan ditolak. |
selalu_cepat | Jika disetel, jangan mencoba melakukan pencarian untuk menentukan apakah pengguna telah mengonfigurasi YubiKey, melainkan meminta Yubikey, apa pun yang terjadi. Ini berguna jika ldap_bind_as_user diaktifkan tetapi modul ini digunakan untuk membaca kata sandi pengguna (dalam skenario autentikasi YubiKey+OTP). |
batal | Jika disetel, jangan gagal ketika tidak ada token yang dideklarasikan untuk pengguna di file pemetaan otorisasi atau di LDAP. Ini dapat digunakan untuk menjadikan autentikasi Yubikey opsional kecuali pengguna memiliki token terkait. |
ldap_starttls | Jika disetel, keluarkan perintah STARTTLS ke koneksi LDAP sebelum mencoba mengikatnya. Ini adalah pengaturan umum untuk server yang hanya mendengarkan pada port 389 namun masih memerlukan TLS. |
ldap_bind_as_user | Jika disetel, gunakan pengguna yang masuk untuk mengikat ke LDAP. Ini akan menggunakan kata sandi yang diberikan oleh pengguna melalui PAM. Jika ini diset, ldapdn dan uid_attr juga harus diset. Mengaktifkan ini akan menyebabkan 'ldap_bind_user' dan 'ldap_bind_password' diabaikan |
daftar url | Daftar templat URL yang akan digunakan. Ini diatur dengan memanggil ykclient_set_url_bases. Daftarnya harus dalam format : |
url | Opsi ini tidak boleh digunakan, silakan gunakan opsi daftar url saja. Tentukan templat URL yang akan digunakan, ini diatur dengan memanggil yubikey_client_set_url_template, yang defaultnya adalah: |
kapat | tentukan jalur penyimpanan sertifikat X509. Ini diperlukan jika 'https' atau 'ldaps' masing-masing digunakan di 'url' dan 'ldap_uri'. |
cainfo | Opsi untuk mengizinkan penggunaan bundel CA, bukan jalur. |
proksi | tentukan proxy untuk terhubung ke server validasi. Skema yang valid adalah http://, https://, sock4://, sock4a://, sock5:// atau sock5h://. Socks5h meminta proxy untuk melakukan penyelesaian dns. Jika tidak ada skema atau port yang ditentukan, port proxy HTTP 1080 akan digunakan. |
verbose_otp | Argumen ini digunakan untuk menampilkan OTP (One-Time Password) ketika dimasukkan, yaitu untuk mengaktifkan terminal echo dari karakter yang dimasukkan. Anda disarankan untuk tidak menggunakan ini, jika Anda menggunakan otentikasi dua faktor karena itu akan menampilkan kata sandi Anda di layar. Ini memerlukan layanan yang menggunakan modul PAM untuk menampilkan bidang khusus. Opsi ini tidak dapat digunakan dengan OpenSSH. |
ldap_uri | tentukan URI server LDAP (misalnya ldap://localhost). |
server ldap | tentukan host server LDAP (port LDAP default digunakan). Tidak digunakan lagi. Gunakan "ldap_uri" sebagai gantinya. |
ldapdn | tentukan dn tempat pengguna disimpan (misalnya: ou=users,dc=domain,dc=com). |
ldap_clientcertfile | Jalur ke file sertifikat klien yang akan digunakan saat berbicara dengan server LDAP. Perhatikan bahwa ini memerlukan 'ldap_clientkeyfile' untuk disetel juga. |
ldap_clientkeyfile | Jalur ke kunci yang akan digunakan dengan sertifikat klien saat berbicara dengan server LDAP. Perhatikan bahwa ini memerlukan 'ldap_clientcertfile' untuk disetel juga. |
ldap_bind_user | Pengguna akan mencoba mengikat LDAP sebagai. |
ldap_bind_password | Kata sandi untuk digunakan pada pengikatan LDAP. |
ldap_filter | Filter LDAP yang digunakan untuk mencoba menemukan objek yang benar di LDAP. Dalam string ini |
ldap_cacertfile | File sertifikat CA untuk koneksi LDAP. |
pengguna_attr | tentukan atribut LDAP yang digunakan untuk menyimpan nama pengguna (misalnya:cn). |
yubi_attr | tentukan atribut LDAP yang digunakan untuk menyimpan ID YubiKey. |
yubi_attr_prefix | tentukan awalan nilai atribut LDAP, jika merupakan atribut generik, yang digunakan untuk menyimpan beberapa jenis ID. |
token_id_length | Panjang ID yang diawali dengan OTP (12 jika menggunakan YubiCloud). |
mode | Modus operasi. Gunakan "klien" untuk validasi online dengan layanan validasi YubiKey seperti YubiCloud, atau gunakan "respons tantangan" untuk validasi offline menggunakan YubiKeys dengan konfigurasi Respons Tantangan HMAC-SHA-1. Lihat halaman manual ykpamcfg(1) untuk rincian lebih lanjut tentang cara mengkonfigurasi validasi Challenge-Response offline. |
chalresp_path | Direktori yang digunakan untuk menyimpan file tantangan jika terjadi konfigurasi seluruh sistem (berbeda dengan file tantangan yang disimpan di direktori home pengguna). Lokasi ini seharusnya hanya dapat dibaca dan ditulis oleh root. Lihat |
mysql_server | Nama Host/Alamat server mysql yang akan digunakan untuk pemetaan. |
mysql_port | Port jaringan server mysql. |
mysql_pengguna | Pengguna untuk mengakses database mysql. |
kata sandi_mysql | Kata sandi untuk pengguna mysql. |
mysql_database | Basis data mysql yang akan digunakan. |
Jika Anda menggunakan "debug" Anda mungkin merasa berguna untuk membuat file log yang dapat ditulis dunia:
touch /var/run/pam-debug.log
chmod go+w /var/run/pam-debug.log
Catatan | Harap diingat, akses fisik ke sistem sering kali memungkinkan pengabaian kontrol keamanan. Jika penyerang memiliki akses fisik ke sistem Anda (seperti laptop yang tertinggal di kamar hotel) dan dapat melakukan booting ke mode pengguna tunggal, mereka dapat menonaktifkan yubico-pam di konfigurasi sistem Anda. |
Pemetaan harus dilakukan antara ID token YubiKey dan ID pengguna yang dilampirkannya. Ada dua cara untuk melakukan ini, baik secara terpusat dalam satu file, atau secara individual, di mana pengguna dapat membuat pemetaan di direktori home mereka. Jika file pemetaan otorisasi pusat digunakan, pemetaan direktori home pengguna tidak akan digunakan dan berlaku sebaliknya jika pemetaan direktori home pengguna digunakan, file pemetaan otorisasi pusat tidak akan digunakan.
Buat /etc/yubikey_mappings
, file harus berisi nama pengguna dan ID token YubiKey yang dipisahkan dengan titik dua (format yang sama dengan file passwd) untuk setiap pengguna yang ingin Anda izinkan masuk ke sistem menggunakan YubiKey.
Pemetaannya akan terlihat seperti ini, satu per baris:
: : :…. : : :….
Sekarang tambahkan authfile=/etc/yubikey_mappings
ke baris konfigurasi PAM Anda, sehingga terlihat seperti:
auth cukup pam_yubico.so id=[ID Klien API Anda] authfile=/etc/yubikey_mappings
Setiap pengguna membuat file ~/.yubico/authorized_yubikeys
di dalam direktori home mereka dan menempatkan pemetaan di file tersebut, file tersebut hanya boleh memiliki satu baris:
: :
Konsepnya hampir sama dengan file Otor_keys SSH.
Anda bisa mendapatkan ID token YubiKey dengan beberapa cara. Salah satunya adalah dengan menghapus 32 karakter terakhir dari setiap OTP (One Time Password) yang dihasilkan dengan YubiKey Anda. Cara lainnya adalah dengan menggunakan kalkulator modhex.
Masukkan OTP YubiKey Anda dan konversikan, ID token YubiKey Anda terdiri dari 12 karakter dan terdaftar sebagai:
Modhex dikodekan: XXXXXXX
Tidak yakin apa maksud bagian terakhir itu? Berikut cara mendapatkan salinan OTP Anda.
Buka terminal
Tekan tombol YubiKey. Ini akan menampilkan OTP ke dalam shell:
$ cccccccgklgcvnkcvnnegrnhgrjkhlkfhdkclfncvlgj
bash: cccccccgklgcvnkcvnnegrnhgrjkhlkfhdkclfncvlgj: command not found
Ini dapat disisipkan ke halaman Modhex_Calculator.
Ini mengharuskan Anda mengaktifkan modul pam dengan 'debug' diaktifkan. Saat diminta untuk YubiKey tekan tombol. Modul pam akan mencetak informasi debug termasuk OTP dan ID token Anda ke shell — salin ID tersebut ke file konfigurasi Anda dan Anda akan siap melakukannya.
YubiKey untuk `pengguna Anda': [pam_yubico.c:pam_sm_authenticate(867)] konv menghasilkan 44 byte [pam_yubico.c:pam_sm_authenticate(885)] Melewati 0 byte pertama. Panjangnya 44, token_id disetel ke 12 dan token OTP selalu 32. [pam_yubico.c:pam_sm_authenticate(892)] OTP: ccccccclabcabkhbdncicglfltnukadfoifadfhhhhfe ID: cccccclabcab
Pengguna dengan SELinux dalam mode penegakan (default pada Fedora 17+) mungkin mengalami masalah login dengan layanan termasuk yang divalidasi melalui polkit-agent-helper-1, sshd dan login.
Hal ini didokumentasikan dalam bugzilla Red Hat termasuk solusi untuk ssh (File yang setara dapat dibuat untuk layanan lain). Sistem dalam mode 'permisif' akan menghasilkan peringatan AVC tetapi otentikasi akan berhasil.
Untuk menentukan apakah Anda menerapkan SELinux atau tidak, jalankan perintah sestatus
.
Jika Anda ingin menggunakan YubiKey untuk mengautentikasi Anda pada login konsol Linux, tambahkan yang berikut ini ke bagian atas /etc/pam.d/login
:
auth cukup pam_yubico.so id=debug [ID Klien API Anda].
Lihat contoh ekstensi skema Direktori Aktif Michael Ludvig untuk penyimpanan/asosiasi atribut ID publik YubiKey dengan akun pengguna tertentu: https://github.com/mludvig/yubikey-ldap/tree/master/microsoft-schema
buat file '/etc/pam.d/openvpn':
auth diperlukan pam_yubico.so ldap_uri=ldap://contoso.com debug id=[ID API Anda] yubi_attr=YubiKeyID ldapdn=DC=contoso,DC=com ldap_filter=(&(sAMAccountName=%u)(objectClass=pengguna)(memberOf=CN=somegroup,DC=contoso,DC=com)) [ldap_bind_user=CN=binduser,OU=Akun Layanan,DC=contoso,DC=com] ldap_bind_password=bind_password try_first_pass akun diperlukan pam_yubico.so
buat file 'openvpn.conf'
plugin openvpn-plugin-auth-pam.jadi openvpn