Batasi login OpenVPN ke satu grup dengan kebijakan PAM
Layanan PAM khusus dapat menerima hanya anggota grup VPN tanpa menyentuh aturan login seluruh sistem. Arahkan plugin auth-pam ke sana dan uji hasilnya.
Biarkan setiap akun dapat login seperti biasa, tetapi izinkan hanya satu grup menggunakan VPN. PAM dapat menyatakan perbedaan itu tanpa penyimpanan kata sandi kedua, dan plugin OpenVPN dapat diarahkan ke layanan yang hanya berisi pemeriksaan yang Anda maksud. Triknya adalah membangun layanan itu tanpa mewarisi tumpukan seluruh sistem secara tidak sengaja.
Penelusuran di sini dimulai dari nama layanan plugin, membangun kebijakan, lalu menguji tiga hasil yang penting: anggota, orang luar dengan kata sandi valid, dan kredensial buruk.
Mengapa layanan PAM terpisah
Plugin auth-pam mengambil nama layanan sebagai argumennya. Nama itu memilih berkas di bawah /etc/pam.d, dan tumpukan di berkas itu yang berjalan saat login VPN. Jika Anda memberikan nama yang sama dengan yang dipakai login seluruh sistem, Anda mewarisi setiap keputusan dalam tumpukan itu, termasuk yang ditambahkan kemudian karena alasan tak terkait.
Buat layanan khusus sebagai gantinya. Mulailah dari tumpukan yang berfungsi dan sudah mengautentikasi ke backend yang dimaksud, seperti berkas kata sandi lokal, SSSD, atau layanan direktori, lalu tambahkan aturan kelayakan. Menyalin dua baris ke berkas kosong adalah kesalahan umum: kedaluwarsa kata sandi, penguncian akun, dan pemeriksaan lain mungkin berada di tumpukan yang tidak Anda salin.
Memisahkan layanan juga membatasi dampak. Aturan khusus VPN dalam tumpukan bersama dapat menolak akses SSH atau konsol bagi semua orang, yang mengubah perubahan akses menjadi gangguan.
Menulis aturan grup
Pemeriksaan kelayakan berada pada fase akun, setelah kredensial diverifikasi. Aturan seperti account required pam_succeed_if.so user ingroup vpnusers memungkinkan pemrosesan berlanjut hanya jika pengguna yang terautentikasi adalah anggota grup tersebut.
Baris itu adalah fragmen, bukan layanan lengkap. Integrasikan di tempat setiap jalur yang diterima mencapainya, dan periksa flag kontrol di sekitarnya. Kontrol sufficient atau lompatan lebih awal dalam tumpukan dapat mengakhiri pemrosesan sebelum aturan Anda berjalan, yang mengubah pembatasan menjadi saran.
Jangan menambahkan use_uid karena kebiasaan. Tanpanya modul mengevaluasi pengguna yang diautentikasi; dengannya modul mengevaluasi akun tempat proses OpenVPN berjalan, yang biasanya root atau akun layanan dan karena itu bukan orang yang login.
Keanggotaan grup berasal dari resolusi identitas sistem, bukan dari nama yang Anda kenali. Untuk pengguna direktori, pastikan backend yang sama menjawab kueri grup bagi pengguna itu, karena grup lokal dengan nama yang familier adalah objek berbeda dari grup direktori dengan nama yang sama.
Jebakan urutan dan identitas
Letakkan aturan grup setelah tumpukan autentikasi dan setelah pemeriksaan yang masih harus berlaku, tetapi sebelum atau bersama pemeriksaan akun yang Anda pertahankan. PAM mengevaluasi modul dalam urutan berkas, dan nilai kontrol pada setiap baris menentukan apakah kegagalan bersifat final.
Waspadai tumpukan ganda. Pola umum adalah include yang sudah berisi aturan akun, diikuti aturan grup Anda sendiri, yang menghasilkan dua keputusan di tempat Anda mengharapkan satu. Baca berkas yang disertakan, bukan hanya yang Anda sunting. Cara cepat melihat urutan efektif adalah membaca berkas dari atas ke bawah dan mencatat setiap nilai kontrol.
Jaga persyaratan penerimaan lain tetap utuh. Kata sandi yang berhasil tidak menggantikan pemeriksaan sertifikat, faktor kedua, atau otorisasi pasca-koneksi, dan kebijakan ini bukan pengganti salah satunya. Kebijakan ini hanya memutuskan apakah akun layak dipertimbangkan untuk akses VPN.
Menguji anggota, orang luar, dan kata sandi salah
Uji tiga kasus sebelum Anda menganggap kebijakan selesai. Seorang anggota terhubung dengan berhasil. Akun valid di luar grup mengautentikasi kata sandinya tetapi ditolak akses VPN. Kata sandi salah untuk salah satu akun ditolak pada tahap autentikasi, bukan oleh aturan grup.
Lihat kesalahan yang terlihat klien dan log server bersama-sama, karena kedua kegagalan bisa tampak serupa bagi orang yang menghubungkan. Perbedaannya penting bagi dukungan: orang luar dengan kata sandi benar memerlukan perubahan grup, sedangkan kata sandi salah memerlukan penyetelan ulang kredensial.
Biarkan sesi kedua terbuka saat Anda menyunting PAM, dan verifikasi juga login SSH biasa setelah perubahan. Inti layanan khusus adalah login sistem seharusnya tidak terpengaruh, dan satu-satunya cara mengetahuinya adalah mengujinya.
Jika ada yang rusak, pulihkan berkas layanan sebelumnya dari salinan. Aturan yang Anda inginkan mudah dinyatakan: keanggotaan membuat akun layak untuk akses VPN, dan setiap pemeriksaan wajib lainnya tetap berlaku.