OpenVPN oturum açmalarını PAM ilkesiyle tek grupla sınırlayın
Ayrı bir PAM hizmeti, sistem genelindeki oturum açma kurallarına dokunmadan yalnızca bir VPN grubunun üyelerini kabul edebilir. auth-pam eklentisini ona yönlendirin ve sonuçları test edin.
Her hesabın normal şekilde oturum açmasına izin verin, ancak VPN'i yalnızca bir grup kullanabilsin. PAM bu farkı ikinci bir parola deposu olmadan ifade edebilir ve OpenVPN eklentisi yalnızca amaçladığınız denetimleri içeren bir hizmete yönlendirilebilir. İşin püf noktası, o hizmeti yanlışlıkla sistem genelinde bir yığını devralmadan kurmaktır.
Buradaki anlatım eklentinin hizmet adından başlar, bir ilke oluşturur ve ardından önemli olan üç sonucu test eder: bir üye, geçerli parolası olan bir yabancı ve hatalı bir kimlik bilgisi.
Neden ayrı bir PAM hizmeti
auth-pam eklentisi argüman olarak bir hizmet adı alır. Bu ad /etc/pam.d altındaki bir dosyayı seçer ve o dosyadaki yığın VPN oturum açma sırasında çalışan şeydir. Sistem geneli bir oturum açmanın kullandığı adı verirseniz, o yığındaki her kararı, sonradan ilgisiz nedenlerle eklenenler dahil, devralırsınız.
Bunun yerine ayrı bir hizmet oluşturun. Zaten amaçlanan backend'e karşı kimlik doğrulayan çalışan bir yığından başlayın, örneğin yerel bir parola dosyası, SSSD veya bir dizin hizmeti, sonra uygunluk kuralını ekleyin. Boş bir dosyaya iki satır kopyalamak yaygın hatadır: parola süresinin dolması, hesap kilitleme ve diğer denetimler kopyalamadığınız yığında olabilir.
Hizmeti ayırmak hasarın kapsamını da sınırlar. Paylaşılan bir yığında yalnızca VPN için olan kural herkes için SSH veya konsol erişimini reddedebilir; bu da bir erişim değişikliğini kesintiye dönüştürür.
Grup kuralını yazmak
Uygunluk denetimi, kimlik bilgisi doğrulandıktan sonra hesap aşamasına aittir. account required pam_succeed_if.so user ingroup vpnusers gibi bir kural, işlemenin yalnızca kimliği doğrulanmış kullanıcı o grubun üyesiyse devam etmesine izin verir.
Bu satır bir parçadır, tam bir hizmet değildir. Onu her kabul edilen yolun ulaştığı yere entegre edin ve çevresindeki denetim bayraklarını kontrol edin. Yığında daha önceki bir sufficient veya atlama denetimi, kuralınız çalışmadan işlemeyi sonlandırabilir; bu da kısıtlamayı bir öneriye dönüştürür.
use_uid seçeneğini alışkanlıkla eklemeyin. Onsuz modül kimliği doğrulanan kullanıcıyı değerlendirir; onunla modül OpenVPN sürecinin altında çalıştığı hesabı değerlendirir, ki bu genellikle root veya bir hizmet hesabıdır ve bu nedenle oturum açan kişi değildir.
Grup üyeliği sistemin kimlik çözümlemesinden gelir, tanıdığınız bir addan değil. Dizin kullanıcıları için aynı backend'in o kullanıcı için grup sorgularına yanıt verdiğini doğrulayın, çünkü tanıdık adlı yerel bir grup aynı adlı dizin grubundan farklı bir nesnedir.
Sıra ve kimlik tuzakları
Grup kuralını kimlik doğrulama yığınından ve hâlâ geçerli olması gereken her denetimden sonra, ancak tuttuğunuz hesap denetimlerinden önce veya onların yanına yerleştirin. PAM modülleri dosya sırasına göre değerlendirir ve her satırdaki denetim değeri bir hatanın kesin olup olmadığına karar verir.
Yinelenen yığınlara dikkat edin. Yaygın bir kalıp, zaten bir hesap kuralı içeren bir include ve ardından kendi grup kuralınızdır; bu, bir tane beklediğiniz yerde iki karar üretir. Yalnızca düzenlediğiniz dosyayı değil, eklenen dosyayı da okuyun. Etkin sırayı görmenin hızlı bir yolu, dosyayı yukarıdan aşağıya okumak ve her denetim değerini not etmektir.
Diğer kabul gereksinimlerini bozulmadan bırakın. Başarılı bir parola sertifika denetimlerinin, ikinci bir faktörün veya bağlantı sonrası yetkilendirmenin yerini almaz ve bu ilke bunlardan hiçbirinin yerine geçmez. Yalnızca hesabın VPN erişimi için değerlendirilmeye uygun olup olmadığına karar verir.
Üyeleri, yabancıları ve yanlış parolaları test etmek
İlkeyi tamamlanmış saymadan önce üç durumu test edin. Bir üye başarıyla bağlanır. Grup dışındaki geçerli bir hesap parolasını doğrular ancak VPN erişimi reddedilir. Herhangi bir hesap için yanlış parola, grup kuralı tarafından değil, kimlik doğrulama aşamasında reddedilir.
İstemcinin gördüğü hatayı ve sunucu günlüğünü birlikte inceleyin, çünkü iki başarısızlık da bağlanan kişiye benzer görünebilir. Bu ayrım destek için önemlidir: doğru parolası olan bir yabancının grup değişikliğine ihtiyacı vardır, yanlış parola ise kimlik bilgisinin sıfırlanmasını gerektirir.
PAM'ı düzenlerken ikinci bir oturumu açık tutun ve değişiklikten sonra normal SSH oturum açmasını da doğrulayın. Ayrı hizmetin amacı, sistem oturum açmasının etkilenmemesi gerektiğidir ve bunu bilmenin tek yolu test etmektir.
Bir şey bozulursa önceki hizmet dosyasını bir kopyadan geri yükleyin. İstediğiniz kuralı söylemek kolaydır: üyelik bir hesabı VPN erişimi için uygun hale getirir ve diğer tüm zorunlu denetimler hâlâ geçerlidir.