OpenVPN parolayı terminalden okur, stdin'den değil
OpenVPN parolayı gerçekte nerede okur, stdin'deki bir dosya neden başarısız olur ve Linux ile macOS'ta betikli oturum açma için desteklenen üç yol.
OpenVPN kullanıcı adını ve parolayı denetim terminalinde sorar ve standart girdiye yönlendirilmiş bir dosya o terminal değildir. O tek ayrıntı, parola tam da kanalın içinde dururken asılı kalan betiği açıklar. İstemci istemi çizer ve okuma terminal aygıtından yapılır, dolayısıyla stdin'i yönlendirmek hiçbir şeyi değiştirmez. İstemciyi belgelenmiş girdi yollarından biriyle besleyin, aynı betik ilk denemede bağlanır.
Üç yol neredeyse her durumu kapsar ve her biri kendi biçiminde başarısız olur. İstemcinin gerçekte gösterdiği isteme göre seçin, betiklemesi en kolay seçeneğe göre değil.
İstem stdin'den gelmiyor
OpenVPN kimlik bilgilerine ihtiyaç duyduğunda denetim terminalini açar ve oradan okur. Bu yüzden etkileşimli bir test iyi görünürken aynı komut cron ya da bir unit dosyası altında kimsenin bakmadığı bir günlüğe istem yazılmış hâlde hareketsiz durur. Bazı derlemeler terminal yokken standart girdiye geri düşer ve bu tutarsızlık sert bir hatadan daha kötüdür, çünkü sorunu dağıtıma kadar gizler.
Herhangi bir kod yazmadan önce ortamı denetleyin: istemciyi zamanlayıcının ya da servis yöneticisinin kullanacağı aynı kullanıcı ve aynı stdin ile çalıştırın. İstem günlükte hiç görünmüyorsa ve süreç ilerlemiyorsa, bir şey var olmayan bir terminali bekliyordur.
Birinci yol: iki satırlık kimlik bilgisi dosyası
Kimlik doğrulama seçeneği bir yol alır ve dosya tam olarak iki satır içerir, önce kullanıcı adı sonra parola, başka hiçbir şey yok. Varsayılan bir dosya adına güvenmek yerine yolu açıkça verin, çünkü çalışma dizininde başıboş kalan bir kimlik bilgisi dosyası yanlış hesabın kullanıma girmesinin yoludur. Kipi 0600 yapın ve sahipliği istemciyi çalıştıran hesaba verin.
İstemci bu dosyayı başlangıçta bir kez okur, yani parolayı döndürmek süreci yeniden başlatmak demektir. Genellikle istediğiniz davranış budur ve döndürme yordamının yanındaki runbook'a aittir.
İkinci yol: anahtar parolası için askpass
Parola ifadesiyle korunan bir özel anahtar ikinci ve farklı bir istem çıkarır ve bunun kendi dosya tabanlı yanıtı vardır: askpass seçeneği ifadeyi bir dosyanın ilk satırından okur. SSH tabanlı tünellerde eşdeğeri, istemcinin çalıştırdığı bir askpass programıdır ve standart çıktısı sır hâline gelir.
İki biçim de sırrı bağımsız değişken listesine koymaz ve ikisi de onu bir dosya ya da onu yazdıran çalıştırılabilir bir program olarak bırakır. Koruma dosya izinleri ve süreç sahipliğidir, belirsizlik değil. Koda gömülü bir dizeyi yankılayan yardımcı, fazladan adımları olan bir sırdır.
Üçüncü yol: portal istemcisinin kendi CLI'si
Kurumsal istemciler genellikle hiçbir pencere olmadan adlandırılmış bir portala bağlanan bir komut satırı giriş noktası sunar ve desteklenen yol budur. Linux'ta GlobalProtect istemcisi bağlanma ve sertifika içe aktarma işlemlerini kendi CLI'si üzerinden sunar ve sertifika kimlik doğrulaması kullanan portallar, otomatik bir bağlantı çalışmadan önce içe aktarma adımına ihtiyaç duyar. Sentetik tuş vuruşları yerine bunu yeğleyin: gerçek bir çıkış durumu alırsınız, pencere odağına bağımlılık olmaz ve kilitli bir ekranda da dayanır.
İlk bağlantı hâlâ bir sertifikayı kabul etmek için insan gerektiriyorsa otomasyon bitmemiştir. İçe aktarmayı kurulum sırasında yapın ve ön koşul olarak kaydedin.
Akış bir sözde terminal gerektirdiğinde
Önce parola sonra tek kullanımlık kod isteyen bir dizi, okunacak tek bir dosyaya sahip değildir. Expect gibi bir terminal sürücüsü doğru araçtır, çünkü her deseni sırayla bekler ve herhangi bir şeyi eşleştirebilmesi için sürecin başlatılmış olması gerekir.
İki başarısızlık baskındır. İstemciyi başlatmadan istem bekleyen bir betik sonsuza kadar bekler ve Tcl bir kabuk değildir, bu yüzden bir expect bloğunun içine yazılmış kabuk aritmetiği okunduğu gibi değerlendirilmez. Desenleri kurarken hata ayıklama bayrağını açık tutun, sonra kapatın.
Sızan sırlar ve saklandıkları yerler
Bağımsız değişken olarak verilen her şey süreç listesinde görünür, bu yüzden kimlik bilgileri bir dosyada ya da bir yardımcının arkasında olmalıdır, asla komut satırında değil. Tek kullanımlık kodlar tasarım gereği tükenir ve her deneme için üretilmelidir. Hata günlükleri çoğu zaman kullanıcı adını, bazen daha fazlasını taşır; bu yüzden bir yere göndermeden önce onları gizleyin ve sırrı profilin kendisinin dışında tutun, çünkü içine parola gömülmüş bir yapılandırma dosyası biletlere ve depolara yapıştırılır. Hesabı döndürmek o zaman her kopyayı avlamak demektir ve bu düzenin kaçındığı maliyet tam olarak budur.
Seçtiğiniz yolları denetleyin, sonra bunları istemciyi gerçekten çalıştıracak unit dosyasına ya da zamanlayıcıya bağlayın. Tünel tam olarak o süreç yaşadığı sürece yaşar.