Hesap kilidi ile adres yasağı: OpenVPN gerçekte nerede sayar
Kaynak yasağı ile hesap kilidi farklı şeyleri sayar. PAM tabanlı bir VPN için eşik seçmeden önce başarısızlık sayacını elinde tutan depoyu bulun.
Bir adresi engellemek ile bir hesabı kilitlemek iki farklı mekanizmadır ve zıt yönlerde başarısız olurlar. Adres yasağı tek bir kaynağı durdurur ve hedef hesap başka bir yerden erişilebilir kalır; hesap kilidi bu kimliği her yerde durdurur, kullanıcının kendi dizüstü bilgisayarında bile.
Kimlik doğrulamayı PAM a veren bir VPN için sayaç, PAM yığınının ulaştığı yerdir, dinleyicinin günlüğe yazdığı değil.
İki sayaç, iki farklı kurban
Hız sınırlayıcı bir kaynağa bakar ve son zamanlarda oradan kaç deneme geldiğini sorar. Kilit bir kimliğe bakar ve o hesabın kaç başarısızlık biriktirdiğini sorar. Birincisi kullanılabilirliği, ikincisi kimlik bilgilerini korur; hiçbiri diğerinin yerini almaz.
Bu yüzden beş başarısızlıktan sonra IP yi engelliyoruz cümlesi kimlik bilgisi doldurma raporuna verilmiş bir yanıt değildir. Saldırgan kaynakları değiştirir, her biri az deneme alır ve hesap hiç sayılmaz. Tersine, kaynak denetimi olmayan bir kilit saldırganın bilerek başarısız olup hesabı süresiz kilitli tutmasına izin verir.
İki denetimin kurtarma öyküleri de farklıdır. Adres yasağı kimsenin düşünmesi gerekmeyen bir zamanlayıcıyla biter; hesap kilidi bir yönetici, belgelenmiş bir bekleme süresi veya kendi kendine sıfırlama gerektirebilir.
Sayımı zaten elinde tutan depoyu bulun
Herhangi bir şey eklemeden önce bir başarısızlık deposunun var olup olmadığını belirleyin. Yerel Linux hesabı, dizin hizmeti ve dış kimlik sağlayıcısı kendi sayımlarını tutar ve önlerine konan PAM modülü birincisini genişletmek yerine ikincisini oluşturur.
grep -rnE 'faillock|pam_tally|pam_unix' /etc/pam.d/
ls -l /etc/pam.d/ | head -20
VPN in gerçekte adlandırdığı hizmet dosyasını okuyun ve ekleme satırlarını izleyin. Birçok dağıtımda VPN hizmeti ortak bir dosya ekler; bu, ayarladığınız sayımın SSH ve yerel oturum açmalar için de geçerli olduğu anlamına gelir.
Dizin zaten bir kilit uyguluyorsa yararlı soru, PAM konuşmasının bu karara nasıl ulaştığı ve VPN in bunu nasıl bildirdiğidir. Üstüne eklenen yerel sayım dizinin sayacı olmaz ve iki politika hesabın ne zaman açılacağı konusunda anlaşamayabilir.
pam_faillock üç çağrı konumuna sahiptir, bir değil
Modül, kopyalanmış tek bir satırın genellikle bulanıklaştırdığı üç işlemi ayırır: hesabın zaten kilitli olup olmadığını denetlemek, başarısızlığı kaydetmek ve başarıdan sonra geçmişi silmek.
Eski bir sayım modülünden geçiş genellikle burada yanlış yapılır. Çalışan bir pam_tally2 örneğinden satırı pam_faillock yığınına kopyalamak yeniden adlandırma değildir; belgelenmiş kurulum farklıdır ve yanlış yere konan çağrı başarısızlıkları hiç denetlemeden kaydedebilir.
faillock --user alice
faillock --user alice --reset
İnceleme aracı sayacın gerçek olup olmadığını görmenin en hızlı yoludur: bir hesabın kaydedilmiş başarısızlıklarını gösterir ve bunları silebilir. Denetlenen bir başarısızlık bu çıktıyı değiştirmiyorsa çağrının konumu yanlıştır.
Ayrı hizmet adı yalıtım değildir
VPN e kendi PAM hizmet dosyasını vermek amaçlanan politikayı görünür kılar ama etkiyi sınırlamaz. Ortak bir dosyanın her eklenmesi o dosyanın yaptıklarını getirir, tüm sistem için sayımlar dahil.
Kilidin yalnızca VPN erişimini mi yoksa aynı hesabı doğrulayan her hizmeti mi kapsayacağına açıkça karar verin. İki yanıt da savunulabilir; hata, yığın diğerini uygularken sizinkini seçtiğinize inanmaktır.
Sonra maliyeti hesaba katın. Kilidi bir saldırgan tetikleyebilir ve acı çeken kullanıcı hesabın sahibidir. Eşik, bekleme süresi ve yönetici kurtarma yolu politikanın parçasıdır ve kurtarma olay sırasında VPN in yeniden yapılandırılmasına bağlı olmamalıdır.
Tek bir reddi değil, sırayı kabul edin
Onaylanmış bir plan kapsamında atanmış kimliklerle test edin ve tek bir olay yerine bir zincir test edin: geçerli hesap doğrulanır, kasıtlı yanlış parola sayacı hareket ettirir, yapılandırılmış kilit yürürlüğe girer ve belgelenmiş kurtarma erişimi geri verir.
faillock --user test-vpn-01
journalctl -u openvpn-server@lab -n 30 --no-pager | grep -i 'auth\|pam'
Başarı davranışını başarısızlık davranışı kadar dikkatle izleyin. Başarılı oturum açma geçmişi silmiyorsa hesap sıradan hataların yavaş birikmesinden sonra kilitlenir. Her hizmetten her şeyi siliyorsa sayaç politikanın iddia ettiğinden zayıftır.
Son olarak, zafer ilan etmeden önce denetlenmeyen istemcileri durdurun. Arka planda yeniden deneyen kayıtlı kimlik bilgileri kurtarmadan birkaç dakika sonra başarısızlıkları yeniden yaratır ve hesabı yine kilitler. Kaynağa dayalı hız sınırlaması ek bir denetim olarak kalabilir ama hesap politikası değildir.