o Temel özellikleri
o Linux
o Routing mode
VPN Teknolojisi VPN(Virtual Private Network/Sanal Özel Ağ) internet üzerinden şifreli ve güvenli veri iletişimi sağlamak için düşünülmüş bir teknolojidir. Kiralık hatlar(Lease-line) gibi daha güvenli, sağlam çözümlerin yerine VPN kullanilmasinin temel nedeni, maliyet ve kolay yapılandırmadır. Temelde iki tip VPN teknolojisi vardır. Amacımıza gore bu iki VPN teknolojisinden birini seçebiliriz. Remote Access olarak tanımladğımız VPN türü, firmaların gezgin çalışanlarının firma ağına heryerden güvenli iletişimlerini sağlamak için kullanılır. Ya da büyük bir firmanın farklı lokasyonlardaki şubelerini merkeze bağlamak için kullanılır. Basitçe resimleyecek olursak: Firmamızın satış elemanı Sivas'da bir görüşme sonrası bazı belgeleri print etmesi ya da ofisteki bir kaynağı kullanması gerekti, bunu normal internet üzerinden yapmak hem riskli hem de bir o kadar zordur. Bunun yerine biz elemanımıza VPN istemcisi kurarak istediği yerden şirket ağına bağlanarak "belirli" işlemleri gerçekleştirebilmesini ve "belirli" kaynaklara erişimi sağlayabiliriz -ki tercih edilmesi gereken yöntem de budur.
Bu tip VPN genellikle farklı firmaların birbirleri ile VPN aracılığı ile güvenli iletişim kurmaları için düşünülmüştür. Aynı zamanda firmanın farklı lokasyonlardaki şubelerinin merkeze bağlanmasını da sağlar. Remote Acces VPN'den temel farkı VPN işlemini gören iki uçta VPN sunucu olması.
VPN teknolojileri hakkında daha detaylı bilgi edinmek için Penguence Sayı 2'deki "Sanal Özel Ağ, Kriptoloji ve PKI Teknolojileri" yazısına gözatmanızı tavsiye ederim. Kısaca VPN teknojisine değindikten sonra bu teknolojiyi en etkin ve ucuz bir sekilde uygulamanın yollarına bakalım. Açık Kod VPN Çözümleri Açık kod dünyasında her amaca yönelik çeşitli çözümler vardır. Bu çözümlerin bazıları diğerlerine göre daha fazla tutulur, kullanılırlar ve o teknolojinin adı anıldığında insanların aklına gelir. Mesela bugün port tarama konusunun geçtiği her kitap/yazıda açık kodlu port tarama programı Nmap'den bahsedilir. Nmap ya da benzer diğer popüler açık kodlu yazılımlar, bunu basitlik, projeyi sahiplenme ve bol dökümantasyon özellikleri ile başarmışlardır denilebilir. PPTP Çözümü : Poptop Gerçek bir VPN Çözümü Olarak OpenVPN OpenVPN multi platform SSL VPN çözümüdür. Endüstri standardı SSL/TLS protokollerini kullanarak OSI 2. ve 3. katman seviyesinde şifreli ağ erişimi sağlar.
OpenVPN ile yapılabilecekler; o Linux, Windows 2000/XP ve üzeri, OpenBSD, FreeBSD, NetBSD, Mac OS X ve Solaris işletim sistemlerinde çalıştırılabilir. OpenVPN'in kısa sürede bu kadar popüler olmasının nedeni OpenVPN Kurulumu Yaygın kullanılan üç işletim sistemi için kurulum adımları; OpenBSD için Kurulum Adımları OpenBSD üzerinde OpenVPN kurulumu icin ister OpenBSD paket sistemi(ports) ister kaynak koddan kurulum yöntemi izlenebilir. Biz burada kaynak koddan kurulum ile ilerleyeceğiz
Kaynak Koddan kurulum Kaynak koddan kurulum için sistemde wget programı OpenBSD için wget kurulumu; #pkg_add -v ftp://ftp.enderunix.org/pub/OpenBSD/3.7/packages/i386/wget-1.8.2.tgz Lzo Kurulumu #cd /usr/ports/archivers/lzo # mkdir /usr/src/openvpn Son sürüm openvpn paketi indirilerek açılır # wget http://openvpn.net/release/openvpn-2.0.5.tar.gz # md5 openvpn-2.0.5.tar.gz Not: http://openvpn.net/sig.html adresinden MD5 SHA1 imzalari kontrol edilebilir. #tar zxvf openvpn-2.0.5.tar.gz #make #make install #mv easy-rsa sample-scripts sample-config-files plugin contrib/ /usr/local/etc/openvpn/ OpenBSD paket yonetim sistemi kullanarak kurulum #cd /usr/ports/net/openvpn Kurulum sonrasında örnek yapılandırma ve gerekli scriptler /usr/local/share/examples/openvpn/ dizini altına atılmaktadır. Bu dizini /usr/local/etc/openvpn dizini olarak kopyalayalım. FreeBSD için Kurulum NOT: FreeBSD için port ağacından Kurulum için #cd /usr/ports/security/openvpn Komutları verilmelidir.
Standart kurulum için OpenBSD kurulum adımları takip edilebilir. Red Hat Linux Enterprise için Kurulum # mkdir /usr/src/openvpn #cd openvpn-2.0.5 #./configure --with-lzo-lib=/usr/local/lib --with-lzo-headers=/usr/local/include/ Kurulum sonrası genel yapılandırma Her üç işletim sistemi için kurulum sonrasında yapılandırma dosyalarını ana bir dizine taşıyarak bunda sonraki işlemlerin üç işletim sistemi için de aynı olmasını sağladık (usr/local/etc/openvpn). CA (Certificate Authority) Kurulumu ve sunucu/istemciler icin gerekli sertifikalari olusturma CA bir yetki merkezidir. Sertifika ile güvenliği sağlanmaya çalışılan taraflar için güven onayı veren bir merkezdir. Güvenilir bir CA tarafından imzalanmış sertifika ile yapılan şifreleme işlemlerinin güvenliği sağlanmış olur. Eğer kullanılan CA herkes tarafından kabul görmemiş ise CA tarafından imzalanan sertifikalar için güvenlikden söz edilemez. OpenVPN ile birlikte kullanılacak sertifikalar için bir adet CA ihtiyacı vardır. Bu CA'I kendiniz oluşturabileceğiniz gibi, internet üzerinden güvenilirlilği kanıtlanmış CA'leri de kullanılabilirsiniz. Her sunucu istemcisi ikilisi için birer adet public ve private key olusturulur. OpenVPN'nin güzel bir yanı da çift tarafli onaylama desteklemesidir, yani hem kullanici sunucuyu hem de sunucu kullaniciyi denetleyebilir. Aşağıdaki komutlar kendi CA'nizi oluşturmanıza yardımcı olacaktır. #cd /usr/local/etc/openvpn/easy-rsa/ # . ./vars Generating a 1024 bit RSA private key Sunucu için sertifika ve anahtar olusturma sunucu için sertifika ve gizli anahtar oluşturma Country Name (2 letter code) [KG] : TR Please enter the following 'extra' attributes countryName :PRINTABLE:'TR' 1 out of 1 certificate requests certified, commit? [y/n]yWrite out database with 1 new entries İstemciler için anahtar olusturma # ./build-key istemci Please enter the following 'extra' attributes 1 out of 1 certificate requests certified, commit? [y/n] y
Diffie Hellman parametrelerini olusturma
# ./build-dh Generating DH parameters, 1024 bit long safe prime, .....................+.+......................+............ # cd keys/ ca.crt sunucu ve tum istemcilerde olmali Olusturulan bu dosyalar gerekli makinelere güvenli yoldan aktarilmalidir. # cp -rp /usr/src/openvpn/openvpn-2.0/easy-rsa/keys/ /usr/local/etc/openvpn/ # cd /usr/src/openvpn/openvpn-2.0/sample-config-files/ # ls README home.up office.up # cp * /usr/local/etc/openvpn/ #cd /usr/local/etc/openvpn Buraya kadarki adımlarla kurulum sürecini tamamladık. Şimdi de OpenVPN'in çalışma yapısına gözatarak nasıl yapılandırılacağınagözatalım. OpenVPN Çalışma Modları OpenVPN iki farkli modda çalışabilir. Bridge mod ve route mod. Gereksiniminize gore bu iki çalışma yönteminden birini kullanabilirsiniz. Bridge Mode Çlışma Yapısı Route Mod Çalışma Yapısı Sunucu Tarafı Yapılandırma Dosyası - server.conf OpenVPN çalışma parametrelerini komut satırından alabileceği gibi bir dosyaya düzenli bir şekilde yazarak bu dosyadan da okuma yapabilir. Tercih edilen yöntem, tüm yapılandırma parametrelerini bir dosyaya(server.conf) yazarak bu dosyadan okutmaktır.
VPN Sunucu hangi IP üzerinden çalışsın? local a.b.c.d a.b.c.d ile belirtilen IP adresi üzerinden çalışacağını belirtir. Sunucumuzda birden fazla IP adresi varsa bu adresler arasında seçim şansı verir. VPN sunucu Portu port 1194 VPN sunucunun hangi port üzerinden çalışacağını belirtir. Aynı makine üzerinde birden fazla OpenVPN çalıştırılacaksa bu parametre her yapılandırma dosyası için farklı olmalıdır. proto udp Hangi protokolün kullanılacağını belirtir. Varsayılan ve tavsiye edilen değeri UDP'dir. Route mod mu Bridge mod mu? ;dev tap0 Layer 2 VPN kullanmayı düşünüyorsanız bu değer tap olmalıdır. Eğer OpenVPN'i route modda kullanmak isterseniz tun arabirimi kullanılmalıdır.
ca /usr/local/etc/openvpn/certs/ca.crt CA Sunucunun sertifikası. Burada tam yol belirtilmelidir. cert /usr/local/etc/openvpn/certs/server.crt VPN sunucunun sertifikası. Sadece sunucu tarafında bulunmalıdır. key /usr/local/etc/openvpn/certs/server.key bu dosya çok önemlidir. Diğer tüm sertifikaları imzalamada kullanılır. dh /usr/local/etc/openvpn/certs/dh1024.pem Diffie hellman parametrelerinin bulunduğu dosya VPN İstemcileri Ağ Yapılandırması server 10.8.0.0 255.255.255.0 VPN sunucuya bağlanarak IP alacak istemcilerin IP havuzunu belirler. Havuz içinde ilk IP adresi VPN sunucunun IP adresi olacaktır. ifconfig-pool-persist ipler.txt VPN sunucuya bağlanarak IP adresi alan istemcilerin kayıtlarını tutar. VPN sunucuda yaşanacak bir bağlantı kopması sonrasında istemcilerin eski IP adreslerini almalarını sağlar. ;push "route 192.168.20.0 255.255.255.0" VPN ile bağlanan istemcileri VPN sunucu arkasındaki başka ağlara da erişim izni için yönlendirme tanımı. İstemciye Özel IP atama Bazı istemcilerinize özel ip ataması yapmak isterseniz istemcilerin sertifikalarında kullandıklar CN tanımına göre özel ip atamaası yapabilirsiniz. Örnek; Sertifikasında CN'si enderunix olan istemciye 10.9.0.1 ip'sinin atanmasını istiyoruz. client-config-dir ozel /usr/local/erc/openvpn/ozel dizinini oluşturarak içine enderunix adlı bir dosya açılır ve bu dosyaya aşağıdaki satır eklenir. ifconfig-push 10.9.0.1 10.9.0.2 VPN Kullanıcının Tüm Trafiğini Yönlendirmek push "redirect-gateway" VPN sunucuya bağlanan istemcilerin varsayılan geçit yolunu(default gateway) VPN sunucu olarak ayarla manasıan gelir. Böylece istemcinin özel olarak yönlendirilmemiş tüm trafiği VPN gateway aracılığı ile çıkacaktır. Burada istemcileri internete çıkarmak için VPN sunucu makinesinde NAT yapılması da gerekir. Linux, FreeBSD ve OpenBSD işletim sistemlerinde NAT işleminin nasıl yapıldığı öğrenilmelidir.
VPN istemcilerinin birbirini görmesi OpenVPN varsayılan yapılandırımı ile VPN istemcileri sadece VPN sunucuyu görecektir. Birbirlerini görebilmeleri için ;client-to-client Tanımı girilmelidir. Istemcilerin sadece VPN sunucuyu görmelerini kesin olarak sağlamak için VPN sunucu üzerindeki Güvenlik duvarı uygun şekilde yapılandırılmalıdır. Aynı sertifika ile birden fazla İstemci Aynı sertifika ile birden fazla istemcinin VPN yapabilmeleri için duplicate-cn tanımı kullanılmalıdır. Aksi takdirde VPN ağına bağlanan her istemci aynı IP adresini alacaktır. Biraz karışık bir özellik ve sadece test amaçlı kullanılması öneriliyor. keepalive 10 120 Sunucu ve istemcilerin birbirinin durumundan haberdar olmalarını sağlayan bir yapı. Anlamı her 10 saniyede bir kontrol et, 120sn içerisinde cevap gelmezse bağlantıyı kopar. VPN Hattında Sıkıştırma Eşzamanlı VPN Kullanıcısı OpenVPN durum Kontrolü Loglama verb 3 # 0 is silent, except for fatal errors VPN sunucu başlatma ve çalışma zamanı için loglarını atacağı dosya. VPN sunucuda problem yaşandığında ilk bakılması gereken dosyadır. NOT: Tüm geçerli parametreler için örnek server.conf dosyasının incelenmesi faydalı olabilir. Örnek Yapılandırma Dosyaları Aşağıdaki istemci ve sunucu yapılandırma dosyaları temel bir VPN ağı oluşturmak için gerekli yapılandırmaları içermektedir. Kendi ihtiyacınıza göre bu değerlerle oynayabilirsiniz. Örnek istemci dosyası Örnek sunucu konfigürasyonu Windows XP OpenVPN istemci Kurulumu http://openvpn.se/download.html adresinden son sürüm "stable" OpenVPN-gui paketini indirerek işleme başlayalım. Yazı hazırlarken son sürüm openvpn-gui: openvpn-2.0.5-gui-1.0.3-install.exe
Kurulum adımları tamamlandıktan sunucu tarafında oluşturduğumuz istemci sertifikalarını C:\Program Files\OpenVPN\config dizini altına kopyalayarak istemci tarafı VPN yapılandırma dosyasını uygun şekilde düzenleyelim. Laptop.ovpn adlı bir dosya oluşturarak içine örnek istemci dosyasındaki gibi değerleri yazarak VPN bağlantısını başlatabilirsiniz.
Bağlantı kurulumu esnasında aşağıdaki ekrana benzer bir pencere açılarak bağlantı durumunu gösterecektir.
Huzeyfe ÖNAL EnderUNIX Yazılım Geliştirme Takımı -Şubat 2006 Kaynaklar [ref 1] "Implementing OpenVPN". Florin Andresi. Mar 26 2004 [ref 2] OpenVPN Articles. [ref 3] "Sanal Özel Ağ, Kriptoloji ve PKI Teknolojileri". Serkan YILMAZ. [ref 4] "AçıkKod VPN Çözümleri". Huzeyfe ÖNAL. [ref 5] "OpenVPN Howto". |
Son yorumlar
8 hafta 1 gün önce
9 hafta 4 gün önce
11 hafta 6 gün önce
11 hafta 6 gün önce
14 hafta 4 gün önce
14 hafta 5 gün önce
17 hafta 3 gün önce
18 hafta 4 gün önce
20 hafta 3 gün önce
20 hafta 3 gün önce