Gözetimsiz VPN sunucu güncellemeleri test edilmiş bir kurtarma yolu gerektirir
Bir güncelleme, sunucuya ulaşmak için kullandığınız hizmeti yeniden başlatabilir. Otomatikleştirmeden önce bant dışı konsolu yalnızca tünel üzerinden bir kurtarma planıyla karşılaştırın.
Gözetimsiz güncellemeler, kendi VPN’i üzerinden ulaştığınız bir sunucu için makul bir politikadır ve aynı zamanda kendi yarattığınız tek bir arıza noktasıdır. Paket işlemi hizmeti yeniden başlatır, tünel düşer ve kullandığınız yönetim yolu onunla birlikte kaybolur. İki kurtarma modeli vardır ve aralarındaki seçim tek bir koşula bağlıdır: güncellenen şeyin içinden geçmeyen bir giriş yolunuz var mı.
İki kurtarma modeli, tek belirleyici koşul
İlk model güncellemeye güvenir ve sonrasında yeniden bağlanabileceğinizi varsayar. VPN ana makineye ulaşmanın birkaç yolundan biri olduğunda ve tünelin arızası onu teşhis etme yeteneğinizi ortadan kaldırmadığında işe yarar. İkinci model önceden bağımsız bir yol, genellikle barındırma sağlayıcısının konsolunu yerleştirir ve tüneli bakımın en olası bozacağı şey olarak görür. İki model de savunulabilir ve yalnızca biri önceden çalışma gerektirir.
Belirleyici koşulu söylemek kolay ve atlamak da kolay. Makineye giden her yönetim yolu güncellenen hizmetten geçiyorsa hiçbir kurtarma modeliniz yok, yalnızca bir beklentiniz var. Bunu değişiklik incelemesinde yüksek sesle söyleyin.
Bu koşulu test etmek on dakika sürer ve ilk gözetimsiz güncellemeden önce gerçekleşmelidir, olay sırasında değil. Her şey çalışırken konsolu açın, kimlik bilgilerinin geçerli olduğunu doğrulayın ve tekrar kapatın. Konsolun düşündüğünüz ana makinede açıldığını doğrulayın. Ardından gece 3’te gerçekten kullanacağınız oturum açmanın hâlâ çalıştığını doğrulayın.
Son kısım kulağa geldiğinden daha önemli. Parolası altı ay önce değiştirilmiş ve hiç doğrulanmamış bir konsol hesabı kurtarma yolu değildir; böyle bir yolu tanımlayan bir belgedir.
Yedeğin geri getirmediği şeyler
Yapılandırma arşivi dosyaların kaydıdır ve bir güncelleme dosyalardan fazlasını değiştirir. Paket durumu, çekirdek modülleri, etkinleştirilmiş birim bağlantıları ve ayrı bir araçla uygulanan güvenlik duvarı kuralları yapılandırma dizininin dışında yaşar ve bunları yok sayan bir geri yükleme, yapılandırılmış görünen ama iletmeyen bir makine üretir.
| What changed | Restored by a configuration backup | Needs its own action |
|---|---|---|
| Service unit or startup ordering | Partly, if the unit file was included | Package state and enabled links |
| Kernel module or interface support | No | Kernel or module rollback, or a boot-time decision |
| Peer or device authorization | Only if the backup predates the revocation | A deliberate decision about which peers return |
| Firewall rules applied outside the config | Only if they were captured | Replaying and verifying each rule |
Yetkilendirme kendi satırını hak eder. Ele geçirilmiş bir cihaz kaldırılmadan önce alınan bir yedek, o cihazın erişimini memnuniyetle geri getirir. Kesinti sırasında ona dönmek bir olayın iki olay hâline gelme yoludur ve geri yükleme kararı eşler hakkında dosyalar hakkında olduğu kadar açık biçimde verilmelidir.
Geri alma mekanizması da önemlidir. Daha eski bir çalıştırılabilir dosyayı paket tarafından yönetilenin üzerine kopyalamak, bir paket değişikliğinin desteklenen geri alınması değildir ve paket veritabanını dosya sisteminin uyuşmadığı bir durumu tanımlamaya bırakır. Paket yöneticisinin kendi sürüm düşürme yolunu veya sağlayıcının sunduğu anlık görüntüyü kullanın. Paket veritabanının kaydettiği bir sürüm düşürme, tekrarlayabileceğiniz olandır.
Bunların hiçbiri yedeklere karşı değildir. Her yapıtın hangi katmanı kapsadığını bilmek lehinedir, çünkü kısmi bir geri yüklemenin arıza biçimi ilk kesintiden daha kafa karıştırıcıdır. Runbook’ta her yedeğin yanına katmanı yazın.
Kontrol noktası, güncelleme, sonra dışarıdan doğrulama
Değişiklik öncesi durumu sonradan karşılaştırabileceğiniz bir biçimde kaydedin: kurulu sürümler, ilgili hizmet birimleri, dinleyen soketler ve güncel eş listesi. Bir Linux ana makinesinde dört komut bunun çoğunu kapsar.
systemctl list-units --type=service | grep -E 'openvpn|wg-quick'
ss -lunp | grep -E ':51820|:1194'
journalctl -u wg-quick@wg0 --since '-10 min'
Birincisi hangi birimlerin var olduğunu ve çalışıp çalışmadığını gösterir, ikincisi dinleyicinin gerçekten bağlı olduğunu doğrular, üçüncüsü size hizmetin son dakikalar hakkındaki kendi anlatımını verir. Hiçbiri bir istemcinin bağlanabileceğini kanıtlamaz, bu yüzden sonraki adım ana makinenin dışında gerçekleşir. Bu okumaları karşılaştırma temeliniz olarak saklayın.
Tüneli kullanmayan bir ağdan doğrulayın: yetkili bir istemcinin kimliğini doğrulayın, bir adı çözün ve amaçlanan bir uygulamaya ulaşın. Arayüzün ayakta olduğunu söyleyen yerel durum satırı arayüz hakkında bir ifadedir; yönlendirme, anahtarlar veya bir eşi kabul eden politika hakkında değildir.
Ardından yeniden bağlanma yolunu bilerek test edin. Hizmeti bir kez yeniden başlatın ve tünelin elle müdahale olmadan geri geldiğini doğrulayın, çünkü yalnızca açılışta doğru başlayan bir hizmet sizi en kötü anda şaşırtacak bir hizmettir.
Başarısız olduğunda, test ettiğiniz yolu kullanın
Kurtarma sırası gösterişli değildir ve işe yarar: ana makineye bağımsız yoldan ulaşın, hizmetin kendi günlüklerini okuyun ve arızaya karşılık gelen belirli kontrol noktasını geri yükleyin. Her denemede tek bir şeyi değiştirin ki bir sonraki günlük okuması bir anlam taşısın.
Bağlantıyı geri kazanmak için birkaç kaydedilmemiş değişiklik yapma dürtüsüne direnin. Aynı anda beş düzenlemeyle onarılan bir makine sonradan açıklanamaz ve bir sonraki güncelleme, yükü gerçekten taşıyanı yeniden getirecektir.
Ardından kalıcı politikaya kanıtlarla karar verin. Güncelleme kimsenin belgelemediği bir bağımlılığı ortaya çıkardıysa düzeltme belgeleme ve bir testtir, güncellemeleri kapatmak değil. Temiz biçimde yeniden başlayamayan bir hizmeti ortaya çıkardıysa düzeltme birimdedir, takvimde değil.
Koşul adlandırıldığı anda karşılaştırma temiz biçimde çözülür. Bağımsız bir yol, gözetimsiz güncellemeleri yönetilebilir bir risk yapar. Yokluğu aynı politikayı kurtarma süresi bilinmeyen planlı bir kesintiye dönüştürür ve hiçbir otomasyon miktarı bu aritmetiği değiştirmez.