Bir OpenVPN istemcisini duraklatmak: iptal neden yanlış kol
Oturumu öldürmek geri alınabilir; sertifikayı iptal etmek değildir. Vakanın hangi kolu gerektirdiğine karar verin ve CRL'yi yalnızca uygun olduğunda yeniden oluşturun.
Bir istemcinin erişimini duraklatmak ile onu kalıcı olarak kaldırmak, ikisinden birini geri almaya çalışana kadar aynı iş gibi görünür. Sertifika iptali, sunucunun kesin saydığı bir kayıt yazar ve bunu geri almak, düzenleyenin veritabanını elle düzenlemek demektir. Canlı tüneli düşürmek, güvende hiçbir şeyi değiştirmeyen bir yönetim komutudur. Kolu, anahtarın hâlâ güvenilir olup olmadığını sorarak seçin, isteğin ne kadar acil göründüğünü sorarak değil.
İnanç: iptal edilmiş ve askıya alınmış aynı şeydir
Bir yüklenici bir hafta askıya alınır ve refleks iptal etmektir, çünkü iptal bir şeyi kapatmak gibi kulağa gelir. Düzenli görünür, on saniye sürer ve geri dönüşün tek yolu olarak veritabanı düzenlemesini bırakır. Refleks anlaşılırdır ve bir kapıyı kapatmaktan çok pasaportu yakmaya yakındır. Duraklatılmış bir cihaz ile ele geçirilmiş bir anahtar farklı muamele gerektirir ve yalnızca biri ucuzca geri alınabilir.
Fark kişide değil, kimlik bilgisindedir. Doğru ellerde olan bir anahtar, güven kaybı olmadan duraklatılıp sürdürülebilir. Kopyalanmış olabilecek bir anahtar asla geri yüklenmemelidir, çünkü geri yükleme kopyanın var olmadığını iddia eder.
İki sistemden birine dokunmadan önce cevabı yazın. Anahtarın açığa çıkıp çıkmadığını söyleyemiyorsanız, muhafazakâr cevap değiştirmedir.
Canlı oturumu yönetim arayüzüyle düşürün
OpenVPN oturumları listeleyebilen ve birini ortak adla öldürebilen bir yönetim arayüzü sunar. Bunu localhost üzerinde etkinleştirin, genel arayüzden uzak tutun ve bir oturum hemen kaybolması gerektiğinde öldürme komutunu gönderin. Komut yalnızca o tüneli kapatır ve diğer her istemci çalışmaya devam eder.
Bu etkin bir soruna verilen yanıttır, askıya alma politikası değil. Aynı profil bir dakika içinde yeniden bağlanabilir, çünkü kimlik bilgisinde hiçbir şey değişmedi. Oturumun gitmesi gerektiğinde ve kalıcı karar hâlâ verilirken bunu kullanın.
Öldürmeden önce oturumun bağlı olduğunu doğrulayın, hiç bağlanmamış bir istemciyi kovalamayın. Aşağıdaki durum komutu şu anda neyin bağlı olduğunu yazdırır.
printf 'status 2\nquit\n' | nc 127.0.0.1 7506
printf 'kill kiosk-14\nquit\n' | nc 127.0.0.1 7506Öldürme böyle bir istemci olmadığını bildirirse, sertifikadaki ortak ad yazdığınız dize değildir. Profil dosyasının adı yerine durum çıktısını okuyun.
CRL gerçekte neyi denetler
Sunucu sertifikada saklanan bir iptal bayrağına bakmaz. crl-verify içinde adlandırılan sertifika iptal listesini her yeni bağlantıda okur ve seri numarası o listede bulunan sertifikayı reddeder. Bundan iki sonuç çıkar ve ikisi de operasyonel olarak önemlidir. Dosya, sunucunun yetkilerini devrettiği hesap tarafından okunabilir olmalıdır ve hâlihazırda bağlı bir istemci yeniden bağlanana kadar çalışmaya devam eder.
İkinci sonuç olaylar sırasında insanları şaşırtır. Bir sertifikayı iptal etmek, onu şu anda kullanan tüneli kapatmaz. Oturumun hemen sona ermesi gerekiyorsa iptali bir yönetim öldürmesiyle eşleştirin ve iki eylemi kılavuzda ayrı adımlar olarak ele alın.
Sunucunun gerçekte neyi uygulayacağını görmek için listeyi inceleyin, kopyaladığınız son dosyanın zaman damgasına güvenmek yerine. Önemli olan kısım seri numaralarının sayısıdır.
openssl crl -in /etc/openvpn/server/crl.pem -noout -text | sed -n '1,14p'
ls -l /etc/openvpn/server/crl.pemGirdisi olmayan bir liste ile doğru girdileri olan bir liste dizin listelemesinde aynı görünür, bu yüzden seri numaraları sayısını yazdırmak değerlidir. İzin satırı da aynı derecede önemlidir, çünkü daemonun okuyamadığı bir dosya reddedilmiş bir istemciye benzeyen bir arıza üretir.
Bir kaydı geri yükleme, dikkatle
Bir sertifikayı geri yüklemek, verme veritabanındaki bir kaydı tersine çevirmek ve yeni bir liste yayımlamak demektir. easy-rsa 3 bu veritabanını PKI dizini altında index.txt olarak tutar, daha eski düzenler ise başka bir sıralama kullanırdı. Bir satır durum harfi ve son kullanma tarihiyle başlar. İptal edilmiş satır, seri numarası, sertifika dosya adı ve ayırt edici ad ile devam etmeden önce iptal için bir zaman damgası ekler. Satırı yerine koymak o zaman damgasını silmek ve harfi tersine çevirmek, geri kalan her şeyi olduğu gibi bırakmaktır.
Önce dosyanın yedeğini alın ve düzenlemeyi bir metin düzenleyicide yazmak yerine betik olarak yapın. Bir satırdaki alan sayısını değiştiren bir yazım hatası, sonradan eklenen her sertifika için verme işlemini bozar. Değişikliği otomatikleştirmenin ve dosyayı dokunmadan önce kopyalamanın nedeni budur.
Aynı adın ikinci iptali de çoğu zaman başarısız olur, çünkü ilk çalıştırma o sertifikayı ve anahtarını aracın bulmayı beklediği dizinlerin dışına taşımıştır. Araç o zaman iptal etmesi isteneni bulamaz ve hata mesajı nedenini her zaman açıkça söylemez.
cp /etc/easy-rsa/pki/index.txt /root/index.txt.$(date +%F-%H%M)
grep -c '^R' /etc/easy-rsa/pki/index.txt
easyrsa gen-crlYeni listeyi yayımlayın, sahipliğini düzeltin ve sunucunun onu okumasını sağlayın. Çoğu kurulumda yeniden yükleme yeterlidir, ancak onay taze bir bağlantıdan gelmelidir, çünkü mevcut oturum hiçbir şeyi yeniden denetlemedi.
Vakanın hangi kolu hak ettiğini denetleyin
Tüm kılavuzu belirleyen tek soruyu sorun: özel anahtar hâlâ yalnızca olması gereken yerde mi. Öyleyse oturumu öldürmek ve belgelenmiş bir duraklama vakayı kapsar ve kalıcı bir kayıt bırakmaz. Değilse tek güvenli cevap yeni bir anahtardır ve eski sertifika iptal edilmiş olarak kalır.
Ardından sonucu yapılandırma farkıyla değil, bir bağlantı denemesiyle doğrulayın. Fark neyi amaçladığınızı söyler, bağlantı ise sunucunun neyi uyguladığını söyler.
openssl crl -in /etc/openvpn/server/crl.pem -noout -text | grep -c 'Serial Number'
printf 'status 2\nquit\n' | nc 127.0.0.1 7506Geri yüklenen istemci bağlanıp durum çıktısında göründüğünde kayıt düzenlemesi işe yaradı. İptal edilen istemci reddedilip günlük CRL'yi adlandırdığında iptal işe yaradı. Aradaki her şey bir izin veya yeniden yükleme sorunudur ve bir sonraki istek gelmeden önce düzeltilmeye değer.