Uzun çalışma süresi yalnızca başlangıcın, sunucunun o anda sahip olduğu ayrıcalıklarla başarılı olduğunu kanıtlar. Burada önemli olan arızalar sonradan gelir: yeni bir istemci bağlanır, bir iptal listesi değiştirilir, bir yardımcı betiğin dosya yazması gerekir. Bunların her biri ayrıcalıksız hesabın yaptığı yeni bir açma işlemidir; kendi izin sorusu ve kendi hata iletisi vardır. Üç karar, çalışmaya devam eden bir yapılandırmayı bir sonraki olayda başarısız olacak olandan ayırır.

Erken yükleneni sonradan açılandan ayırın

Tanıtıcı, açık bir dosya tanımı üzerindeki tutamaçtır ve erişim kipi o tanım oluşturulurken sabitlenmiştir. Süreç kullanıcısını sonradan değiştirmek tutamacı kapatmaz; bu yüzden root olarak okunan anahtar dosyası düşüşten sonra da çalışır. Kip de değişmez: okuma için açılan tutamaç yazılabilir hâle gelmez ve yazılabilir tutamaç yalnızca hesap yoldaki haklarını kaybettiği için geri alınmaz. Bu iki olgu, bu raporlardaki şaşırtıcı davranışın büyük bölümünü açıklar.

Diğer yarı bellektir. Sunucu bir sertifikayı ayrıştırabilir, ayrıştırılmış malzemeyi tutabilir ve dosyayı kapatabilir; kullanımda kalan şey veridir, açık bir dosya değildir. Bu nedenle süren trafik ne bir tanıtıcının açık olduğunu ne de yol adının erişilebilir olduğunu kanıtlar. Yalnızca geçerli oturum için gereken malzemenin daha önce elde edildiğini kanıtlar.

Sonraki açma başka bir işlemdir. Geçerli kimlik bilgileri, geçerli güvenlik bağlamı ve geçerli bağlama görünümü altında çalışır; bu yüzden başlangıçta okunabilen bir yol sonraki bağlantıda reddedilebilir. Döndürme bir tuzak ekler: aynı yol adının üzerine yeni bir dosya yazmak var olan tanıtıcıyı eski nesneye bağlı bırakır, bu yüzden yeniden yükleme başarılı görünebilir ama sunucu hâlâ önceki içeriği kullanıyordur. Döndürmenin yürürlüğe girdiğine inanmadan önce sürecin tuttuğu inode ile diskteki inode değerini karşılaştırın.

Üç çalışma zamanı okumasını ve her birinin ne zaman olduğunu adlandırın

Üç kaynak genellikle ilk kurulumdan çok sonra açılır ve farklı anlarda başarısız olur. Belirli bir istemcinin yapılandırma dosyası o istemci bağlandığında okunur, bu yüzden diğerleri sürerken bir kullanıcı için bozulabilir. İptal verisi eş kimlik doğrulaması sırasında ve dosya değiştirildiğinde yeniden bakılır. Geçici dizine yalnızca bir betik veya eklenti bir şey yazdığında dokunulur.

Üçünün hiçbiri başlangıç yoluna ait değildir; bu yüzden haftalarca sağlıklı olan bir sunucu sonraki bağlantıda başarısız olabilir. Kategori düzeltmenin sahibini de adlandırır: ilk ikisi sunucu hesabı altındaki yapılandırma üzerinde okuma izinleridir, üçüncüsü ise dar amaçlı yazılabilir bir konumdur.

Path reopened laterWhat triggers the openFirst sign when it fails
Client configuration fileA connection for that client identityOne client rejected while others connect
Revocation dataPeer authentication, including after replacementRevoked and valid peers both refused
Script or plugin temporary directoryA helper needs to create a fileThe helper exits with a path error

persist-key çoğu kişinin sandığından daha dar bir soruya yanıt verir. Anahtar dosyasını belgelenmiş SIGUSR1 ve ping-restart sıfırlamaları boyunca açık tutar, ve CCD dosyaları, iptal verisi, yardımcı çalıştırılabilirler veya sürecin tamamen yeniden başlatılması için hiçbir şey yapmaz. Bunlar hâlâ kendi açma yollarını izler, o anda hangi hesap çalışıyorsa onun altında.

Hesabı ve gerçekte sahip olduğu görünümü doğrulayın

unit dosyasına güvenmek yerine çalışan sunucuya hangi hesabı kullandığını sorun, sonra yanıtı unitin belirlediğiyle karşılaştırın. Uyuşmazlık ilk çözülmesi gereken şeydir, çünkü sonraki her izin denetimi sürecin gerçekte kim olduğu kimliğiyle çalışır. Ardından yolu bileşen bileşen yürüyün; geçiş her düzeyde değerlendirilir, bu yüzden geçilemeyen bir dizindeki okunabilir dosya okunamaz kalır. Son dosya kipi ilk değil, son sorudur.

Ad alanları ve hizmet korumalı alanları, sahiplik ve kip bitlerinin tanımlamadığı sınırlar ekler. Kabuğunuzda görünen bir yol bir chroot, bağlama ad alanı veya ev dizinlerini gizleyen bir unit içinde yok olabilir ya da yalnızca okunabilir olabilir. Güvenlik modülleri bir katman daha ekler; bu yüzden okunabilir görünen bir dosya açılırken yine de reddedilebilir.

ps -o user:12,pid,args -C openvpn
systemctl show -p User -p Group -p ProtectHome -p RootDirectory [email protected]
sudo -u openvpn namei -l /etc/openvpn/ccd/alice

Yöneticinin kabuğundaki başarılı bir okuma bu birleşik koşulların hiçbirini sınamaz. Denetimi sunucu hesabıyla, aynı ad alanı ve korumalı alanla çalıştırın ya da sonucun sunucuyu değil kabuğunuzu tanımladığını kabul edin. Üçüncü komut o testin ucuz sürümüdür: her bileşenin kipini yazdırır ve sunucu hesabının geçemediği ilk bileşende başarısız olur.

Çalışma zamanı yazmasına kendi dizinini verin

Okuma envanterin yalnızca yarısıdır. Bir yardımcı betiğin durum dosyası oluşturması, bir eklentinin yapılandırmasının yanına durum yazması gerekebilir ve bu yazmalar yapılandırma ağacını yazılabilir yapmakla karşılanmaz. Belirli dizine işlevinin gerektirdiği yazma iznini verin; açıklayabildiğiniz bir sahip ve kiple birlikte. Yalnızca okunan her şey için salt okunur erişimi yeğleyin.

Özel anahtarın izinlerini ilke dosyalarından ayrı tutun. Sıfırlamadan sonra yeniden okunması gereken anahtarın gereksinimi her bağlantıda okunan istemci dosyasından farklıdır ve ikisi için tek bir gevşek kip, sorunun istediğinden fazla erişim verir. Dar sahiplikli özel bir sunucu hesabı geniş bir gruptan daha kolay denetlenir. Anahtar sıfırlamaları atlatmak zorunda olduğunda, persist-key dizini genişletmek yerine yeniden okumayı kaldırır.

Yeniden üretebildiğiniz olaya göre karar verin

Canlı bir tünel kodda tek bir yolu kanıtlar. Dosyayı gerektiren olay, önemsediğiniz açmayı kapsayan tek testtir; ister yeni istemci bağlantısı, ister değiştirilmiş iptal dosyası, ister izin verilen yumuşak sıfırlama ya da planlanmış yeniden başlatma olsun. Olayı seçin, çalıştırın ve sonuncuyu değil ilk hatayı saklayın.

Yumuşak sıfırlamada bir sinyal ve unitin günlüğü anahtarın yeniden okunup okunmadığını gösterir. Sinyali gönderin, sonra unitin yazdığı son satırları okuyun:

systemctl kill -s SIGUSR1 [email protected]
journalctl -u [email protected] -n 40 --no-pager

Yalnızca ayrıcalıklar düşürüldü diye ele geçirilmiş bir sunucunun artık dosya değiştiremeyeceği sonucuna varmayın. Neler yapabileceği kalan kimlik bilgilerine, yeteneklerine, yazabildiği dizinlere ve hâlâ tuttuğu yazılabilir tanıtıcılara bağlıdır. Ayrıcalık azaltma yetkiyi daraltır ve çalışma zamanı açmalarının envanteri ne kadar olduğunu gösterir. O sınırı yapılandırmanın yanına yazın ki bir sonraki kişi yeniden keşfetmek zorunda kalmasın.

İlgili makaleler