Son günlerde yaşanan olaylar için alınan tedbirler sonucu Google’ın bazı servislerine ülkemizden erişmek maalesef mümkün olmuyor. Bilişim sektöründe olmayanlar çeşitli çözümler üreterek bu tedbirleri aşabiliyorlar, her ne kadar hiç güvenilir bulmadığım yöntemler olsa da, fakat developer olarak Google ve Twitter’ın apilerini kullanan uygulamalar geliştiriyorsanız ve bu apilerden faydalanıyorsanız ve ülkemizde host edilmeyen bir VPS sunucunuz var ise OpenVPN kurulumu ile bu servislere kolayca ve güvenilir bir şekilde erişebilirsiniz.
Öncelikle belirtmekte fayda var burada anlatılacak kurulum Centos 6.2 versiyonu üzerinde gerçekleştiriliyor ve Centos 5 için ya da 32bit – 64bit gibi farklı mimarideki işletim sistemleri için farklılaşan downloadlar oldugunda ya da farklı bir komut çalıştırılması gerektiğinde bunu da belirtiyor olacağım.
1 – Aşağıdaki komut ile tun/tap interfacesinin sistemde aktif olup olmadğını kontrol ederek işlemlerimize başlayalım.
cat /dev/net/tun
Eğer tun interfacesi aktif ise aşağıdakine benzer bir çıktı almanız gerekiyor.
cat: /dev/net/tun: File descriptor in bad state
2 – OpenVPN paketinin ihtiyaç duyacağı paketleri aşağıdaki komut ile kuralım.
yum install gcc make rpm-build autoconf.noarch zlib-devel pam-devel openssl-devel -y
3 – Aşağıdaki komut ile OpenVPN ile uyumlu olan paketin kaynak kodlarını indirelim.
wget http://openvpn.net/release/lzo-1.08-4.rf.src.rpm
4 – Aşağıdaki komutlardan sizin işletim sistemi kurulumunuza uygun olanı ile rpmforge paketini indirelim.
32bit Paketler:
CentOS 5:
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
CentOS 6:
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
64bit Paketler:
CentOS 5:
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
CentOS 6:
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
5 – Aşağıdaki komutlar yardımı ile yeni paketleri derleyelim.
rpmbuild --rebuild lzo-1.08-4.rf.src.rpm rpm -Uvh lzo-*.rpm
rpm -Uvh rpmforge-release*
6 – yum ile OpenVPN paketini kurabiliriz artık.
yum install openvpn -y
7 – VPN trafiğinin SSL ile şifreli olarak gönderilebilmesi için sertifikaya ihtiyacımız olacak.
Aşağıdaki komut ile sertifika oluşturmak için kullanacağımız dosyaları /etc/openvpn dizini altına taşıyalım.
cp -R /usr/share/doc/openvpn-2.2.2/easy-rsa/ /etc/openvpn/
NOT : Eğer bu komutun işletilmesi esnasında aşağıdaki gibi bir hata alırsanız easy-rsa klasorunu içeren dosyalar sisteminizde yok demektir.
cannot stat `/usr/share/doc/openvpn-2.2.2/easy-rsa/’: No such file or directory
Bu gibi bir hata almanız durumda aşağıdaki komut yardımıyla bu dosyaları indirip kuruluma devam edebiliriz.
wget https://github.com/downloads/OpenVPN/easy-rsa/easy-rsa-2.2.0_master.tar.gz tar -zxvf easy-rsa-2.2.0_master.tar.gz cp -R easy-rsa-2.2.0_master/easy-rsa/ /etc/openvpn/
Eğer hata almadıysanız üstteki 3 komutu kullanmadan kuruluma devam edebilirsiniz.
8 – Eğer kurulum için Centos 6 işletim sistemi kullanıyorsanız az önce indirip açtıgımız dosyalar üzerinde ufak bir değişiklik yapmak gerekiyor. Centos 5 için bu değişikliğe gerek yok.
/etc/openvpn/easy-rsa/2.0/vars dosyası içerisindeki
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
satırını
export KEY_CONFIG=/etc/openvpn/easy-rsa/2.0/openssl-1.0.0.cnf
olarak değiştirmek yeterli olacaktır.
9 – Sertifika Otorite (CA) dosyalarını aşağıdaki komutları kullanarak oluşturalım.
cd /etc/openvpn/easy-rsa/2.0 chmod 755 * source ./vars ./vars ./clean-all ./build-ca
Bu aşamadan sonra sertifika otoriteyi oluştururken script sizden bazı bilgiler isteyecek, bu bilgilere aşağıdaki gibi cevaplar verebilirsiniz.
Country Name: Ülke bilgisi, doldurmak istemezseniz Enter’a basarak geçebilirsiniz.
State or Province Name: Bölge bilgisi, doldurmak istemezseniz Enter’a basarak geçebilirsiniz.
City: Şehir bilgisi, doldurmak istemezseniz Enter’a basarak geçebilirsiniz.
Org Name: Organizasyon ismi, doldurmak istemezseniz Enter’a basarak geçebilirsiniz.
Org Unit Name: Ogranizasyon Birim adı, doldurmak istemezseniz Enter’a basarak geçebilirsiniz.
Common Name: Sunucu Hostname bilgisi (hakancakiroglu.com gibi)
Email Address: E-mail adresi bilgisi, doldurmak istemezseniz Enter’a basarak geçebilirsiniz.
10 – CA dosyalarını oluşturdugumuza göre artık server için gerekli olan sertifika oluşturmak için gerekli adımlara geçebiliriz. Aşağıdaki komut ile dosyaları oluşturmaya başlayalım.
./build-key-server server
Bu aşamada da yine yukarıdaki gibi benzer sorulara cevap vererek sertifika için gerekli olan bilgileri doldurmanız gerekiyor. Ancak burada dikkat etmeniz gereken son bir kaç soru için y ile cevap vererek sertifikanın oluşmasını sağlamak. Dolayısıyla hepsini Enter’a basarak geçmek yerine biraz daha dikkatli davranmanızı tavsiye ediyorum. Yine de aşağıda, oluşabilecek karışıklıkları engellemek adına yukarıdaki sorulardan farklı olarak sorulacak/cevaplanacak soruları belirtiyorum.
Common Name: Sunucu ismi ya da domain ismi ya da hostname ismi gibi bir bilgi girebilirsiniz.
A challenge password: Sertifikayı daha sonra import/export işlemlerinde kullanırken şifre ile koruyabilirsiniz. Boş bırakırsanız Import/Export işlemlerinde şifre sorulmayacaktır.
Optional company name: Opsiyonel olarak Şirket bilgisi belirtebilirsiniz.
sign the certificate: y (Burada kesinlikle y ile cevaplayarak sertifikanın imzalanmasını sağlamalısınız)
1 out of 1 certificate requests: y (Bu soruya da kesinlikle y ile cevap vererek sertifika isteği dosyasının da oluşmasını sağlamalısınız.)
11 – Evet server sertifikamız ve gerekli diğer dosyaları da oluşturduk. Şimdi de SSL/TLS için kullanılacak olan Diffie Helman parametrelerini oluşturalım.
./build-dh
12 – Tüm sertifika dosyaları hazır oldğuna göre artık OpenVPN için sunucu konfigurasyon dosyalarını oluşturma işlemine geçebiliriz.
touch /etc/openvpn/server.conf vi /etc/openvpn/server.conf
vi ile açtığımız server.conf dosyası içerisine aşağıdaki parametler ile konfigurasyon dosyalarını oluşturalım
port 1194 #- port proto udp #- protocol dev tun tun-mtu 1500 tun-mtu-extra 32 mssfix 1450 reneg-sec 0 ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt cert /etc/openvpn/easy-rsa/2.0/keys/server.crt key /etc/openvpn/easy-rsa/2.0/keys/server.key dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so /etc/pam.d/login #- Comment this line if you are using FreeRADIUS #plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnf #- Uncomment this line if you are using FreeRADIUS client-cert-not-required username-as-common-name server 10.8.0.0 255.255.255.0 push "redirect-gateway def1" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" keepalive 5 30 comp-lzo persist-key persist-tun status 1194.log verb 3
13 – Ayrıca OpenVPN’i başlatmadan önce selinux’un kapalı oldugundan emin olalım. selinux’u muhtemelen daha önceki işlemlerinizde kapatmışsınızdır ancak kontrol etmek de fayda var.
Aşağıdaki komut ile selinux açık ise geçici olarak kapatabilirsiniz. Ancak sunucu ilk reboot oldugunda selinux yeniden aktif olacaktır.
echo 0 > /selinux/enforce
selinux’u tamamen kapatmak için /etc/selinux/config dosyasını editleyerek
SELINUX=enforcing
olarak görünen satırı
SELINUX=disabled
olarak değiştirmek yeterli olacaktır.
14 – Evet artık OpenVPN uygulamasını başlatabiliriz.
service openvpn restart
Eğer bu komuttan sonra servis başlamaz ise ve /var/log/messages: altında şöyle bir uyarı alıyorsanız auth-pam kütüphanesini de indirerek sisteme eklemek gerekecektir.
PLUGIN_INIT: could not load plugin shared object /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so: /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so: cannot open shared object file: No such file or directory
Bu durumda böyle bir hata mesajı alıyorsanız aşağıdaki komutlar yardımıyla auth-pam kütüphanesini indirerek ilgili alana kopylanmasını sağlayalım.
64Bit:
wget http://safesrv.net/public/openvpn-auth-pam.zip
32Bit:
wget http://safesrv.net/public/dl/openvpn-auth-pam.zip
Aşağıdaki komut ile dosyayı zipten çıkaralım:
unzip openvpn-auth-pam.zip
Aşağıdaki komut ile açtığımız dosyaları OpenVPN dizinine taşıyalım:
mv openvpn-auth-pam.so /etc/openvpn/openvpn-auth-pam.so
Daha önce oluşturdugumuz server.conf dosyası içerisindeki PAM plugin satırını aşağıdaki gibi değiştirelim:
plugin /etc/openvpn/openvpn-auth-pam.so /etc/pam.d/login
Tüm çalışan OpenVPN processlerini durduralım ve yeinden başlatalım:
killall -9 openvpn service openvpn restart
15 – OpenVPN artık çalışıyor. yine de VPN’in tam olarak çalışabilmesi için interfaceler arası trafik yönlendirmeyi aktiflemek gerekiyor. Aşağıdaki komutlar ile IP Forwarding aktifleyelim.
net.ipv4.ip_forward = 1 sysctl -p
16 – Iptables kurallarımız ile yönlendirme ve NAT tanımlarını yapalım. aşağıdaki ikinci komutta ip adresi olarak belirtilen 111.111.111.111 ip adresini sunucunuzun real ip adresi ile değiştirmeyi unutmayın sakın.
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 111.111.111.111 service iptables save
17 – Network tarafında herşey tamam. Şimdi de vpn kullanacak olan kullanıcıları oluşturmak gerekiyor. Aşağıdaki komut ile sistem üzerinde yeni bir kullanıcı oluşturalım ve bu kullanıcının şifresini belirleyelim. username yazan yere oluştumak istediğiniz kullanıcınnı adı ile değiştirmeyi unutmayın. Bu iki komut sonrası 2 defa şifre yazarak kullanıcının şifresini belirlemeli ve doğrulamalısınız.
useradd username -s /bin/false passwd username
Eğer var olan bir kullanıcıyı silmek isterseniz aşağıdaki konutu kullanabilirsiniz. usenrame alanına silmek istediğinzi kullanıcının adı ile değiştirmelisiniz.
userdel username
18 – Son olarak sisteme baglanmak için kullanılacak OpenVPN profili oluşturalım. Bu profil dosyasını daha sonra iPhone,Android,MAC ya da Windows işletim sistemlerinden herhangi birine kurdugunuz OpenVPN client üzerinde kullanacağız.
server.ovpn adında bir dosya oluşturmak gerekiyor. Oluşturdugumuz bu dosyayı daha sonra mail ile OpenVPN client yüklü telefonunuza, Windows işletim sistemi yüklü bilgisayarınıza ya da Ubuntu yüklü bilgisayarınıza ya da MAC’inize göndererek/indirerek VPN sisteminize bağlanabilirsiniz.
Bu dosyayı oluşturmak için aşağıdaki konfigurasyon şablonunu kullanabilirsiniz. Burada dikkat etmeniz gereken ilk konu 4. satırdaki remote ile başlayan satırdaki 123.123.123.123 ip adresini sizin sunucunuzun real ip adresi ile değiştimek.
Bir de en sonda <ca> … </ca> tagları arasına ise
/etc/openvpn/easy-rsa/2.0/keys dizini altındaki ca.crt dosyasının içeriğini kopyalamak.
Bunu en kolay olarak
cat /etc/openvpn/easy-rsa/2.0/keys/ca.crt
komutunu yazarak ekran çıktısını Ctrl+C ile kopyalayarak bilgisayarınızda oluşturacağınız, aşağıda şablonunu verdiğim server.ovpn dosyasının en altına <ca> … </ca> tagları arasına Ctrl+P ile yapıştırmak olacaktır.
client dev tun proto udp remote 123.123.123.123 1194 # - Your server IP and OpenVPN Port resolv-retry infinite nobind tun-mtu 1500 tun-mtu-extra 32 mssfix 1450 persist-key persist-tun ca ca.crt auth-user-pass comp-lzo reneg-sec 0 verb 3 <ca> -----BEGIN CERTIFICATE----- XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX -----END CERTIFICATE----- </ca>
19 – Sunucunuz restart oldugunda da OpenVPN servisinin başlangıçta otomatik olarak açılmasını istiyorsanız aşağıdaki komut ile bunu sağlayabilirsiniz.
chkconfig openvpn on
Evet bu adıma kadar pes etmeden geldiyseniz eğer herşey hazır demektir. Tek yapmanız gereken telefonunuza ya da bilgisayarınıza OpenVPN clientini kurmak ve oluşturdugunuz server.ovpn dosyasını client’a göstererek kullanmak olacaktır.
Kurduğumuz VPN sunucunun doğru olarak çalıştığından emin olmak için VPN aktif iken www.whatismyip.com adresine girerek görünen real ip adresini kontrol edebilrisiniz. Eğer burada görünen ip adresi VPS sunucunuzun ip adresi olarak görünüyorsa yeni VPN sunucunuz hayırlı olsun 🙂
Örneğin iPhone için VPN bağlantısı aşağıdaki resimlerde belirtildiği şekilde server.ovpn dosyası import edildikten sonra useradd komutu ile eklediginiz kullanıcıadı şifre bilgileri girilerek “Connect” seçeneği seçilerek baglantı sağlanır.
Umarım faydalı bir paylaşım olmuştur, yeni bir yazıda görüşmek dileğiyle…
Kaynak : http://safesrv.net/install-openvpn-on-centos/
0 Comments.