GNU/Linux >> Belajar Linux >  >> Linux

Anatomi file konfigurasi Linux Pluggable Authentication Modules (PAM)

Dalam artikel sebelumnya, saya menjelaskan aliran aplikasi yang memanggil pustaka PAM untuk otentikasi pada tingkat yang sangat tinggi. Pada artikel ini, kita akan menelusuri file konfigurasi untuk sudo lokal perintah.

Saat menggunakan sudo , kami mengganti pengguna dan melakukan sesuatu. Perubahan hak istimewa ini memerlukan verifikasi bahwa kita adalah siapa yang kita katakan dan diizinkan untuk melakukan tindakan yang diberikan. /etc/sudoers file mengontrol siapa yang dapat melakukan apa, tetapi prosesnya masih memanggil PAM untuk pemeriksaan autentikasi apa pun. Sebagai bagian dari panggilan ini, proses mengidentifikasi dirinya sendiri, dan kemudian libpam mencari file konfigurasi yang cocok di /etc/pam.d direktori.

$ cat /etc/pam.d/sudo#%pam-1.0#type Modul ReturnCode OptionAuth termasuk sistem-authaccount termasuk sistem-authpassword termasuk sistem-otsesi opsional PAM_KEYINIT.se Revokesession Pam_limits yang Diperlukan. auth

Seperti banyak direktori *.d lainnya, manajemen paket dapat menambah atau menghapus file dari direktori ini. sudo RPM menambahkan /etc/pam.d/sudo berkas.

$ rpm -qf /etc/pam.d/sudosudo-1.9.0-0.1.b4.fc31.x86_64 

Versi upstream mungkin memiliki berbagai entri, tetapi paket yang disediakan distribusi ini menyertakan file konfigurasi yang memiliki beberapa include pernyataan ke /etc/pam.d/system-auth umum file yang disediakan oleh pam paket.

Bidang file konfigurasi

Bidang pertama dalam file ini mengidentifikasi Jenis panggilan yang dilakukan ke PAM. Garis dari jenis yang sama dikelompokkan bersama. Ada empat jenis:auth, akun, kata sandi, dan sesi. Lihat man pam untuk deskripsi setiap jenis.

Bidang kedua dikenal sebagai ReturnCode . Kolom ini memungkinkan PAM mengetahui cara menangani hasil pengujian modul. Kode pengembalian menunjukkan apakah tes diperlukan atau opsional. Kode juga dapat digunakan untuk menunjukkan bahwa baris tersebut bukan pengujian modul dengan opsi, melainkan nama file konfigurasi lain dengan pemeriksaan tambahan. Penjelasan lengkap tentang kode pengembalian dapat ditemukan di man pam.conf , dan yang paling umum dibahas nanti di artikel ini.

Sisa baris berisi nama modul dan opsi untuk modul itu. Nama modul harus cocok dengan modul yang tersedia di /etc/lib64/security direktori. Pilihannya mungkin berbeda tergantung pada jenis panggilan yang dilakukan. Beberapa modul hanya melakukan pengujian untuk beberapa jenis panggilan. Gunakan halaman manual untuk setiap modul untuk melihat contoh dan mempelajari tentang penggunaan dan opsi yang tersedia.

Urutan entri dalam jenis panggilan penting. Ini sebagian besar disebabkan oleh bagaimana kode kembali diproses, tetapi dalam beberapa kasus karena tindakan modul. Ketika libpam menerima pesan "selesai" atau "mati", itu melaporkan hasil keseluruhan kembali ke proses panggilan.

Konfigurasi untuk sudo memiliki beberapa termasuk garis. Baris ini memberitahu libpam untuk memasukkan semua baris dari jenis yang diberikan dari file konfigurasi yang ditentukan. Ada juga substack opsi, yang serupa dalam cara menyertakan baris dari file konfigurasi tertentu, tetapi pada "selesai" atau "mati", ia melaporkan kembali ke substack instruksi alih-alih proses asli yang memanggil libpam . Versi PAM yang lebih lama memiliki variasi lain tentang bagaimana file konfigurasi lainnya disertakan. Misalnya, ketika saya mulai menjelajahi PAM hampir 20 tahun yang lalu, ada modul khusus yang dipanggil dengan file konfigurasi sebagai argumen. Kata kunci "sertakan" tidak valid untuk ReturnCode lapangan.

Kembalikan kode di file konfigurasi pusat

/etc/pam.d/sudo file yang ditampilkan sebelumnya cukup pendek. Tiga dari empat jenis panggilan hanya memiliki include dari file lain. /etc/pam.d/system-auth file lebih khas dari file konfigurasi, dengan banyak pemeriksaan untuk setiap jenis panggilan.

$ cat /etc/pam.d/system-auth#%PAM-1.0# File ini dibuat secara otomatis.# Perubahan pengguna akan dimusnahkan saat authconfig dijalankan berikutnya.auth        diperlukan      pam_env.soauth        cukup pam_unix.so nullok try_first_passauth        persyaratan     pam_succeed_if.so uid>=1000 quiet_successauth        cukup    pam_sss.so forward_passauth        required   . 

wajib kata kunci mungkin yang paling umum. Ini menunjukkan bahwa modul harus lulus pemeriksaan untuk lulus keseluruhan untuk diserahkan kembali ke aplikasi. Namun, bahkan pada kegagalan, baris berikut dalam jenis itu akan tetap diperiksa. Ini adalah praktik lama untuk tidak membagikan alasan kegagalan otentikasi. Pada sistem 20 tahun yang lalu, mungkin saja bisa menebak bagaimana otentikasi gagal dengan berapa lama waktu yang dibutuhkan untuk gagal.

persyaratan kata kunci mirip dengan wajib bahwa cek harus lulus, tetapi dalam kasus kegagalan, ia mengembalikan pesan "mati". Perlu ayo libpam ketahui bahwa baris berikut tidak akan diperiksa, dan untuk menginformasikan proses pemanggilan hasil keseluruhan—dalam hal ini, kegagalan.

cukup kata kunci hampir kebalikan dari syarat . Jika berhasil, pesan "selesai" ditampilkan, dan libpam melanjutkan dan mengirimkan hasil keseluruhannya kembali ke aplikasi pemanggil. Hasil lain dari modul ini diabaikan, dan pemeriksaan berlanjut.

cukup kata kunci adalah umum ketika mungkin ada beberapa cara untuk memverifikasi suatu kriteria. Misalnya, saat memverifikasi sandi, pengguna mungkin ditentukan di /etc/passwd lokal dan /etc/shadow file, atau mungkin hanya ditentukan di sistem pusat yang diakses dengan sssd . pam_unix modul memeriksa file lokal. Jika ada keberhasilan, tidak perlu melanjutkan dan memeriksa layanan terpusat. Namun, jika pengguna tidak didefinisikan secara lokal, kami tidak ingin merekam kegagalan, kami ingin mengabaikan hasilnya dan mencoba pam_sss modul. Karena cukup kata kunci tidak pernah benar-benar gagal, biasanya menambahkan pam_deny yang diperlukan baris setelah serangkaian cukup garis. pam_deny modul selalu gagal seperti /bin/false dapat dieksekusi.

opsional kata kunci mirip dengan cukup karena mengabaikan kegagalan apa pun. Namun, pada kesuksesan, ia bertindak lebih seperti wajib kata kunci dengan menyetel nilai "ok" dan terus melakukan pemeriksaan tambahan.

Karena keduanya persyaratan dan cukup dapat menjadi titik keluar dari tumpukan modul, urutan dalam file konfigurasi itu penting. Baris setelah kata kunci tersebut mungkin atau mungkin tidak dieksekusi.

Kode pengembalian yang rumit

Di luar sintaks kata kunci sederhana, kode pengembalian kompleks didefinisikan dengan pasangan nilai kunci di dalam tanda kurung siku. /etc/pam.d/system-auth file memiliki contoh di bagian sesi sintaks yang lebih kompleks.

$ cat /etc/pam.d/system-auth...omitted...session     optional      pam_keyinit.so revokesession     diperlukan      pam_limits.so-session     opsional      pam_systemd.sosession=1 _ if .so layanan di crond quiet use_uidsession     diperlukan      pam_unix.so 

Anda dapat menemukan sintaks kompleks yang cocok dengan setiap kata kunci di pam.conf halaman manual. - yang ditunjukkan di atas juga didefinisikan di halaman manual. Ini menunjukkan bahwa logging dapat dilewati jika modul tidak diinstal pada sistem.

Apa selanjutnya?

Sekarang kita bisa berjalan ketika panggilan dan keluar terjadi dengan libpam , langkah selanjutnya adalah lebih memahami use case untuk setiap modul. Sebagian besar modul memiliki halaman manual yang menjelaskan penggunaan dan menunjukkan contoh baris yang akan muncul di pam.d file konfigurasi. Beberapa modul juga merujuk file tambahan di /etc/security direktori. File-file itu dikomentari dengan baik dan juga sering memiliki halaman manual sendiri. pam_pwquality dan pam_limits modul adalah contoh yang baik untuk memulai.

Menutup

Pada artikel berikutnya, saya akan membahas beberapa perubahan yang dibuat menggunakan authconfig kegunaan. Jika Anda ingin langsung mengedit file sendiri dan memiliki Langganan Pembelajaran Red Hat, lihat bab tentang PAM dalam kursus Keamanan Red Hat:Linux dalam Fisik, Virtual, dan Cloud (RH415).

[ Kursus online gratis:Tinjauan teknis Red Hat Enterprise Linux. ]


Linux
  1. Panduan pemula untuk Konfigurasi Modul Kernel di Linux

  2. Memahami File Konfigurasi /etc/profile di Linux

  3. Lokasi non-default untuk file konfigurasi ssh di Linux

  1. Linux – Semuanya Adalah File?

  2. Bagaimana cara menyimpan atau mengekspor konfigurasi kernel Linux khusus?

  3. chsh:Otentikasi PAM gagal

  1. Cara memindahkan file di Linux

  2. Memahami Izin File Linux

  3. Perintah Ekor Linux