common_name değeri username değerinden farklı olan her bağlantıyı reddeden bir client-connect betiği eklersiniz ve bu, bir sertifika ile bir hesap arasında bağ gibi görünür. username-as-common-name çalıştıran bir sunucuda bu karşılaştırma, betik çalıştığında anlamını çoktan yitirmiştir. İki değer de aynı dizedir, bu yüzden test tamamen başka birine verilmiş bir sertifika için de geçer.

Denetim, betik kötü yazıldığı için yanlış değildir. Okuduğu değer aynı bağlantıda daha önce değiştirildiği için yanlıştır.

Karşılaştırmanın kanıtladığı görünen şey

Sertifika kimlik doğrulaması ile parola kimlik doğrulaması ayrı kanıtlardır ve bir sunucu ikisini de aynı kişiye ait olmalarını istemeden talep edebilir. Boşluk gerçektir: geçerli bir cihaz sertifikası ile herhangi bir geçerli hesabın birleşimi, o sertifika ile adı belirtilmiş tek bir hesabın birleşiminden farklı bir iddiadır. common_name değerini username ile karşılaştıran betik, ikisi arasındaki eksik halka gibi okunur. Sertifikanın söylediğini common_name hâlâ kastediyorsa öyle olurdu.

Bunun böyle olup olmadığı tek bir sunucu seçeneğine bağlıdır ve bu seçenek genellikle ilgisiz bir nedenle açılır, örneğin kullanıcı başına yapılandırma dosyalarını adlandırmayı kolaylaştırmak için.

username-as-common-name adla ne yapar

username-as-common-name etkinleştirildiğinde OpenVPN, kullanıcı adı ve parola doğrulandıktan sonra sertifikanın ortak adını kimliği doğrulanmış kullanıcı adıyla değiştirir. Bu denetim sırasında çalışan doğrulama kancası, değiştirme henüz gerçekleşmediği için sertifikanın ortak adını almaya devam eder. Sonrasındaki her şey, client-connect dahil, kullanıcı adını görür. Bu yüzden sonraki geri çağırma tek bir kimliği iki kez alır ve sunulan sertifikayla karşılaştıramaz.

StageWhat common_name holds
Username and password verification hookThe certificate common name, for example bob-device
After the replacementThe authenticated account, alice
client-connect callbackThe account again, alice

Örnek bir bağlantıyı izleyin: bob-device için verilmiş bir sertifika, alice olarak başarılı bir dizin oturumu ve seçenek açık. Doğrulama aşaması hâlâ iki farklı dize görebilir. Bağlantı aşaması alice ve alice değerlerini görür.

Bu örnek, karşılaştırmanın neden boş olduğunu gösterir. Sertifika doğrulaması ve parola doğrulaması hâlâ kendi başlarına çalıştığı için bağlantının başka türlü kabul edileceğini göstermez.

Bağı her iki kimliğin hâlâ var olduğu yere koyun

Kural, sertifikanın kimliğini ve hesabı aynı anda gören bir aşamada uygulanmalıdır; bu da pratikte kullanıcı adı ve parola doğrulama kancası ya da oraya yüklenen bir eklenti anlamına gelir. Parola doğrulamasını zaten yapan desteklenen bir eklenti, genellikle eşleştirme kuralı eklemek için doğru yerdir, çünkü onu bir ad karşılaştırmasıyla değiştirmek parola denetimini tamamen ortadan kaldırırdı.

Eşlemeyi kod yazmadan önce tanımlayın, çünkü eşitlik nadiren gerçek politikadır. Bir sertifika çoğu zaman bir cihazı tanımlarken oturum bir kişiyi tanımlar ve tek bir cihaz yasal olarak birkaç kişiye hizmet edebilir. İlişkiyi, verilişini sizin denetlediğiniz bir biçimde saklayın; yeniden adlandırma, yeniden verme ve alan adıyla nitelenmiş adlarda ne olacağına karar verin. Dizini anlamadan küçük harfe çevirmek veya alan adı önekini kaldırmak, ayrı kalması gereken iki hesabı birleştirebilir.

Seçeneğin hangi istemci başına yapılandırmanın geçerli olduğunu da değiştirdiğini unutmayın, çünkü client-config-dir ortak ada göre anahtarlanır.

Eşleştirmeyi iki geçerli kimlik bilgisiyle test edin

Politikanızın izin verdiği çiftle başlayın ve bağlandığını doğrulayın. Ardından aynı geçerli sertifikayı farklı ama yine geçerli bir hesapla sunun: bu girişim başarısız olmalı ve yanlış yazılmış bir parola yüzünden değil, eşleştirme kuralı yüzünden başarısız olmalıdır. Yanlış parola, parola denetiminin çalıştığını kanıtlar ve sertifika ile hesap arasındaki kural hakkında hiçbir şey söylemez.

Eksik sertifika ve geçersiz sertifika yollarını da denetleyin ve sunucunun istemci başına ayarlar için hangi kimliği kullandığını doğrulayın. Karşılaştırmanın çalışmasının tek yolu username-as-common-name seçeneğini kapatmaksa, önce bu değişikliğin maliyetini hesaplayın, çünkü her istemcinin yapılandırma aramasını sertifikanın adına geri taşır.

İlgili makaleler