OpenVPN 1. kısım

OpenVPN endüstri standardı SSL/TLS protokolünü kullanarak 2. veya 3. katmanda VPN oluşturabilen, sertifika, smart card, kullanıcı adı/şifre gibi çeşitli kimlik denetimi metodlarını destekleyen, kullanıcı veya grup bazlı erişim kontrol kuralları uygulayabilen tam özellikli bir SSL VPN çözümüdür. OpenVPN yazılımı hem sunucu hem istemci tarafına kurulur. Yapılan ayarlamalarla makinalar sunucu veya istemci rolünü üstlenir. OpenVPN sadece bu iki makina arasında güvenli bir iletişim sağlamak için kullanılabileceği gibi en genel anlamda sunucu ve istemcinin routing yeteneklerini kullanarak bir site-to-site VPN kurmak için bile kullanılabilir. OpenVPN varsayılanda UDP 1194’ü kullanır. Yani güvenliği sağlanacak olan iletişim sunucu ve istemci arasında belirtilen tek bir porttan şifreli bir şekilde gerçekleşir. OpenVPN bunu sanal bir ağ adaptörü oluşturarak başarır. OpenVPN makinalarının sanal adaptörleri arasında geçiyormuş gibi accutane acne medicine görünen trafik şifrelenir ve fiziksel adaptörden çıkarken ve girerken tekrar encapsulation ve decapsulation gerçekleşir. OpenVPN’in şifreleme için kullandığı algoritma ise varsayılanda blowfish’tir.

OpenVPN’in iki farklı çalışma modu vardır: Routed ve Bridged. Routed OpenVPN’de istemciler ve sunucu belirlenen bir ağdan IP alır. Bridged’da ise istemciler sunucunun fiziksel adaptörünün bağlı olduğu ağdan IP alır. Routed bunların arasında uygulanması tercih edilen moddur çünkü daha verimlidir. Bridged’ın routed’a göre kayda değer tek avantajı broadcast paketlerini geçiriyor olmasıdır.

OpenVPN IPsec’te faz 1’e karşılık gelen kimlik denetimini sertifikalarla veya önceden paylaştırılmış gizli anahtarla yapabilir. Buna ek olarak kullanıcı adı/şifre bazlı kimlik denetimi de yapabilir. Yalnız önceden paylaştırılmış gizli anahtar kullanıldığında OpenVPN sadece bir istemciye izin verir. Bir merkez bir de uzak siteden oluşan bir topolojide bu yöntem uygulanabilir. Ancak birden fazla çalışana remote-access VPN hizmeti verme ya da birden fazla uzak site bulunması durumunda kimlik denetiminde sertifikaların kullanılması gerekir. Sertifika ya da önceden paylaştırılmış gizli anahtar kullanmadan sadece kullanıcı adı/şifre bazlı kimlik denetimi yapmak ise tavsiye edilmez.

Yazımın kalanında aşağıdaki topolojide OpenVPN’i routed modda kullanarak iki site arasında güvenli bir bağlantı nasıl oluşturulur onu anlatacağım.

Sunucu ve istemcinin işletim sistemleri propecia online Windows XP Service Pack 3. Bu ikisi arasındaki link de güvenli bağlantıyı simgeliyor. Sitedeki diğer makineler karşı siteye OpenVPN istemcisi veya sunucusu üzerinden gidiyorlar. Burda düşmek istediğim not: istemciyi tek bir makine olarak düşünürsek topoloji remote-access haline gelmiş olur. Fakat bu durumda sertifikanın yanısıra kullanıcı adı/şifre bazlı kimlik denetimi yapmayı da göz önünde bulundurmalıyız. Site-to-site’ta remote-access’e ek olarak yapmamız gereken sadece istemci tarafındaki makinaların karşı siteye istemci üzerinden gitmelerini sağlamaktır. Genelde site-to-site VPN’de VPN gateway’ler sürekli çalışıyor olduklarından kullanıcı adı/şifre bazlı kimlik denetimine gerek yoktur.

Öncelikle OpenVPN’i iki makineye de indirip kuruyoruz. Güncel hali http://www.openvpn.net/ index.php/open-source/downloads.html adresinde bulunabilir. Kurulumu basittir. Kurulumdan sonra TAP-Win32 Adapter adında yeni bir adaptör oluştuğunu görebiliriz. Ayrıca Program Files’ın altında da OpenVPN klasörü oluşacaktır.

Sunucu ve istemcinin sertifika yoluyla birbirlerini kimlik denetiminden geçirmeleri gerekir. Bunun için server da bazı sertifikalar oluşturmamız lazım. Bundan önce sertifikalarla kimlik denetimi konusuna kısaca değinelim.

Sertifikalarla kimlik denetimi için şu benzetme kullanılabilir: Birbirini tanımayan iki kişi olduğunu düşünelim. Bu iki kişinin de güvendikleri ortak bir arkadaşları varsa birbirlerine de güvenebilirler demektir. Sertifikalarla kimlik denetimi senaryosunda güvenilen kişi CA (Certificate Authority)’dir. CA kendisiyle ilgili bilgilerin ve kendi public key’inin bulunduğu bir doküman oluşturur, bunu hash’ler, bu hash’i de kendi Private key’i ile şifreler. Elde edilen bu şifrelenmiş hash’e dijital imza adı verilir. CA bu dijital imzayı dokümanına ekleyerek, yani kendi dokümanını imzalayarak CA sertifikasını oluşturur. Dünya çapındaki güvenilir kuruluşların (VerSign, Entrust, Microsoft gibi) CA sertifikaları işletim sisteminin yüklenmesiyle beraber bilgisayara yüklenir.

Sertifikalarla kimlik denetiminin gerçekleşmesi için haberleşmek isteyen tarafların CA’nın güvenini kazanmaları gerekir. Bu da benzer şekilde gerçekleşir. CA sertifikası zaten kendisinde bulunan taraflar kendileriyle ilgili bilgilerin ve kendi public key’lerinin bulunduğu bir dokümanı CA’nın public key’iyle şifreleyip CA’ya gönderirler ve imzalamasını isterler. CA gönderene güvenmeye karar verdiğinde gönderilen dökümanın şifresini kendi private key’iyle çözer, dokümanı hash’ler, bu hash’i kendi private key’iyle şifreler (bu aşamada dijital imzayı elde etmiş olur) ve bu şifrelenmiş hash’i kendisine göderilen dokümana ekler (imzalanmış olur). Böylece tarafların sertifkaları oluşturulmuş olur. Sertifikalar taraflara güvenli bir şekilde ulaştırılır.

Taraflar sertifikalarını elde ettikten sonra artık sertifikaların süresi dolana kadar CA’ya ihtiyaç duymadan birbirlerini kimlik denetiminden geçirebilir: Birbirlerine sertifikalarını yollarlar, aldıkları sertifikanın doküman kısmını hash’leyip, CA’nın public key’iyle imza kısmının şifresini çözerler. Elde ettikleri hash’ler aynıysa kimlik denetimi başarıyla gerçekleşmiş olur.

OpenVPN’de sunucu aynı zamanda CA’dır. Hem CA hem sunucu hem de istemci için sertifika – private key ikilileri sunucuda oluşturulur. İstemciye kendi sertifikası ve private key’inin ve de CA sertifikasının güvenli bir şekilde ulaştırılması gerekir. Dikkat edilmesi gereken nokta her makineye ilişkin private key’in sadece o makinede kalması ve hiç bir şekilde paylaşılmamasıdır.

Sertifikaların ve diğer gerekli dosyaların oluşturulması için sunucuda komut satırında aşağıdaki komutlar çalıştırılır:

Öncelikle easy-rsa dizinine geçilir.

cd C:\Program Files\OpenVPN\easy-rsa

CA sertifika ve private key’ini oluşturmak için

init-config
vars
clean-all
build-ca

son komuttan sonra oluşturulucak CA sertifikasındaki bilgiler sorulur. Burda belirtilmesi gerekli olan sadece common name yani CA sertifikasının ismidir.

Country Name (2 letter code) [KG]:
State or Province Name plavix side effects (full name) [NA]:
Locality Name (eg, city) [BISHKEK]:
Organization Name (eg, company) [OpenVPN-TEST]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server’s hostname) []:MyCA
Email Address [me@myhost.mydomain]:

Şimdi sunucu için sertifika ve private key oluşturalım:

vars
build-key-server
server

Aynı bilgileri bu kez de sunucu için sorar. Yine common name’i belirtmeliyiz (örneğin “server”). Ayrıca bu kez oluşturulan sertifikanın imzalanması için de onay vermemiz gerekecektir. Sonraki iki soruya “y” girilip enter’a basarak devam edilir.

Son olarak istemci için için sertifika oluşturuyoruz:

vars
build-key client

Yine common name’i (örneğin “client”) belirtmeli ve ardından sorulan soruları onaylamalıyız.

Böylece easy-rsa’nın altında yeni oluşan key klasörü içinde 6 yeni dosyamız oluştu. Bunlar CA, sunucu ve istemci için sertifika – private key ikilileri. Private key’lerin mutlaka sadece kendi makinelerinde bulunması gerektiğini biliyoruz. CA sertifikası ise her makinede mutlaka olmalı. Sunucu ve istemci sertifikalarının da sadece kendi makinelerinde olmaları yeterli. Dolayısıyla sunucunun sertifikasını ve private key’ini CA sertifikasıyla beraber OpenVPN klasöründeki config klasörüne koyuyoruz. İstemci sertifikası, private key’i ve CA sertifikasını da güvenli bir şekilde istemciye ulaştırıp ordaki config klasörüne koymamız gerek.

Böylece sertifikalarla işimiz bitiyor. Komut satırında yapmamız gereken iki iş daha var. İlki Diffie-Hellman parametrelerini oluşturmak:

build-dh

Bu biraz uzun sürebiliyor. Bu komut sonrasında keys klasöründe oluşan dh1024.pem’i yine config klasörüne kopyalıyoruz.

Bir de veri bütünlüğünü sağlamak için hash’leme de kullanılacak statik simetrik bir anahtar oluşturalım (isteğe bağlı):

openvpn –genkey –secret ta.key

Bu komut sonucu yine keys klasöründe oluşan ta.key dosyasını config klasörüne kopyalamalıyız. Ayrıca güvenli bir bağlantı üzerinden istemciye ulaştırıp orda da config klasörüne de koymalıyız.

Son olarak oluşturduğumuz bir sertifikanın geçerliliğini iptal etmek istiyorsak aşağıdaki komutları çalıştırmamız gerekir:

vars
revoke-full COMMON_NAME

Bu komut sonucu yine keys klasöründe crl.pem dosyası oluşuyor. Artık kimlik denetimi sırasında bu liste de kontrol edilecek ve iptal edilen sertifika kimlik denetiminden geçemeyecek. Bu dosyayı da config klasörüne kopyalamalıyız. Dosya gizli olmamakla beraber diğer istemcilerde bulunması güvenlik sebebiyle tavsiye edilmez.

Artık sıra openvpn’de istediğimiz ayarları yapmaya geldi. Yazımın ikinci kısmında sunucu ve istemci ayarlarını yaptığımız yapılandırma dosyalarından bahsedeceğim.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir