Linux Akademi. Blogger tarafından desteklenmektedir.
+

1990'ların ortalarında internetin yükselişi ve internet bağlantılarının ucuzlaması yeni teknolojilerin önünü açtı. Interneti kullanarak düşük maliyetlerle kurumsal ağların birbirine bağlanması yada başka bir deyişle VPN'de (Virtual Private Network) bu teknolojilerden biridir. VPN ile kurumsal ağlarda dış dünyaya açılmayan özel hizmetlerin müşterilerilere sunulmasına veya kurum çalışanlarının kurumsal bir firewall arkasında güvenli bir ortamda ietişim kurmasına olanak sağlanmaktadır. Bu makalede Ubuntu 12.04 TLS üzerinde OpenVPN ile iki faklı iç ağın internet üzerinden  birbirine bağlanabilmesi için işlem adımları ve OpenVPN'in avantajları incelenmektedir.

Sunucuya OpenVPN Kurulumu

#apt-get install openvpn

Sunucu Sertifikalarının Oluşturulması

#sudo mkdir /etc/openvpn/easy-rsa/
#sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
#sudo chown -R $USER /etc/openvpn/easy-rsa/

Aşağıda görülen /etc/openvpn/easy-rsa/vars dosyasındaki sertifika için gerekli bilgiler düzenlenmelidir.

export KEY_COUNTRY="TR"
export KEY_PROVINCE="Kocaeli"
export KEY_CITY="İzmit"
export KEY_ORG="Linux Akademi"
export KEY_EMAIL="info@linuxakademi.org"

Makinedeki openssl sürümüne göre /etc/openvpn/easy-rsa/ dizinindeki openssl yapılandırma dosyasına yine aynı dizinde openssl.cnf adıyla kısayol verilmelidir.

#openssl version
OpenSSL 1.0.1 14 Mar 2012
#ln -s openssl-1.0.0.cnf openssl.cnf

Aşağıdaki komutları uygulayarak sertifikalar oluşturulur ve gerekli dizinlere kopyalanır.

#cd /etc/openvpn/easy-rsa/
#source vars
#./clean-all
#./build-dh
#./pkitool --initca
#./pkitool --server server
#cd keys #openvpn --genkey --secret ta.key
#sudo cp server.crt server.key ca.crt dh1024.pem ta.key /etc/openvpn/

Sunucunun Yapılandırılması

Örnek sunucu yapılandırma dosyalarının kopyalanması için aşağıdaki komutlar uygulamlıdır.

#sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ #sudo gunzip /etc/openvpn/server.conf.gz

/etc/openvpn/server.conf dosyasındaki aşağıda görülen seçeneklerin düzenlenmesi gereklidir. user ve group parametlerinin nobody ve nogroup olarak ayarlanması openvpn servisinin nobody veya nogroup yetkilerine sahip diğer servislerde oluşabilecek açıklıklardan etkilenmemesi için tavsiye edilmez. OpenVPN için farklı bir kullanıcı ve grup oluşturulabilir.

server 10.9.0.0 255.255.255.0
client-to-client
user nobody
group nogroup
log-append openvpn.log
client-config-dir client-configs

Sunucu tekrar başlatılmalıdır.

#/etc/init.d/openvpn restart

OpenVPN İstemcisinin Kurulması

İstemciler için birçok yetkilendirme yöntemi kullanılabilmektedir. Burada sertifika tabanlı ve shell script tabanlı iki yöntem anlatılacaktır. Öncelikle istemciye OpenVPN kurulmalıdır. Ubuntu üzerinde openvpn kurulumu ve yapılandırma dosyasının oluşturulması için aşağıda komutlar uygulanmalıdır. Windows ve MAC için farklı istemci yazılımları da bulunmaktadır. Fakat yapılandırma dosyası içeriği tüm işletim sistemlerinde aynıdır.

#apt-get install openvpn
#cd /etc/openvpn
#cp /usr/share/doc/openvpn/examples/sample-config/client.conf client.conf

Sertifika İle Yetkilendirme

Öncelikle sunucu üzerinde istemci için serticikaların oluşturulması gerekiyor.

#cd /etc/openvpn/easy-rsa/
#source vars
#./pkitool linuxakademi

sertifika ile yetkilendirme yapılacaksa aşağıdaki dosyaların istemciye kopyalanması gerekmektedir.

/etc/openvpn/ca.crt
/etc/openvpn/easy-rsa/keys/linuxakademi.crt
/etc/openvpn/easy-rsa/keys/linuxakademi.key


Sertifika tabanlı yetkilendirme için istemci yapılandırma dosyasında düzenlenmesi gerekli parametreler şunlardır.

remote linuxakademi.org 1194
ca ca.crt
cert linuxakademi.crt
key linuxakademi.key

Script İle Yetkilendirme

Script ile yetkilendirme yapılacaksa sadece /etc/openvpn/ca.crt dosyasının sunucudan istemciye kopyalanması gerekmektedir. Ardından sunucuda  /etc/openvpn/auth/auth.sh dosyasını oluşturulmalı ve aşağıdaki script bu dosya içerisine kopyalanmalıdır. Script içeriğindeki kullaniciadi ve sifre değişkenleri düzenlenmelidir.

#!/bin/sh
kullaniciadi="linuxakademi"
sifre="linuxakademi" test "$kullaniciadi" = "${username}" && test "$sifre" = "${password}" && exit 0
exit 1

Script yetkilendirme için sunucu yapılandırma dosyasında  (/etc/openvpn/server.conf) düzenlenmesi gerekli parametreler şunlardır.

client-cert-not-required
script-security 3
auth-user-pass-verify /etc/openvpn/auth/auth.sh via-env

Script ile yetkilendirme için istemci yapılandırma dosyasında (/etc/openvpn/client.conf) düzenlenmesi gerekli parametreler şunlardır.

remote linuxakademi.org 1194
auth-user-pass
ca ca.crt

Ağ Trafiğinin Yönlendirilmesi

İstemci üzerindeki tüm trafiğin vpn üzerinden aktarılması için istemci yapılandırma dosyasına (/etc/openvpn/client.conf) aşağıdaki parametre eklenmedir.

push "redirect-gateway def1"

benzer bir parametrenin de sunucu yapılandırma dosyasına  (/etc/openvpn/server.conf) eklenmesi gerekmektedir.

push "redirect-gateway def1 bypass-dhcp"

Bu şekilde istemci vpn sunucusuna bağlandığında 10.9.0.0 ağına dahil olacak ve istemcideki tüm trafik bu ağa yönlendirilecektir. Sunucu makinenin fiziksel olarak bağlı olduğu ağdaki diğer makinelere bağlanmak için sunucu üzerinde nat ayarları yapılmalı ve yapılandırma dosyasına aşağıdaki parametre eklenmelidir. Sunucu makinenin 192.168.1.0 ağına bağlı olduğunu varasyarsak sunucu yapılandırma dosyasına (/etc/openvpn/server.conf) şu parametre eklenmelidir.

push "route 192.168.1.0 255.255.255.0"

Sunucu üzerindeki nat ayarları için aşağıdaki komutlar uygulanmalıdır. Komutlar aynı zamanda /etc/rc.local dosyasına eklenirse makine yeniden başlatıldığında da nat ayarları etkinleştirilecektir.

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables-save
exit 0

Bu bölümde farklı iptables kuralları yazılabilir örneğin sadece aşağıdaki komutun uygulanması da yeterli olacaktır. VPN erişimi internet üzerindeki herhangi bir VPS sunucu ile gerçekleşiyorsa VPS'in IP adresine bağlı olarak şu şekilde nat yapılabilir. 

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source VPS_IP_ADDRESS
iptables-save
exit 0

Sunucu üzerinde OpenVPN yeniden başlatılmalıdır.

#/etc/init.d/openvpn restart

Avantajlar

OpenVPN basit bir güvenlik çatısı sunan, birçok platformda çalışabilen, modüler ağ tasarımına imkan sağlayan,  GPL ile lisanlanmış özgür bir VPN çözümüdür.  OpenVPN'in avantajlarını şu şekilde listeleyebiliriz.
  • Aktif ve Pasif saldırılara karşı güvenlik sağlamaktadır.
  • Kolay kurulabilir ve birçok işletim sistemi ile uyumludur.
  • OpenSSL kütüphanesinin tüm şifreleme ve yetkilendirme özelliklerini desteklemektedir.
  • Kısa süreli bağlantı kesilmelerinde veya IP değişimlerinde kullanılan uygulamaya bağlı olarak bağlalantılar devam ettirilebilir.  
  • Tüm trafik LZO kütüphanesi ile Gerçek Zamalı olarak sıkıştırılabilmektedir.
  • OpenVPN bağlantıları neredeyse tüm güvenlik duvarları ve vekil sunucular üzerinden tünnellenebilmektedir.
  • Bağlantı kurulabilmesi için güvenlik duvarında sadece tek port'un açık olması yeterlidir.
  • Mobil ve Gömülü Sistemleri desteklemektedir.
  • Kapsamlı scripting imkanlarıyla yüksek esneklik sağlanabilmektedir.
23:03:00
Next
Sonraki Kayıt
Previous
This is the last post.

0 Yorum Var Blogger 0 Facebook

Yorum Gönder

 
Top