ProtectHome və TOTP toxumu: VPN girişi niyə uğursuz olur
Düzgün kod, toxumu aça bilməyən PAM moduluna kömək edə bilməz. Drop-in faylı ilə yazıla bilən vəziyyət yolu arasında seçim edin, sonra vahidi yoxlayın.
Doğrulayıcı təzə altı rəqəmli kod göstərir, VPN onu rədd edir və eyni kod öz terminalınızdan sınadığınızda qüsursuz təsdiqlənir. Bu fərq bütün hekayədir. Qeydiyyat sirrini aça bilməyən PAM modulu səhv koddan fərqlənməyən bir uğursuzluq qaytarır və ev qovluqlarını gizlədən xidmət mühiti bunun tez-tez səbəbidir. Hər hansı icazəni yumşaltmazdan əvvəl üç vəziyyətdən hansında olduğunuzu müəyyənləşdirin.
Bu üç uğursuzluqdan hansıdır?
Birincisi modulun ümumiyyətlə oxuya bilmədiyi sirdir. İkincisi oxuya bildiyi, lakin yeniləyə bilmədiyi sirdir. Üçüncüsü həqiqətən səhv olan koddur, adətən saat sürüşməsi və ya təkrar istifadə olunmuş dəyər üzündən.
Bir uğursuz cəhd üçün xidmət jurnalını və sistem autentifikasiya jurnalını oxuyaraq onları ayırın, sonra plaqinin hansı PAM xidmətini yüklədiyini və həmin xidmətin hansı modul sətrini işlətdiyini təsdiqləyin. Ümumi autentifikasiya uğursuzluğu mesajı onları ayırd etmir, uğurlu əl sınağı da etmir, çünki sizin terminalınız xidmətin mühiti deyil.
Yalnız xidmət uğursuz olduqda vahidin fayl sistemi görünüşü adi günahkardır.
systemctl show -p ProtectHome -p ProtectSystem -p ReadWritePaths [email protected]
ls -l /var/lib/vpn-otp/*/.google_authenticator 2>/dev/null | head -n 20Seçim A: sirri ev qovluğundan çıxarın
Xidmət /home qovluğunu gizlədəndə və siz bu qorumanı saxlamağı üstün tutduqda, sirri onun görə biləcəyi bir yerdə saxlayın. Modul secret= yolu və fayl əməliyyatlarını yerinə yetirən user= hesabı qəbul edir; bu, mərkəzi anbarın çoxlu kimliyə xidmət etməsinə imkan verir.
Bu səliqəli seçimdir və ən çox diqqət tələb edən də elə budur, çünki paylaşılan anbar tək bir qovluğu hər hesab üçün təhlükəsizlik sərhədi edir.
auth required pam_google_authenticator.so secret=/var/lib/vpn-otp/${USER}/.google_authenticator user=vpn-otpOna güvənməzdən əvvəl üç şeyi yoxlayın: hesab mövcuddur, vahidin işçisi ona keçə bilir və fayllar məhdudlaşdırıcı rejimlərlə ona məxsusdur. ~ və ya ev dəyişəni ilə yolun user= ilə birlikdə istifadəsindən çəkinin və yolu işlək etmək üçün vahidin mülkiyyət yoxlamalarını söndürməyin. Parol mərhələsini və yığının qalanını toxunulmaz saxlayın.
Seçim B: faylı saxlayın və yol açın
Sirr istifadəçinin ev qovluğunda qalmalıdırsa, vahidə hostdakı hər ev qovluğunu açmadan yalnız həmin qovluğu əhatə edən görünüş lazımdır. Bir drop-in sandbox edilmiş ev qovluğunun altına dar əhatəli bağlama əlavə edə bilər.
Bu, hər istifadəçi üzrə mülkiyyəti model olaraq saxlayır, lakin sandbox dəyişdikcə nəzərdən keçirilməli vahid dəyişikliyi bahasına.
İki həddi asanlıqla qaçırmaq olar. Sandboxın gizlətdiyi qovluğun altına əlavə edilən yalnız-oxuma yolu onu açmır, çünki valideyn sadəcə orada deyil. Modul vəziyyəti yeniləməlidirsə, bağlama yazıla bilən olmalıdır və bu, növbəti seçimi işə salır. Drop-in-i /usr/lib altındakı paketlənmiş vahidi redaktə etmək əvəzinə ayrı fayl kimi yazın ki, paket yeniləməsi onu səssizcə ləğv etməsin.
Seçim C: sandboxı saxlayın və vəziyyət yazılarını düzəldin
Sirri oxumaq autentifikasiyanın yalnız yarısıdır. Modul vaxt sürüşməsi məlumatını, təkrar qorunmasını və ya sayğacı yenidən yaza bilər və oxuma yoxlamasını keçən fayl yenə də yazma yoxlamasında uğursuz ola bilər.
Bu uğursuzluq növbəti cəhddə səhv kod kimi görünür, bu cəhddə deyil; buna görə də saat sürüşməsi ilə səhv salınır.
Ona öz yazıla bilən qovluğunu verin və sirr yolunu ora yönəldin, bütün ev qovluğunu yazıla bilən etmək əvəzinə. Qovluğun sahibini, fayl sisteminin boş yerini və vahidin başqa yerdə yazmaları məhdudlaşdırıb-məhdudlaşdırmadığını təsdiqləyin. Sonra iki ardıcıl girişi sınayın, çünki ikincisi yazma yolunu sübut edir, birincisi yalnız oxumanı.
Özünüz kimi deyil, xidmət kimi yoxlayın
Vacib olan hər yoxlama vahidin sandboxı içində vahidin kimliyi ilə işləməlidir.
Root kimi uğurlu olan əmr faylın mövcud olduğunu deyir, başqa heç nə. Həqiqi xidmətdən keçən giriş isə modulun sirri oxuya, istifadə edə və lazım olanı geri yaza bildiyini göstərir.
Nəhayət, tələbi toxunulmaz saxlayın. Boş parol seçimi əlavə etmək, yalnız-oxuma uğursuzluqlarını qəbul etmək və ya sandboxı çıxarmaq simptomu siyasəti dəyişməklə yox edərdi. Kod təqdim etməli olan istifadəçi sirr əlçatmaz olduqda yenə də rədd edilməlidir.