OpenVPN script-security səviyyələri 0-dan 3-ə qədər və hər birinin açdıqları
Hər script-security səviyyəsi profilin nəyi icra edə biləcəyini genişləndirir: əvvəlcə inzibatçı köməkçiləri, sonra istifadəçi skriptləri, sonra mühitdəki parollar. Direktivləri oxuyun.
Masaüstü müştəriyə profil idxal edin və ilk uğursuzluq çox vaxt müştərinin yerinə yetirməkdən imtina etdiyi sətir olur: işə salmayacağı skript qarmağı və ya çox icazəli hesab etdiyi script-security dəyəri. Rəqəmi qaldırmaq dialoqu yox edir. Bu həm də həmin profilin maşınınızda nəyi icra etməsinə icazə verilən dairəni genişləndirir ki, bunu sadəcə xəbərdarlığı bağlamaq üçün vermək qəribədir. İdxalı direktivə qədər izləyin və qərar konkretləşir.
İdxal dialoqundan direktivə
Profil direktivləri olan mətn faylıdır və müştəri onları hər hansı tunel yaranmazdan əvvəl oxuyur. up, down və ya tls-verify kimi direktiv OpenVPN tərəfindən müəyyən anda işə salınmalı olan xarici proqramı adlandırır. OpenVPN-in onu işə salmağa hazır olub-olmaması script-security adlanan ayrı bir parametrdir və profil adətən onu da təyin edir.
Beləliklə, xəbərdarlıq kriptoqrafiya və ya sertifikatlarla bağlı deyil. O, konfiqurasiya faylının müştəridən hostda nəyisə icra etməsini xahiş etməsi və müştərinin cari icazə səviyyəsinin bu sorğuya imkan verib-vermədiyini yoxlaması ilə bağlıdır.
Bu mərhələdə iki fərqli nasazlıq oxşar görünür. Müştərinin verməyəcəyi səviyyəni istəyən profil imtina ilə nəticələnir. Müştərinin verdiyi səviyyəni istəyən, lakin skript olmayan profil isə əvəzində icra zamanı nasazlıq yaradır və ikisi dəstək müzakirələrində qarışdırılır. Biri icazə məsələsidir, digəri isə paketləmə məsələsi.
Hər səviyyə əslində nəyi açır
Səviyyə 0 xarici proqram çağırışlarını tamamilə qadağan edir; bu, öz interfeysini köməksiz konfiqurasiya edən müştəri üçün tutarlı, əməliyyat sisteminə müraciət edən müştəri üçün isə tutarsızdır. Səviyyə 1, standart olan, interfeys və marşrut konfiqurasiyasının ehtiyac duyduğu daxili icra olunan fayllara icazə verir. Heç bir səviyyə istifadəçinin təqdim etdiyi heç nəyi işə salmır.
| Level | What OpenVPN may execute | What it exposes |
|---|---|---|
| 0 | No external programs at all | Interface and route setup must not depend on helpers |
| 1 (default) | Built-in helpers such as ip, ifconfig, route or netsh | Privileged commands the platform already ships |
| 2 | Built-in helpers plus user-defined scripts | Whatever the named script does with the client's privileges |
| 3 | Everything above, plus passwords in environment variables | Credentials visible to child processes and their logs |
Səviyyə 2 maraqlı həddir, çünki istifadəçi tərəfindən müəyyən edilən skriptlərə yol verir. O andan etibarən müştərinin imtiyazları heç vaxt oxumadığınız koda şamil olunur; həmin kod sizin seçmədiyiniz anlarda, əlaqə detallarını ehtiva edən mühitlə çağırılır. Səviyyə 3 daha irəli gedir və parolların mühit dəyişənləri vasitəsilə ötürülməsinə imkan verir; buna görə təlimat onu potensial təhlükəli adlandırır.
Bu rəqəmlərin heç biri güc parametri deyil. Səviyyə 3-də olan profilin şifrələməsi səviyyə 1-də olandan yaxşı deyil; sadəcə daha böyük icra sahəsi var və tunel eynidir.
Profilin nəyə layiq olduğunu qərarlaşdırın
Skriptin hansı səviyyəyə ehtiyacı olduğunu soruşmazdan əvvəl onun nə üçün olduğunu soruşun. DNS parametrlərini ötürən və ya qoşulmadan sonra marşrutu bərpa edən qarmaq nəyisə işə salmaq üçün qanuni səbəbdir. Müvəqqəti qovluqda tanımadığı ikili faylı çağıran qarmaq isə dayanmaq üçün səbəbdir.
Skriptin yolu skriptin özü qədər vacibdir. Nisbi yol müştərinin istifadə etdiyi qovluğa görə həll olunur və yazıla bilən qovluq birdəfəlik idxalı daimi icra yuvasına çevirir. İstifadəçinin dəyişə bilmədiyi qovluqdakı mütləq yollar üstün tutulmalı formadır.
Skriptlər həm də müştərinin mühitini miras alır; etimad məlumatları və əlaqə metadatası orada yaşayır. Məhz bu miras səviyyə 3-ü öz mühitini jurnala yazan skriptlə birlikdə təhlükəli edir və skript aktivləşdirilmiş müştəridən götürülmüş diaqnostik çıxarışın bilete yapışdırılmazdan əvvəl ikinci baxışa layiq olmasının səbəbi budur. Paylaşmazdan əvvəl mühiti təmizləyin.
grep -nE 'script-security|^up |^down |tls-verify' client.ovpnBir şeyi dəyişin, sonra sökmə mərhələsinə də baxın
Əgər profil həqiqətən skriptə ehtiyac duyursa, yalnız səviyyəni və yalnız həmin profil üçün dəyişin. Müştərini ön planda ətraflı çıxışla işə salın ki, skriptin öz xətaları görünsün və xidmət meneceri tərəfindən udulmasın.
openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default
Bütün həyat dövrünü sınayın, təkcə qoşulmanı yox. Uğursuz olan bağlanma qarmağı marşrutları ölü tunelə yönəldir və nəticədə maşın qoşulmuş görünür, amma heç yerə çatmır. Dəyişikliyi bitmiş adlandırmazdan əvvəl bir dəfə yenidən qoşulun və bir dəfə ayrılın, hər ikisindən sonra marşrut cədvəlini yoxlayın.
Orijinal profilin surətini saxlayın. Əgər platforma müştərisi eyni skript modelini tətbiq etmirsə, idxal uğur qazanana qədər direktivləri silmək tunelin ehtiyac duyduğu DNS və ya marşrut inteqrasiyasını aradan qaldıra bilər və nəticədə yaranan əlaqə mükəmməl autentifikasiya edər, amma heç nəyi həll etməz.
Qeydə alınmalı qərar dardır: hansı skript, hansı yolda, hansı səviyyədə verilib, hansı profil üçün. Profildə qalan hər şey dəyişməzdir və bu, rəyçinin yoxlaya biləcəyi bir cümlədir.