Bir profili masaüstü istemcisine aktarın ve ilk hata çoğu zaman istemcinin uymayı reddettiği bir satırdır: çalıştırmayacağı bir betik kancası ya da fazla izin verici bulduğu bir script-security değeri. Sayıyı yükseltmek iletişim kutusunu ortadan kaldırır. Ama aynı zamanda o profilin makinenizde neleri yürütebileceğini de genişletir; bunu yalnızca bir uyarıyı kapatmak için vermek tuhaf. Aktarımı yönergeye kadar izleyin ve karar somutlaşır.

Aktarım iletişim kutusundan yönergeye

Profil, yönergeler içeren bir metin dosyasıdır ve istemci bunları herhangi bir tünel oluşmadan önce okur. up, down veya tls-verify gibi bir yönerge, OpenVPN tarafından belirli bir anda çalıştırılması gereken harici bir programı adlandırır. OpenVPN'in bunu çalıştırmaya istekli olup olmadığı script-security adlı ayrı bir ayardır ve profil genellikle onu da belirler.

Yani uyarı kriptografi veya sertifikalarla ilgili değil. Bir yapılandırma dosyasının istemciden ana makinede bir şey yürütmesini istemesi ve istemcinin mevcut izin düzeyinin bu isteğe izin verip vermediğini denetlemesiyle ilgili.

Bu aşamada iki farklı başarısızlık benzer görünür. İstemcinin vermeyeceği bir düzey isteyen profil bir ret üretir. İstemcinin verdiği ancak betiğin eksik olduğu düzeyi isteyen profil ise bunun yerine çalışma zamanı hatası üretir ve ikisi destek tartışmalarında karıştırılır. Biri izin sorusudur, diğeri paketleme sorusu.

Her düzey gerçekte neyi açar

Düzey 0 harici program çağrılarını tamamen yasaklar; bu, arayüzünü yardımsız kendi yapılandıran bir istemci için tutarlı, işletim sistemine başvuran için tutarsızdır. Düzey 1, varsayılan, arayüz ve yol yapılandırmasının ihtiyaç duyduğu yerleşik çalıştırılabilir dosyalara izin verir. İki düzey de kullanıcının sağladığı hiçbir şeyi çalıştırmaz.

LevelWhat OpenVPN may executeWhat it exposes
0No external programs at allInterface and route setup must not depend on helpers
1 (default)Built-in helpers such as ip, ifconfig, route or netshPrivileged commands the platform already ships
2Built-in helpers plus user-defined scriptsWhatever the named script does with the client's privileges
3Everything above, plus passwords in environment variablesCredentials visible to child processes and their logs

Düzey 2 ilginç sınırdır, çünkü kullanıcı tanımlı betiklere izin verir. O noktadan itibaren istemcinin ayrıcalıkları, hiç okumadığınız bir koda uygulanır; seçmediğiniz anlarda çağrılır, bağlantı ayrıntılarını içeren bir ortamda çalışır. Düzey 3 daha ileri gider ve parolaların ortam değişkenleriyle geçirilmesine izin verir; bu yüzden kılavuz onu potansiyel olarak güvensiz diye tanımlar.

Bu sayıların hiçbiri güç ayarı değildir. Düzey 3'teki bir profilin şifrelemesi düzey 1'dekinden iyi değildir; yalnızca daha büyük bir yürütme yüzeyi vardır ve tünel aynıdır.

Profilin neyi hak ettiğine karar verin

Betiğin hangi düzeyi gerektirdiğini sormadan önce ne için olduğunu sorun. DNS ayarlarını iten ya da bağlantıdan sonra bir yolu onaran kanca bir şey çalıştırmak için meşru bir nedendir. Geçici bir dizinde tanınmayan bir ikili dosyayı çağıran kanca durmak için bir nedendir.

Betiğin yolu betik kadar önemlidir. Göreli bir yol istemcinin kullandığı dizine göre çözülür ve yazılabilir bir dizin tek seferlik aktarımı kalıcı bir yürütme yuvasına dönüştürür. Kullanıcının değiştiremeyeceği bir dizindeki mutlak yollar tercih edilmesi gereken biçimdir.

Betikler istemcinin ortamını da devralır; kimlik bilgileri ve bağlantı üst verileri orada yaşar. Tam da bu devralma, düzey 3'ü kendi ortamını günlüğe yazan bir betikle birleştiğinde tehlikeli kılar ve bu yüzden betikleri etkin bir istemciden alınan tanılama dökümü bir bilete yapıştırılmadan önce ikinci bir bakışı hak eder. Paylaşmadan önce ortamı temizleyin.

grep -nE 'script-security|^up |^down |tls-verify' client.ovpn

Tek bir şeyi değiştirin, sonra sökülmeyi de izleyin

Profil gerçekten bir betiğe ihtiyaç duyuyorsa yalnızca düzeyi ve yalnızca o profil için değiştirin. İstemciyi ön planda ayrıntılı çıktıyla çalıştırın ki betiğin kendi hataları görünsün, hizmet yöneticisi tarafından yutulmasın.

openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default

Yalnızca bağlantıyı değil tüm yaşam döngüsünü sınayın. Başarısız bir kapanış kancası yolları ölü bir tünele yöneltilmiş bırakır; bu da bağlı görünen ama hiçbir yere ulaşamayan bir makine üretir. Değişikliği bitmiş ilan etmeden önce bir kez yeniden bağlanın ve bir kez bağlantıyı kesin, her birinden sonra yönlendirme tablosunu denetleyin.

Özgün profilin bir kopyasını saklayın. Bir platform istemcisi aynı betik modelini uygulamıyorsa, aktarım başarılı olana kadar yönergeleri silmek tünelin ihtiyaç duyduğu DNS veya yol entegrasyonunu kaldırabilir ve ortaya çıkan bağlantı kusursuz kimlik doğrular ama hiçbir şeyi çözmez.

Kaydedilmesi gereken karar dardır: hangi betik, hangi yolda, hangi düzeyde verildi, hangi profil için. Profildeki her şey değişmeden kalır ve bu, bir gözden geçirenin denetleyebileceği bir cümledir.

İlgili makaleler