OpenVPN auth-user-pass-verify skripti: çıxış kodunu düzgün qur
Qarmağın çıxış statusu qərardır, onun log sətri deyil. Yoxlayıcının nəticələrini 0, 1 və ya təxirə salınmış kimi xəritələ, etimad faylını verilən kimi oxu və bağlı şəkildə uğursuz ol.
OpenVPN giriş skriptinin yalnız bir çıxışına əsaslanır: çıxış statusuna. Skriptin etdiyi hər şey bəzəkdir. Qarmaq düzgün yoxlayıcıya çata, cavabı təhlil edə və mehriban bir sətir çap edə bilər, amma müəllifin nəzərdə tutduğunun əksini bildirən status qaytarır. Əvvəlcə müqaviləni oxu və adapteri onun ətrafında yaz, onda bu sinif xətalar bütünlüklə yox olur.
Müqavilə kiçikdir: təqdim edilən hesabı müəyyən et, təsdiqlənmiş yoxlayıcıya nəzərdə tutulan sualı ver və yalnız həmin yoxlayıcının həmin sorğu üçün sənədləşdirilmiş müsbət nəticəsini qəbul et. Qalan hər şey infrastrukturdur.
Qarmağın qaytara biləcəyi üç status
auth-user-pass-verify üçün OpenVPN 2.6 təlimatı çıxış kodu 0-ı qəbul, 1-i rədd və 2-ni təxirə salınmış autentifikasiya kimi müəyyən edir. Bunlar serverin anladığı yeganə üç cavabdır və hər birinin bağlantı üçün fərqli nəticəsi var. Son əmrinin statusu ilə çıxan skript faktiki olaraq log çağırışına və ya təmizləmə addımına səs vermək imkanı verib. Statusu hər budaqda açıq şəkildə yaz, yoxlayıcıya heç vaxt çatmayan budaqlar da daxil olmaqla.
HTTP uğuru və autentifikasiya uğuru ayrı təbəqələrdir və onları qarışdırmaq bu qarmağın səhv getməsinin ən geniş yayılmış yoludur. 202 cavabı sorğunun emal üçün qəbul edildiyini bildirir, parolun yoxlanıldığını deyil. Gözlənilən statusu, cavabın formasını və yekun qərarı sənə verilən API müqaviləsindən təyin et və ağlabatan göründüyü üçün sahə adı uydurma.
Cavab həqiqətən sonra gəlirsə, bu təxirə salınmış yoldur və elə də qurulmalıdır. Heç vaxt tamamlanmayan təxirə salınmış cəhd resursları vaxt aşımı bitənə qədər saxlayır.
Etimad faylını yazıldığı kimi oxu
Sənədləşdirilmiş fayl vasitəsilə üsulda server istifadəçi adını və parolu müvəqqəti faylın ilk iki sətri kimi yazır, həmin yolu skriptə ötürür və skript qayıdanda faylı silir. Bu iki sətri verilən kimi oxu: faylı heç vaxt mənbə kimi qoşma, heç vaxt qiymətləndirmə və məzmununu proses cədvəlinin görə biləcəyi əmr sətrinə yapışdırma. Parolu bayt-bayt saxla, çünki onu istifadəçi adı kimi normallaşdırmaq etimadı səssizcə dəyişir. Həmin müvəqqəti fayl üçün istifadə edilən qovluq yerləşdirmə qərarıdır, ona görə onun mövcud olduğunu və hostdakı hər kəs üçün oxuna bilən olmadığını təsdiqlə.
Yoxlayıcının öz etimadını istifadəçininkindən ayrı saxla: o, şlüz inteqrasiyasına aiddir, platformanın sirr anbarında yaşayır və yalnız yoxlama icazəsinə ehtiyac duyur, ona görə hansısa konkret şəxsin autentifikasiya olduğuna dəlil deyil. Qarmağın ikinci parol yoxlayıcısı olmasına da imkan vermə. Hash müqayisəsini əl ilə yenidən qurmaq dövrü optimallaşdırmaqla təhlükəsiz olmur və saxlanılan yoxlayıcı hesab anbarının duzlu, xərcli sxemini artıq başa düşür.
Təsnif edilə bilməyən cavabın nə demək olduğunu qərarlaşdır
Vaxt aşımları, nəqliyyat xətaları, pozulmuş cavablar və əlçatmaz backend bir xüsusiyyəti bölüşür: heç biri müsbət yoxlama deyil. Qarmaq onların hər biri üçün bağlı şəkildə uğursuz olmalı və operatorun tədbir görə biləcəyi səbəbi qeyd etməlidir. Həmin səbəb qorunan loqa aiddir, qoşulmağa çalışan şəxsə qaytarılan mesaja deyil.
Yoxlayıcıya heç çatmayan yollarda da eyni dərəcədə diqqətli ol. Çatışmayan konfiqurasiya dəyəri, oxunmayan sirr və ya quraşdırılmamış asılılıq təsadüfi qəbul əvəzinə fərqli əməliyyat markeri olan rədd istehsal etməlidir. O budaqları laboratoriyada asılılığı silməklə sına, onlar haqqında düşünməklə deyil. Loglama uğursuzluğu çıxış statusunu dəyişə bildiyi yerdə loglama qərarın bir hissəsinə çevrilir və zərərsiz edilməlidir.
Server konfiqurasiyası burada da vacibdir: istifadəçi tərəfindən müəyyən edilən skriptlər yalnız işləyən konfiqurasiya onlara tələb olunan təhlükəsizlik səviyyəsində icazə verdikdə nəzərə alınır və bu ayar qaldırılmalı standart deyil, qəsdən edilən seçimdir.
Qərarı yoxla, çap edilmiş sətri deyil
Çıxış statusunu birbaşa yoxlayan test qur. Nümunə etimad faylı yaz, qarmağı ona qarşı tanınmış yaxşı və tanınmış pis hesabla işlət və skriptin çap etdiyi mətn əvəzinə qabığın bildirdiyi statusu oxu. Bu tək yoxlama müştəri hələ qoşulmamışdan əvvəl müqavilə xətalarının çoxunu tutur.
Sonra eyni halları real müştəri ilə istehsalatdan kənar dinləyiciyə qarşı işlət və serverin nə qeyd etdiyini təsdiqlə: qəbul, rədd və ya təxirə salınmış. Deaktiv edilmiş hesabı, yanlış parolu, pozulmuş yoxlayıcı cavabını, vaxt aşımını və əlçatmaz yoxlayıcını əhatə et. Hər hansı hal adını qoya bilmədiyin vəziyyətə düşürsə, adapter bitməyib.
yoxlayıcı nəticəsinin çıxış statusuna xəritələnməsini skriptin yanında repoda saxla ki, növbəti mühəndis kodu tərsinə mühəndislik etmədən müqaviləni oxuya bilsin.