You are here: Home » Linux » Centos 5 ve Centos 6 üzerine OpenVPN Kurulumu

Centos 5 ve Centos 6 üzerine OpenVPN Kurulumu

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.

IMG_2062

IMG_2063

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/

Filed under

Linux

| Tags:

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>