Posting ini menjelaskan sistem kredit pam_cracklib PAM dalam kaitannya dengan kompleksitas sandi PAM Linux.
Ikhtisar PAM
Pluggable Authentication Modules (PAM) adalah kerangka kerja modular terpusat yang fleksibel yang digunakan untuk mengelola kebijakan otentikasi sistem dan memfasilitasi otentikasi pengguna. PAM menyediakan Antarmuka Pemrograman Aplikasi (API) umum yang memberikan hak istimewa kepada program untuk otentikasi pengguna.
Alur otentikasi PAM adalah sebagai berikut:
Aplikasi (login, ssh, sudo, su, ftp, dll.) -> PAM -> Sumber otentikasi (sandi lokal, LDAP, Kerberos, dll.)
PAM memisahkan tugas otentikasi menjadi empat grup manajemen:
- Pengelolaan Akun – periksa izin pengguna ke layanan, kedaluwarsa kata sandi pengguna, dll.
- Manajemen Otentikasi – otentikasi pengguna, kredensial pengguna, tantangan/tanggapan (kata sandi), biometrik.
- Pengelolaan Sandi – memfasilitasi manajemen kata sandi – mengubah, memperbarui, dll.
- Manajemen Sesi – tugas koneksi layanan pengguna pra/pasca mis. jejak audit, mount direktori home pengguna, dll.
Modul pam_cracklib PAM
Saat ditambahkan ke tumpukan kata sandi PAM, modul pam_cracklib melakukan pemeriksaan kekuatan kata sandi pengguna yang diusulkan. Modul memanggil rutin cracklib yang membandingkan kata sandi dengan kamus kata-kata yang dikenal (umum, lemah, default, dll.) sebelum melakukan pemeriksaan kekuatan lebih lanjut, seperti:
- Palindrom :Apakah kata sandi baru adalah palindrom yaitu string yang membaca mundur dan maju yang sama mis. radar, nyonya, dll.
- Hanya Perubahan Huruf :Apakah kata sandi baru sama dengan yang lama hanya dengan perubahan huruf besar-kecil?
- Mirip :Apakah kata sandi baru terlalu mirip dengan yang lama?
- Sederhana :Apakah kata sandi baru terlalu kecil? Ini dikendalikan oleh 6 argumen:minlen , maxclassrepeat , dkredit , ukredit , lkredit , dan okredit .
- Diputar :Apakah kata sandi baru merupakan versi rotasi dari kata sandi lama?
- Sudah digunakan :Apakah kata sandi pernah digunakan sebelumnya?
- Karakter berurutan yang sama :Pemeriksaan opsional untuk karakter berurutan yang sama.
- Berisi nama pengguna :Opsional periksa apakah sandi berisi nama pengguna.
Saat diaktifkan tanpa argumen, opsi/nilai pemeriksaan kekuatan pam_cracklib default membantu memastikan bahwa sandi yang cukup aman diterima.
Sistem Kredit pam_cracklib
Modul pam_cracklib menawarkan berbagai opsi yang berikut ini secara langsung mengontrol kompleksitas kata sandi:
- minlen – Panjang kata sandi minimum
- lkredit – Jumlah minimum huruf kecil
- ukredit – Jumlah minimum huruf besar
- dkredit – Jumlah minimum karakter numerik
- okredit – Jumlah minimum karakter non-alfanumerik
minlen opsi mendefinisikan ukuran minimum yang dapat diterima untuk kata sandi baru. Namun, selain jumlah karakter, kredit (yaitu skor) diberikan untuk setiap jenis karakter berbeda yang digunakan yaitu lower, upper, digit, other. Nilai kredit dari setiap jenis karakter yang digunakan diperhitungkan untuk memenuhi nilai minlen yang ditentukan.
lkredit=N :(N>=0) Ini adalah kredit maksimum untuk memiliki huruf kecil di kata sandi baru. Jika Anda memiliki kurang dari atau N huruf kecil, setiap huruf akan dihitung +1 untuk memenuhi nilai minlen saat ini. Default untuk lcredit adalah 1 yang merupakan nilai yang disarankan untuk minlen kurang dari 10.
(N <0) Ini adalah jumlah minimum huruf kecil yang harus dipenuhi untuk kata sandi baru.
ucredit=N :(N>=0) Ini adalah kredit maksimum untuk memiliki huruf besar di kata sandi baru. Jika Anda memiliki kurang dari atau N huruf besar, setiap huruf akan dihitung +1 untuk memenuhi nilai minlen saat ini. Default untuk ucredit adalah 1 yang merupakan nilai yang disarankan untuk minlen kurang dari 10.
(N <0) Ini adalah jumlah minimum huruf besar yang harus dipenuhi untuk kata sandi baru.
dcredit=N (N>=0) Ini adalah kredit maksimum untuk memiliki digit dalam kata sandi baru. Jika Anda memiliki kurang dari atau N digit, setiap digit akan dihitung +1 untuk memenuhi nilai minlen saat ini. Default untuk dcredit adalah 1 yang merupakan nilai yang disarankan untuk minlen kurang dari 10.
(N <0) Ini adalah jumlah digit minimum yang harus dipenuhi untuk kata sandi baru.
okredit=N :(N>=0) Ini adalah kredit maksimum untuk memiliki karakter lain di kata sandi baru. Jika Anda memiliki kurang dari atau N karakter lain, setiap karakter akan dihitung +1 untuk memenuhi nilai minlen saat ini. Default untuk ocredit adalah 1 yang merupakan nilai yang disarankan untuk minlen kurang dari 10.
(N <0) Ini adalah jumlah minimum karakter lain yang harus dipenuhi untuk kata sandi baru.
Saat menggunakan sistem kredit PAM, sangat mungkin kata sandi dengan panjang kurang dari yang ditentukan oleh minlen untuk diterima yaitu kata sandi juga dapat berisi karakter dari satu atau lebih jenis karakter – lebih rendah, atas, digit, lainnya.
Perhatikan konfigurasi pam_cracklib berikut:
--/etc/pam.d/system-auth-ac: ... password required pam_cracklib.so minlen=12 lcredit=1 ucredit=1 dcredit=2 ocredit=1 ...
Berikut adalah perhitungan kredit password pam_cracklib untuk password user “@1Bcdef2”:
- @1Bcdef2:8 kredit diberikan yaitu satu untuk setiap karakter
- @:1 kredit diberikan (lainnya)
- 1,2:1 kredit diberikan (digit)
- B:1 kredit diberikan (atas)
- cdef:1 kredit diberikan (lebih rendah)
8 + 4 =12 (menit)
Mengingat jumlah dan jenis karakter yang digunakan dalam kata sandi di atas, sistem menerima panjang kata sandi minimal 8 karakter. Perhatikan bahwa kata sandi yang hanya berisi 11 huruf kecil juga akan diterima yaitu:
- abcdefghijk:11 kredit diberikan – satu untuk setiap karakter
- abcdefghijk:0 kredit diberikan (lainnya)
- abcdefghijk:0 kredit diberikan (digit)
- abcdefghijk:0 kredit diberikan (atas)
- abcdefghijk:1 kredit diberikan (lebih rendah)
11 + 1 =12 (menit)
Berikut ini adalah contoh terperinci dari kata sandi yang diterima dan tidak diterima:
minlen | Kata Sandi | Panjang Kata Sandi (karakter) | Kredit | Sandi Diterima? |
---|---|---|---|---|
10 | qwertasdf | 9 | 9 (karakter) + 1 (lebih rendah) =10 | Ya |
12 | qwertasdfgz | 11 | 11 (karakter) + 1 (lebih rendah) =12 | Ya |
14 | qwertasdfgzxc | 13 | 13 (karakter) + 1 (lebih rendah) =14 | Ya |
14 | qwertasdf1$ | 11 | 11 (karakter) + 1 (bawah) + 1 (digit) + 1 (lainnya) =14 | Ya |
10 | qwertasd | 8 | 8 (karakter) + 1 (lebih rendah) = 9 | Tidak |
12 | qwertasdfg | 10 | 10 (karakter) + 1 (lebih rendah) =11 | Tidak |
14 | qwertasdfgzx | 12 | 12 (karakter) + 1 (lebih rendah) =13 | Tidak |
Menegakkan Kompleksitas Kata Sandi dengan Sistem Kredit pam_cracklib
Dalam semua contoh sejauh ini, perhatikan bahwa penggunaan sistem kredit sebenarnya tidak memaksakan kerumitan kata sandi. Untuk menerapkan kompleksitas kata sandi, tentukan nilai negatif untuk opsi pam_cracklib lcredit, ucredit, dcredit, ocredit. Saat menentukan nilai negatif, kredit tidak diberikan untuk penggunaan karakter bawah, atas, digit, dan lainnya, namun sandi harus tetap berisi karakter dari masing-masing grup karakter yang ditentukan.
Perhatikan konfigurasi pam_cracklib berikut:
--/etc/pam.d/system-auth-ac: ... password required pam_cracklib.so minlen=8 lcredit=-1 ucredit=-1 dcredit=-2 ocredit=-1 ...
Dengan hal di atas, kata sandi pengguna yang berhasil harus …
- panjangnya minimal 8 karakter dan
- berisi minimal 1 karakter huruf kecil dan
- berisi minimal 1 karakter huruf besar dan
- berisi minimal 2 digit dan
- berisi setidaknya 1 karakter lain
Catatan :CentOS/RHEL 7 menggunakan pam_pwquality modul sebagai ganti pam_cracklib dan modul pam_pwquality kompatibel dengan opsinya.
PAM_PWQUALITY(8) System Manager's Manual PAM_PWQUALITY(8) NAME pam_pwquality - PAM module to perform password quality checking SYNOPSIS pam_pwquality.so [...] DESCRIPTION This module can be plugged into the password stack of a given service to provide some plug-in strength-checking for passwords. The code was originally based on pam_cracklib module and the module is backward compatible with its options.