Saya menulis modul PAM saya sendiri yang akan menjadi bagian dari aplikasi yang saya kembangkan, tetapi saya tidak yakin persis di mana harus meletakkannya. Modul saya pada dasarnya melakukan otentikasi tingkat jaringan (dengan mojo lainnya tentu saja) mirip dengan LDAP.
Ada banyak file konfigurasi di /etc/pam.d/
direktori saya , dan saya tahu apa yang dilakukan sebagian besar layanan (kecuali beberapa, seperti atd, polkit, ppp). Saya berasumsi bahwa otentikasi dengan tumpukan PAM berjalan seperti ini:
- Menjalankan tumpukan berdasarkan nama layanan (jika ada file konfigurasi)
- Jika tidak diautentikasi, kembalilah pada common- *, di mana * adalah tipe modul (auth, akun, dll)
- Kembalikan sukses atau gagal memanggil aplikasi (dan data lainnya tentu saja)
Apakah saya benar dalam asumsi ini? Apakah semua platform memiliki common-auth, common-account, common-password, dan common-session?
Jika demikian, saya berpikir tentang hanya meletakkannya di atas common * sebagai sufficient
modul sehingga pada kegagalan tumpukan PAM biasa tidak akan terpengaruh. Ini terutama menguntungkan karena saya secara terprogram dapat melakukan ini pada instalasi perangkat lunak.
Apakah saya kehilangan potensi kerentanan keamanan?
Saya tidak dapat menemukan dokumentasi yang sangat bagus tentang di mana mengintegrasikan modul PAM khusus atau masalah keamanan di sekitar tempat meletakkan modul.
sumber
Jawaban:
Ketika Anda memanggil ke Linux-PAM untuk beberapa prosedur otentikasi, selalu ada satu dan hanya satu tumpukan yang dijalankan.
Definisi tumpukan dilihat di tempat-tempat ini; upaya pertama yang berhasil menentukan file mana yang dibaca:
file dalam
/etc/pam.d
dinamai aplikasi "nama layanan" (misalnya,sshd
ataugdm
), ataufile
/etc/pam.d/other
jika tidak ada file khusus layanan, ataufile
/etc/pam.conf
jika direktori/etc/pam.d
tidak ada.Lihat dokumentasi untuk pam_start fungsi untuk detailnya.
File-file umum adalah konvensi yang diikuti oleh banyak distribusi Linux tetapi tidak diamanatkan oleh perangkat lunak PAM itu sendiri. Mereka biasanya dimasukkan oleh file PAM lainnya melalui
@include
pernyataan; misalnya/etc/pam.d/other
file pada Debian memiliki konten berikut:@include
Pernyataan yang sama dapat digunakan oleh file khusus layanan juga, dan-memang- mereka dalam konfigurasi default pada Debian. Perhatikan bahwa ini adalah masalah konfigurasi: sysadmin bebas untuk mengubah file/etc/pam.d
agar tidak menyertakan file * umum sama sekali!Oleh karena itu: jika modul PAM Anda khusus untuk aplikasi Anda, buat file layanan khusus aplikasi dan panggil modul dari sana. Jangan tidak secara otomatis menambahkan modul ke file PAM layanan lain atau ke jatuh kembali
others
berkas, karena hal ini dapat merusak aplikasi lain yang diinstal pada sistem. Manajemen tumpukan perangkat lunak PAM adalah tugas untuk administrator sistem, bukan untuk pengembang aplikasi.sumber