Modul PAM khusus dan pertimbangan keamanan

8

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:

  1. Menjalankan tumpukan berdasarkan nama layanan (jika ada file konfigurasi)
  2. Jika tidak diautentikasi, kembalilah pada common- *, di mana * adalah tipe modul (auth, akun, dll)
  3. 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 sufficientmodul 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.

hajar
sumber
2
Inti dari PAM adalah untuk memisahkan prosedur otentikasi yang sebenarnya dari aplikasi, sehingga membiarkan sysadmin mengkonfigurasinya secara terpisah. Jika aplikasi Anda bergantung pada modul autentikasi Anda, ini mungkin merupakan indikasi bahwa Anda menyalahgunakan PAM.
Riccardo Murri
Ya, aplikasi saya adalah daemon yang menyinkronkan akun pengguna dengan jaringan jika pengguna yang masuk adalah pengguna jaringan. Saya pikir selama saya tidak mengizinkan komunikasi antara daemon dan modul PAM saya harus baik-baik saja.
beatgammit

Jawaban:

7

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:

  1. file dalam /etc/pam.ddinamai aplikasi "nama layanan" (misalnya, sshdatau gdm), atau

  2. file /etc/pam.d/otherjika tidak ada file khusus layanan, atau

  3. file /etc/pam.confjika direktori /etc/pam.dtidak 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/otherfile pada Debian memiliki konten berikut:

# We fall back to the system default in /etc/pam.d/common-*
@include common-auth
@include common-account
@include common-password
@include common-session

@includePernyataan 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.dagar 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 othersberkas, 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.

Riccardo Murri
sumber
Ini benar-benar jelas bagi saya. Apakah beberapa distribusi menggunakan file * umum sebagai cadangan untuk file konfigurasi khusus layanan? Ketika saya meletakkan modul saya di common-auth, itu dijalankan bahkan ketika menjalankan sudo.
beatgammit
@tjameson Saya sudah memperbarui jawabannya dengan rincian lebih lanjut tentang file * umum
Riccardo Murri
Ok terima kasih!! Sekarang saya mengerti semuanya. Saya berpikir bahwa mungkin distro saya memiliki prosedur penyelesaian kustom bawaan untuk versi PAM mereka atau semacamnya. Terima kasih sudah membereskannya.
beatgammit