Tek bir sunucuda iki müşteri, bir sunucu bloğu daha ve ikinci bir bağlantı noktası gibi görünür. Müşterinin gerçekte sahip olduğu her şeyi listelediğinizde bu başka bir projeye dönüşür: bir dinleyici, bir tünel havuzu, bir kimlik, güven dosyaları, yollar ve bir iptal takvimi. Bunlardan birini atlarsanız ikinci müşteri sessizce birincinin bir parçasını devralır. Her müşteri için bir kart oluşturun ve ilk istemci bağlanmadan önce doldurun.

Her müşteriye eksiksiz bir kaynak kartı atayın

Tüm kümeyi birlikte ayırın: genel bağlantı noktası, tünel alt ağı, yapılandırma yolu, günlük hedefi, hizmet örneği adı ve cihaz. Bunları bir grup olarak adlandırmak, hâlâ ilk müşterinin havuzunu veya arayüzünü içeren çalışan bir dosyanın klasik kopyasını önleyen şeydir. Değerler örnektir, ayrılmış bağlantı noktaları değildir; bu yüzden sunucunun hâlihazırda ne kullandığını kontrol edin. Başlayan bir hizmet, tamamlanmış bir müşteriyle aynı şey değildir.

Kartı yapılandırmanın yanında tutun ve her değer değiştiğinde güncelleyin. Gerçeklikten uzaklaşan belgeler hiç olmamasından daha kötüdür.

Güven malzemesini her müşterinin içinde tutun

Her müşteri için ayrı bir veren otorite sınırı akıl yürütmeyi kolaylaştırır ve imzalama anahtarını internete bakan sunucudan uzak tutar. Paylaşılan bir kök de çalışabilir, ancak ortak bir çapa iki hizmeti tek bir üyelik alanına dönüştürmez. Her dinleyicinin hangi zincirleri kabul ettiğine ve hangi istemci kimliklerine yetki verdiğine karar verin, sonra ikisini de yazın. Bir şey bağlanana kadar sertifikaları zincirden deneme yanılma yoluyla çıkarmayın.

Sunucunun kendi özel anahtarı her müşteri için korumalı bir dosyaya aittir, yapılandırmayla birlikte çoğaltılan bir şablon dizinine değil.

Ağları da süreçler gibi ayırın

İki bağlantı noktasındaki iki süreç, onları ayırmadığınız sürece hâlâ bir sunucuyu ve bir yönlendirme tablosunu paylaşır. Tasarıma güvenmeden önce neyin dinlediğini doğrulayın.

ss -lunp | grep -E '1194|1195'
openssl verify -CAfile customer-a/ca.crt customer-a/client.pem

Dinleyici denetimi hangi sürecin her genel bağlantı noktasına sahip olduğunu gösterir ve doğrulama, istemci sertifikasının amaçlanan çapaya zincirlenip zincirlenmediğini gösterir. Hiçbir çıktı A istemcisinin B alt ağına ulaşamadığını kanıtlamaz; bu yüzden kaynak ve hedef ilkesini, dönüş yollarını ve kasıtlı olarak paylaşılan her hizmeti tanımlayın. Ağ ad alanları veya kapsayıcılar yönlendirme bağlamlarını ayırır ve kazara karışmayı azaltır, ancak bunlar tam bir kiracı sınırı değildir tek başına. Tehdit modeli gerektirdiğinde daha güçlü bir yalıtım mekanizması seçin.

İptali devir teslimden önce iletin

İptalin bir teslim yolu olmadan sertifika dağıtımı tamamlanmış sayılmaz. İşe alımın parçası olarak CRL'nin verenini ve geçerlilik aralığını kontrol edin.

openssl crl -in customer-a/crl.pem -noout -lastupdate -nextupdate
systemctl status openvpn@customer-a

CRL denetimi listenin ne zaman yayımlandığını ve ne zaman sona erdiğini bildirir; hizmet durumu ise onu okuyan örneğin çalıştığını doğrular. Yeni bir şey iptal edilmese bile yayım politikasının takvimine göre listeyi yenileyin, çünkü süresi geçmiş bir CRL her istemciyi reddedebilir. Okuyucuların kısmi bir yazıyla karşılaşmasına izin vermek yerine tam bir dosya yayımlayın ve dağıtımdan önce imzayı doğrulayın. Yayım, uç nokta işletimi ve hizmetten çıkarmanın kime ait olduğunu kaydedin, böylece A müşterisinin kapatılması B'yi rahatsız etmez.

Ardından kabul çiftini çalıştırın: izin verilen istemci kendi hizmetine ulaşır ve A kimlik bilgileri B'nin dinleyicisi tarafından reddedilir. Sınır, test olarak ifade edilmiş budur.

İlgili makaleler