Takip et

OpenVPN Sunucusunu Ubuntu 14.04 Üzerine Kurulum Rehberi

OpenVPN Sunucusunu Ubuntu 14.04 Üzerine Kurulum Rehberi Giriş: OpenVPN ve VPN Kavramı Günümüzün dijital dünyasında, çevrimiçi gizlilik ve

OpenVPN Sunucusunu Ubuntu 14.04 Üzerine Kurulum Rehberi

Giriş: OpenVPN ve VPN Kavramı

Günümüzün dijital dünyasında, çevrimiçi gizlilik ve güvenlik her zamankinden daha önemli hale gelmiştir. İnternet üzerinden veri alışverişi yaparken, özellikle halka açık Wi-Fi ağlarında, bilgilerinizin kötü niyetli kişilerin eline geçme riski oldukça yüksektir. İşte bu noktada Sanal Özel Ağlar (VPN’ler) devreye girer. Bir VPN, internet bağlantınızı şifreleyerek ve IP adresinizi maskeleyerek çevrimiçi aktivitelerinizi güvence altına alan bir teknolojidir. Temel olarak, cihazınız ile internet arasında güvenli, şifreli bir tünel oluşturur. Bu tünel sayesinde, internet servis sağlayıcınız (İSS) veya diğer üçüncü taraflar çevrimiçi hareketlerinizi izleyemez, web siteleri ise gerçek IP adresinizi göremez.

OpenVPN, piyasadaki en popüler ve güvenilir açık kaynaklı VPN çözümlerinden biridir. Hem esnekliği hem de güçlü şifreleme yetenekleri sayesinde bireysel kullanıcılar ve işletmeler arasında yaygın olarak tercih edilmektedir. TCP ve UDP protokolleri üzerinde çalışabilme, çeşitli şifreleme algoritmalarını destekleme ve kolayca yapılandırılabilme gibi özellikleriyle öne çıkar. Kendi OpenVPN sunucunuzu kurmak, üçüncü taraf bir VPN sağlayıcısına güvenmek yerine, verilerinizin kontrolünün tamamen sizde olmasını sağlar. Bu sayede, internet trafiğinizin nasıl yönetildiğini ve kimler tarafından erişilebildiğini tam olarak bilirsiniz. Bu makalede, popüler ve kararlı bir Linux dağıtımı olan Ubuntu 14.04 LTS (Trusty Tahr) üzerine adım adım bir OpenVPN sunucusu kurulumunu detaylı bir şekilde inceleyeceğiz. Ubuntu 14.04, uzun süreli destek (LTS) sunan bir sürüm olması nedeniyle, belirli projeler veya eski sistemler için hala tercih edilebilir olsa da, güncel güvenlik yamaları almadığını unutmamak önemlidir. Ancak bu rehber, kurulumun temel prensiplerini ve adımlarını net bir şekilde ortaya koyacaktır.

Neden OpenVPN ve Ubuntu 14.04?

OpenVPN, birçok VPN protokolü arasında özel bir yere sahiptir. Açık kaynak kodlu olması, güvenlik uzmanları tarafından sürekli denetlenebilmesi ve potansiyel güvenlik açıklarının hızla giderilebilmesi anlamına gelir. Bu şeffaflık, kapalı kaynaklı VPN çözümlerine kıyasla daha yüksek bir güven seviyesi sunar. Ayrıca, OpenVPN’in sunduğu güçlü şifreleme algoritmaları (AES-256 gibi) ve esnek kimlik doğrulama yöntemleri (sertifikalar, kullanıcı adı/şifre) sayesinde, veri güvenliğiniz en üst düzeyde sağlanır. Çeşitli platformlarda (Windows, macOS, Linux, Android, iOS) istemci desteği sunması da onu çok yönlü bir çözüm haline getirir.

Ubuntu 14.04 ise, piyasaya sürüldüğü dönemde oldukça popüler ve yaygın olarak kullanılan bir sunucu işletim sistemiydi. LTS (Long Term Support) sürümü olması nedeniyle, beş yıl boyunca güncellemeler ve güvenlik yamaları almıştır. Bu durum, onu kararlı ve güvenilir bir platform haline getirmiştir. Her ne kadar güncel bir sürüm olmasa da, birçok eski sistemde veya belirli kurumsal ortamlarda hala aktif olarak kullanılmaktadır. Bu rehber, özellikle bu eski ancak kararlı işletim sistemi üzerinde OpenVPN sunucusu kurmak isteyenler için tasarlanmıştır. Bu kombinasyon, hem güvenli hem de kontrol edilebilir bir VPN çözümü arayanlar için sağlam bir temel oluşturur. Kendi VPN sunucunuzu kurmak, hem maliyet açısından uygun bir alternatif sunar hem de internet bağlantınız üzerinde tam kontrol sahibi olmanızı sağlar.

Ön Gereksinimler

OpenVPN sunucusu kurulumuna başlamadan önce, bazı temel gereksinimleri karşılamamız ve ön hazırlıkları yapmamız gerekmektedir. Bu adımlar, kurulum sürecinin sorunsuz ilerlemesini ve sunucunuzun güvenli bir şekilde çalışmasını sağlayacaktır.

Sunucu Seçimi ve Temel Yapılandırma

Öncelikle, bir Ubuntu 14.04 sunucusuna ihtiyacınız var. Bu, bir sanal özel sunucu (VPS) sağlayıcısından kiralanmış bir sunucu, evinizdeki bir fiziksel makine veya bir sanal makine (VM) olabilir. Sunucunuzun en az 512 MB RAM’e sahip olması tavsiye edilir, ancak daha iyi performans için 1 GB veya daha fazlası tercih edilir. İşlemci gücü ve disk alanı, kullanıcı sayısına ve beklenen trafik yoğunluğuna bağlı olacaktır.
Sunucuya SSH ile erişiminizin olduğundan emin olun. Genellikle, sunucu sağlayıcıları size bir IP adresi, kullanıcı adı ve parola sağlar.

ssh kullanıcı_adı@sunucu_ip_adresi

Güvenlik Duvarı (Firewall) Ayarları

Güvenlik duvarı (firewall), sunucunuzu yetkisiz erişimlerden korumanın ilk hattıdır. Ubuntu’da varsayılan olarak ufw (Uncomplicated Firewall) bulunur. OpenVPN’in düzgün çalışabilmesi için belirli portların açılması gerekmektedir. OpenVPN varsayılan olarak UDP 1194 portunu kullanır, ancak bu portu değiştirebilirsiniz.

İlk olarak, ufw durumunu kontrol edin:

sudo ufw status

Eğer ufw etkin değilse, etkinleştirin:

sudo ufw enable

SSH bağlantınızın kesilmemesi için SSH portunu (varsayılan 22) açın:

sudo ufw allow ssh

OpenVPN için UDP 1194 portunu açın:

sudo ufw allow 1194/udp

Eğer sunucunuzda başka servisler çalışıyorsa, onların portlarını da açmanız gerekebilir. Örneğin, web sunucusu için 80 ve 443 portları:

sudo ufw allow http
sudo ufw allow https

Değişiklikleri uyguladıktan sonra ufw durumunu tekrar kontrol edin:

sudo ufw status

Güncellemeler

Kuruluma başlamadan önce, sisteminizin güncel olduğundan emin olmak önemlidir. Bu, hem güvenlik açıklarının kapatılmasına yardımcı olur hem de paket bağımlılıklarının doğru bir şekilde çözülmesini sağlar.

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get dist-upgrade -y

Bu komutlar, paket listelerini günceller ve mevcut tüm paketleri en son sürümlerine yükseltir. -y bayrağı, tüm sorulara otomatik olarak “evet” yanıtı verilmesini sağlar. Güncelleme işlemi tamamlandıktan sonra, sunucuyu yeniden başlatmak iyi bir uygulamadır, özellikle kernel güncellemeleri yapıldıysa:

sudo reboot

Yeniden başlattıktan sonra SSH ile tekrar bağlanmanız gerekecektir.

OpenVPN Kurulumu

Ön gereksinimleri tamamladığımıza göre, OpenVPN sunucusunu ve gerekli yardımcı araçları kurmaya başlayabiliriz.

Paket Kurulumu

Ubuntu 14.04 depolarında OpenVPN paketi bulunmaktadır. Bu paketi apt-get kullanarak kolayca kurabiliriz. Ayrıca, sertifika yetkilisi (CA) oluşturmak ve sertifikaları yönetmek için Easy-RSA aracına da ihtiyacımız olacak.

sudo apt-get install openvpn easy-rsa -y

Bu komut, OpenVPN sunucu yazılımını ve Easy-RSA yardımcı programını sisteminize yükleyecektir.

Easy-RSA Kurulumu ve Yapılandırması

Easy-RSA, OpenVPN için gerekli olan sertifika yetkilisi (CA), sunucu sertifikaları ve istemci sertifikalarını oluşturmak ve yönetmek için kullanılan bir komut dosyaları koleksiyonudur. Bu araç, PKI (Public Key Infrastructure) oluşturma sürecini basitleştirir.

Easy-RSA dosyaları genellikle /usr/share/easy-rsa dizininde bulunur. Bu dosyaları güvenli bir konumda çalışmak üzere kendi dizinimize kopyalayacağız. Genellikle /etc/openvpn/easy-rsa dizini tercih edilir.

sudo make-cadir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa

Bu komutlar, /etc/openvpn/easy-rsa dizinini oluşturur ve Easy-RSA şablonlarını bu dizine kopyalar. Ardından bu dizine geçiş yaparız.

Şimdi Easy-RSA yapılandırma dosyasını düzenlememiz gerekiyor. Ubuntu 14.04’teki Easy-RSA sürümü genellikle vars adlı bir dosyaya sahiptir. Bu dosyayı düzenleyerek sertifika bilgilerini özelleştireceğiz.

sudo nano vars

Bu dosyanın içinde, KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL, KEY_OU gibi değişkenler bulunur. Bunları kendi bilgilerinize göre doldurun. Örneğin:

export KEY_COUNTRY="TR"
export KEY_PROVINCE="Istanbul"
export KEY_CITY="Istanbul"
export KEY_ORG="OpenVPNServer"
export KEY_EMAIL="admin@example.com"
export KEY_OU="IT"
export KEY_NAME="server" # Bu değeri değiştirmeyin, sunucu adı için kullanılır

KEY_SIZE gibi diğer parametreleri de kontrol edebilirsiniz. Varsayılan 2048 bit genellikle yeterlidir.
Değişiklikleri kaydedin (Ctrl+O, Enter) ve nano’dan çıkın (Ctrl+X).

Sertifika Yetkilisi (CA) Oluşturma

Sertifika Yetkilisi (CA), OpenVPN ortamınızdaki tüm sertifikaları imzalayan anahtardır. Güvenliğiniz için CA anahtarının gizli tutulması ve asla başkalarıyla paylaşılmaması çok önemlidir.

CA Dizinini Hazırlama

vars dosyasını düzenledikten sonra, Easy-RSA ortamını başlatmak için source komutunu kullanmalıyız. Bu, vars dosyasındaki değişkenlerin mevcut kabuk oturumuna yüklenmesini sağlar.

cd /etc/openvpn/easy-rsa
sudo -E bash -c 'source vars && ./clean-all'

Burada sudo -E bash -c 'source vars && ...' kullanmamızın nedeni, sudo ile çalışırken vars dosyasındaki ortam değişkenlerinin doğru bir şekilde yüklenmesini sağlamaktır. clean-all komutu, daha önce oluşturulmuş tüm anahtar ve sertifikaları temizler, böylece sıfırdan başlayabiliriz.

CA Anahtar ve Sertifika Oluşturma

Şimdi CA anahtarını ve sertifikasını oluşturabiliriz. Bu işlem sırasında sizden bazı bilgiler istenebilir, ancak vars dosyasında belirlediğiniz değerler varsayılan olarak görünecektir. Sadece Enter tuşuna basarak onaylayabilirsiniz.

sudo -E bash -c 'source vars && ./build-ca'

Bu komutu çalıştırdığınızda, sizden “Common Name” (Ortak Ad) istenecektir. Varsayılan olarak genellikle OpenVPN-CA gibi bir değer gelir. Bunu onaylayıp Enter tuşuna basarak devam edin.
Bu işlem sonucunda /etc/openvpn/easy-rsa/keys dizininde ca.crt (CA sertifikası) ve ca.key (CA özel anahtarı) dosyaları oluşacaktır. ca.key dosyasını çok iyi korumanız gerekmektedir.

Sunucu Anahtar ve Sertifika Oluşturma

CA’mızı oluşturduktan sonra, OpenVPN sunucusunun kullanacağı özel anahtarı ve sertifikayı oluşturmalıyız. Bu sertifika, CA tarafından imzalanacak ve sunucunun kimliğini doğrulayacaktır.

Sunucu Anahtarını Oluşturma

Sunucu için özel anahtarı ve sertifika imzalama isteğini (CSR) oluşturun. server adını kullanacağız, bu isim vars dosyasındaki KEY_NAME ile aynıdır.

sudo -E bash -c 'source vars && ./build-key-server server'

Bu komutu çalıştırdığınızda, yine Common Name için server değerini onaylamanız gerekecek. Ayrıca, “A challenge password” ve “An optional company name” gibi sorular sorulacaktır; bunları boş bırakıp Enter tuşuna basabilirsiniz. Son olarak, sertifikayı imzalamak ve onaylamak isteyip istemediğiniz sorulacaktır (Sign the certificate? [y/n]). y yazıp Enter tuşuna basın. Ardından “1 out of 1 certificate requests certified, commit? [y/n]” sorusuna da y yazıp Enter tuşuna basın.

Bu işlem sonucunda /etc/openvpn/easy-rsa/keys dizininde server.crt (sunucu sertifikası) ve server.key (sunucu özel anahtarı) dosyaları oluşacaktır.

Diffie-Hellman Parametreleri Oluşturma

Diffie-Hellman (DH) parametreleri, OpenVPN’in istemcilerle güvenli anahtar değişimi yapabilmesi için gereklidir. Bu işlem biraz zaman alabilir (CPU gücüne bağlı olarak birkaç dakika veya daha uzun sürebilir).

sudo -E bash -c 'source vars && ./build-dh'

Bu komut, /etc/openvpn/easy-rsa/keys dizininde dh2048.pem (veya dh4096.pem eğer KEY_SIZE’ı değiştirdiyseniz) dosyasını oluşturacaktır.

TLS Kimlik Doğrulama Anahtarı Oluşturma

OpenVPN, ek bir güvenlik katmanı olarak TLS kimlik doğrulamasını destekler. Bu, DoS saldırılarını önlemeye ve TLS el sıkışmasını gerçekleştirmeden önce bazı paketleri reddetmeye yardımcı olur.

openvpn --genkey --secret /etc/openvpn/easy-rsa/keys/ta.key

Bu komut, /etc/openvpn/easy-rsa/keys dizininde ta.key adlı bir TLS kimlik doğrulama anahtarı oluşturacaktır.

İstemci Anahtar ve Sertifika Oluşturma

Her OpenVPN istemcisinin sunucuya bağlanabilmesi için kendine ait bir özel anahtara ve CA tarafından imzalanmış bir sertifikaya ihtiyacı vardır. Her istemci için benzersiz bir anahtar/sertifika çifti oluşturmak en iyi güvenlik uygulamasıdır. Örneğin, client1 adlı bir istemci için anahtar ve sertifika oluşturalım.

İstemci Anahtarını Oluşturma

İlk istemciniz için özel anahtarı ve sertifika imzalama isteğini oluşturun:

sudo -E bash -c 'source vars && ./build-key client1'

Bu komutu çalıştırdığınızda, Common Name için client1 değerini onaylamanız gerekecek. Sunucu sertifikasında olduğu gibi, diğer soruları boş bırakabilir ve sertifikayı imzalamak için y yazıp onaylayabilirsiniz.
Bu işlem sonucunda /etc/openvpn/easy-rsa/keys dizininde client1.crt ve client1.key dosyaları oluşacaktır. Başka istemciler için de aynı adımları tekrarlayarak client2, client3 vb. adlarla sertifikalar oluşturabilirsiniz.

OpenVPN Sunucu Yapılandırması

Tüm anahtar ve sertifikalarımızı oluşturduktan sonra, OpenVPN sunucusunu yapılandırmaya geçebiliriz.

Yapılandırma Dosyalarını Kopyalama

OpenVPN sunucusu, /etc/openvpn dizinindeki yapılandırma dosyalarını kullanır. Oluşturduğumuz tüm anahtar ve sertifika dosyalarını bu dizine kopyalamamız gerekiyor.

cd /etc/openvpn/easy-rsa/keys
sudo cp ca.crt ca.key server.crt server.key dh2048.pem ta.key /etc/openvpn/

Not: ca.key dosyasını server.key ile aynı dizine kopyalamak, güvenlik açısından ideal değildir. ca.key dosyası yalnızca sertifika imzalama işlemleri için kullanılmalı ve sonrasında güvenli bir yerde saklanmalıdır. Ancak bu rehberin basitliği açısından, kurulum sürecini kolaylaştırmak için bu şekilde kopyalıyoruz. Gerçek bir üretim ortamında ca.key dosyasını ayrı ve çevrimdışı bir sistemde tutmak en güvenli yaklaşımdır.

Sunucu Yapılandırma Dosyasını Düzenleme (server.conf)

OpenVPN, örnek bir sunucu yapılandırma dosyası ile gelir. Bu dosyayı kopyalayıp kendi ihtiyaçlarımıza göre düzenleyeceğiz.

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz
sudo nano /etc/openvpn/server.conf

Şimdi server.conf dosyasını açtık. Bu dosyada birçok yorum satırı bulunur. Aşağıdaki önemli satırları bulup düzenlememiz veya eklememiz gerekecektir:

1. Port ve Protokol: Varsayılan olarak UDP 1194 kullanılır.

port 1194
    proto udp

2. Cihaz Türü: tun veya tap kullanabilirsiniz. tun genellikle daha iyi performans sunar ve IP katmanında çalışır.

dev tun

3. CA, Sertifika ve Anahtar Dosyaları: Kopyaladığımız dosyaların yollarını belirtin.

ca ca.crt
    cert server.crt
    key server.key

4. Diffie-Hellman Parametreleri:

dh dh2048.pem

5. VPN Ağı: İstemcilere atanacak IP adresleri için bir alt ağ belirleyin. Bu ağ, sunucunuzun LAN ağı ile çakışmamalıdır.

server 10.8.0.0 255.255.255.0

Bu, istemcilere 10.8.0.x aralığından IP adresleri atayacaktır.
6. İstemcilere Yönlendirme: İstemcilerin tüm internet trafiğini VPN üzerinden göndermesini sağlamak için aşağıdaki satırın yorumunu kaldırın.

push "redirect-gateway def1 bypass-dhcp"

7. DNS Sunucuları: İstemcilerin kullanacağı DNS sunucularını belirtin. Google DNS veya OpenDNS gibi genel DNS sunucularını kullanabilirsiniz.

push "dhcp-option DNS 8.8.8.8"
    push "dhcp-option DNS 8.8.4.4"

8. Kullanıcı ve Grup: Güvenlik amacıyla OpenVPN’in düşük yetkili bir kullanıcı ve grup altında çalışmasını sağlayın.

user nobody
    group nogroup

9. Sürekli Bağlantı: Bağlantı koptuğunda yeniden bağlanma ve kimlik doğrulama süresi.

persist-key
    persist-tun

10. Durum Dosyası ve Günlükler:

status openvpn-status.log
    log openvpn.log
    verb 3

11. TLS Kimlik Doğrulama:

tls-auth ta.key 0 # Bu satırı ekleyin veya yorumunu kaldırın

12. Sıkıştırma (Opsiyonel): Eğer sıkıştırma kullanmak isterseniz. Modern OpenVPN sürümlerinde lz4 veya lzo yerine compress direktifini kullanmak daha yaygındır, ancak 14.04’te lzo daha yaygın olabilir.

comp-lzo # Yorumunu kaldırın

Ancak, güvenlik uzmanları artık VPN üzerinden sıkıştırma kullanmayı tavsiye etmemektedir, çünkü belirli saldırılara (BREACH/CRIME) yol açabilir. Bu nedenle bu satırı yorumda bırakmak daha güvenli olabilir.

Değişiklikleri kaydedin (Ctrl+O, Enter) ve nano’dan çıkın (Ctrl+X).

IP Yönlendirme (IP Forwarding) Etkinleştirme

Sunucunuzun VPN istemcilerinden gelen trafiği internete yönlendirebilmesi için IP yönlendirmeyi etkinleştirmemiz gerekmektedir.

sudo nano /etc/sysctl.conf

Dosyanın içinde aşağıdaki satırı bulun ve yorumunu kaldırın (başındaki # işaretini silin):

net.ipv4.ip_forward=1

Değişikliği kaydedin ve dosyadan çıkın. Değişikliğin hemen etkili olması için aşağıdaki komutu çalıştırın:

sudo sysctl -p

NAT Kuralları Ekleme

İstemcilerin internete erişebilmesi için, sunucunuzun VPN trafiğini dış ağ arayüzünden (genellikle eth0 veya enpXsY) NAT (Network Address Translation) yapması gerekir.

Öncelikle, sunucunuzun dış ağ arayüzünün adını öğrenin:

ip route | grep default

Çıktıda dev eth0 veya dev enp0s3 gibi bir ifade göreceksiniz. Bu eth0 sizin dış arayüzünüzdür.

Şimdi ufw kurallarını düzenlememiz gerekiyor. ufw için özel bir kural dosyası oluşturacağız veya düzenleyeceğiz.

sudo nano /etc/ufw/before.rules

Bu dosyanın en başına, ilk # START OPENVPN RULES yorum satırından önce aşağıdaki satırları ekleyin:

# START OPENVPN RULES

Allow traffic from OpenVPN client to interface eth0

*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE COMMIT

END OPENVPN RULES

eth0 yerine kendi dış ağ arayüzünüzün adını yazdığınızdan emin olun. 10.8.0.0/24 ise server.conf dosyasında belirlediğiniz VPN ağıdır.

Ayrıca, ufw‘nin IP yönlendirmeye izin verdiğinden emin olmalıyız.

sudo nano /etc/default/ufw

Burada DEFAULT_FORWARD_POLICY="DROP" satırını bulun ve ACCEPT olarak değiştirin:

DEFAULT_FORWARD_POLICY="ACCEPT"

Değişiklikleri kaydedin ve ufw‘yi yeniden başlatarak kuralların uygulanmasını sağlayın:

sudo ufw disable
sudo ufw enable

ufw‘yi devre dışı bırakıp tekrar etkinleştirmek, before.rules dosyasındaki değişikliklerin uygulanmasını sağlar.

OpenVPN Servisini Başlatma ve Etkinleştirme

Tüm yapılandırmalar tamamlandıktan sonra, OpenVPN servisini başlatabilir ve sistem başlangıcında otomatik olarak başlamasını sağlayabiliriz.

sudo service openvpn start
sudo update-rc.d openvpn enable

update-rc.d komutu, Ubuntu 14.04 gibi Upstart veya System V init kullanan sistemlerde servislerin başlangıçta etkinleştirilmesini sağlar.
Servisin durumunu kontrol ederek doğru bir şekilde çalıştığından emin olun:

sudo service openvpn status

Çıktıda openvpn is running veya benzeri bir mesaj görmelisiniz. Ayrıca, sistem günlüklerini kontrol ederek herhangi bir hata olup olmadığını görebilirsiniz:

sudo tail -f /var/log/openvpn.log

İstemci Yapılandırma Dosyaları Oluşturma

İstemcilerin OpenVPN sunucunuza bağlanabilmesi için özel bir yapılandırma dosyasına (.ovpn) ve kendi sertifika/anahtar dosyalarına ihtiyacı vardır.

Temel İstemci Yapılandırması (client.ovpn)

Örnek bir istemci yapılandırma dosyası oluşturalım. Bu dosya, tüm istemciler için temel ayarları içerecektir.

mkdir -p ~/ovpn-clients
nano ~/ovpn-clients/base.conf

base.conf içine aşağıdaki satırları ekleyin:

client
dev tun
proto udp
remote SUNUCU_IP_ADRESİ 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
comp-lzo # Eğer sunucuda sıkıştırma etkinse, bu satırı da etkinleştirin
verb 3

SUNUCU_IP_ADRESİ yerine OpenVPN sunucunuzun genel IP adresini yazın. Eğer bir alan adı kullanıyorsanız, onu da yazabilirsiniz.

Gerekli Dosyaları Birleştirme

Her istemci için, base.conf dosyasıyla birlikte kendi sertifikası (client1.crt), özel anahtarı (client1.key), CA sertifikası (ca.crt) ve TLS kimlik doğrulama anahtarı (ta.key) tek bir .ovpn dosyasında birleştirilebilir. Bu, istemci tarafında kurulumu kolaylaştırır.

client1 için bir .ovpn dosyası oluşturalım:

cd ~/ovpn-clients
cp /etc/openvpn/easy-rsa/keys/ca.crt .
cp /etc/openvpn/easy-rsa/keys/ta.key .
cp /etc/openvpn/easy-rsa/keys/client1.crt .
cp /etc/openvpn/easy-rsa/keys/client1.key .

client1.ovpn dosyasını oluşturmak için bir script yazalım veya manuel olarak birleştirelim

nano generate_client_config.sh

generate_client_config.sh içine aşağıdaki içeriği ekleyin:

#!/bin/bash

CLIENT_NAME=$1
OUTPUT_DIR=~/ovpn-clients

if [ -z "$CLIENT_NAME" ]; then
    echo "Kullanım: $0 "
    exit 1
fi

if [ ! -f "$OUTPUT_DIR/ca.crt" ] || [ ! -f "$OUTPUT_DIR/ta.key" ] || \
   [ ! -f "$OUTPUT_DIR/${CLIENT_NAME}.crt" ] || [ ! -f "$OUTPUT_DIR/${CLIENT_NAME}.key" ]; then
    echo "Gerekli sertifika veya anahtar dosyaları bulunamadı. Lütfen kontrol edin."
    echo "Beklenen dosyalar: ca.crt, ta.key, ${CLIENT_NAME}.crt, ${CLIENT_NAME}.key"
    exit 1
fi

Sunucu IP adresini base.conf dosyasından alalım veya manuel olarak belirleyelim

SERVER_IP=$(grep "remote" "$OUTPUT_DIR/base.conf" | awk '{print $2}') if [ -z "$SERVER_IP" ]; then echo "base.conf dosyasında 'remote' direktifi bulunamadı veya IP adresi belirlenemedi." echo "Lütfen base.conf dosyasındaki 'remote SUNUCU_IP_ADRESİ 1194' satırını kontrol edin." exit 1 fi cat "$OUTPUT_DIR/base.conf" | sed "s/SUNUCU_IP_ADRESİ/$SERVER_IP/g" > "$OUTPUT_DIR/${CLIENT_NAME}.ovpn" echo "" >> "$OUTPUT_DIR/${CLIENT_NAME}.ovpn" cat "$OUTPUT_DIR/ca.crt" >> "$OUTPUT_DIR/${CLIENT_NAME}.ovpn" echo "" >> "$OUTPUT_DIR/${CLIENT_NAME}.ovpn" echo "" >> "$OUTPUT_DIR/${CLIENT_NAME}.ovpn" cat "$OUTPUT_DIR/${CLIENT_NAME}.crt" >> "$OUTPUT_DIR/${CLIENT_NAME}.ovpn" echo "" >> "$OUTPUT_DIR/${CLIENT_NAME}.ovpn" echo "" >> "$OUTPUT_DIR/${CLIENT_NAME}.ovpn" cat "$OUTPUT_DIR/${CLIENT_NAME}.key" >> "$OUTPUT_DIR/${CLIENT_NAME}.ovpn" echo "" >> "$OUTPUT_DIR/${CLIENT_DIR}/${CLIENT_NAME}.ovpn" echo "" >> "$OUTPUT_DIR/${CLIENT_NAME}.ovpn" cat "$OUTPUT_DIR/ta.key" >> "$OUTPUT_DIR/${CLIENT_NAME}.ovpn" echo "" >> "$OUTPUT_DIR/${CLIENT_NAME}.ovpn" echo "İstemci yapılandırma dosyası '$OUTPUT_DIR/${CLIENT_NAME}.ovpn' başarıyla oluşturuldu." echo "Bu dosyayı istemcinize güvenli bir şekilde aktarabilirsiniz."

Bu scripti çalıştırılabilir hale getirin:

chmod +x ~/ovpn-clients/generate_client_config.sh

Şimdi client1 için .ovpn dosyasını oluşturun:

~/ovpn-clients/generate_client_config.sh client1

Bu komut, ~/ovpn-clients/client1.ovpn dosyasını oluşturacaktır. Bu dosyayı güvenli bir şekilde (örneğin SCP kullanarak) istemcinize aktarmanız gerekmektedir:

scp ~/ovpn-clients/client1.ovpn kullanıcı_adı@yerel_makine_ip_adresi:/path/to/local/directory

VEYA, dosyayı doğrudan SSH terminalinde görüntüleyip kopyalayabilirsiniz:

cat ~/ovpn-clients/client1.ovpn

Ardından yerel makinenizde bir metin düzenleyiciye yapıştırıp .ovpn uzantısıyla kaydedebilirsiniz.

İstemci Bağlantısı

İstemci yapılandırma dosyanızı edindikten sonra, farklı işletim sistemlerinde OpenVPN istemcisi ile sunucunuza bağlanabilirsiniz.

Windows İstemcileri

1. OpenVPN GUI istemcisini OpenVPN resmi web sitesinden indirin ve kurun.
2. .ovpn dosyanızı C:\Program Files\OpenVPN\config klasörüne kopyalayın.
3. OpenVPN GUI uygulamasını yönetici olarak çalıştırın.
4. Sistem tepsisindeki OpenVPN simgesine sağ tıklayın, yapılandırma dosyanızı seçin ve “Connect” (Bağlan) seçeneğine tıklayın.

macOS İstemcileri

1. Tunnelblick veya OpenVPN Connect gibi bir OpenVPN istemcisi indirin ve kurun. Tunnelblick genellikle daha fazla kontrol sunar.
2. .ovpn dosyanızı çift tıklayarak veya istemci uygulamasına sürükleyerek içe aktarın.
3. Bağlantıyı başlatmak için istemci uygulamasını kullanın.

Linux İstemcileri

1. OpenVPN paketini kurun: sudo apt-get install openvpn (Ubuntu/Debian tabanlı sistemler için).
2. .ovpn dosyanızı /etc/openvpn dizinine kopyalayın veya kullanıcı dizininizde saklayın.
3. Terminalden bağlanın: sudo openvpn --config /path/to/client1.ovpn
4. Bazı dağıtımlar NetworkManager ile entegrasyon sunar, bu da grafik arayüzden bağlanmayı kolaylaştırır.

Mobil İstemciler (Android/iOS)

1. Android için Google Play Store’dan, iOS için App Store’dan “OpenVPN Connect” uygulamasını indirin.
2. .ovpn dosyanızı mobil cihazınıza aktarın (e-posta, bulut depolama veya USB kablosu aracılığıyla).
3. OpenVPN Connect uygulamasını açın ve “Import Profile” (Profil İçe Aktar) seçeneğini kullanarak .ovpn dosyanızı seçin.
4. Profilinizi seçerek bağlantıyı başlatın.

Bağlantı başarılı olduktan sonra, web siteleri sizin OpenVPN sunucunuzun IP adresini görecektir ve internet trafiğiniz şifreli tünel üzerinden geçecektir. IP adresinizi kontrol etmek için “what is my ip” gibi bir arama yapabilirsiniz.

Güvenlik ve Performans İpuçları

OpenVPN sunucunuzu kurduktan sonra, güvenliğini ve performansını artırmak için bazı ek önlemler alabilirsiniz.

Sertifika Süresi

Varsayılan olarak, Easy-RSA ile oluşturulan sertifikaların süresi 10 yıldır. Ancak, güvenlik en iyi uygulama olarak daha kısa sertifika ömürleri (örneğin 1-2 yıl) kullanmayı ve düzenli olarak yenilemeyi önerir. Bu, bir sertifikanın ele geçirilmesi durumunda risk süresini azaltır. vars dosyasındaki KEY_EXPIRE ve CA_EXPIRE değerlerini düzenleyerek bu süreyi ayarlayabilirsiniz.

VPN Günlükleri

OpenVPN sunucunuzun günlüklerini düzenli olarak kontrol edin (/var/log/openvpn.log). Bu günlükler, bağlantı sorunlarını gidermek, yetkisiz erişim denemelerini tespit etmek ve performans sorunlarını izlemek için değerli bilgiler içerir. verb seviyesini artırarak daha detaylı günlükler alabilirsiniz, ancak bu disk alanı tüketimini artırabilir.

Sunucu Güvenliği

* SSH Güvenliği: SSH için parola yerine anahtar tabanlı kimlik doğrulaması kullanın ve varsayılan 22 numaralı portu değiştirin. fail2ban gibi araçlar kullanarak brute-force saldırılarına karşı koruma sağlayın.
* Güncel Tutma: Ubuntu 14.04 EOL olmasına rağmen, eğer kullanmaya devam ediyorsanız, kurulu paketleri ve OpenVPN sürümünü güncel tutmaya çalışın (eğer mümkünse). Ancak, EOL bir sistemde güvenlik açıkları için yama beklemek gerçekçi değildir. Bu nedenle, mümkün olan en kısa sürede daha yeni bir Ubuntu sürümüne yükseltmeyi düşünmelisiniz.
* Fiziksel Güvenlik: Sunucunuzun fiziksel erişiminin kısıtlı olduğundan emin olun, özellikle ca.key gibi hassas dosyaların bulunduğu yerlerde.
* CA Anahtarının Korunması: ca.key dosyasını sunucudan ayrı, güvenli ve çevrimdışı bir yerde saklayın. Yalnızca yeni sertifikalar imzalamanız gerektiğinde sunucuya geçici olarak yükleyin.

Performans Ayarları

* Donanım: Sunucunuzun yeterli CPU, RAM ve ağ bant genişliğine sahip olduğundan emin olun. Özellikle yüksek kullanıcı sayısı veya yoğun trafik bekliyorsanız.
* Protokol: OpenVPN, TCP ve UDP üzerinde çalışabilir. UDP genellikle daha hızlıdır çünkü daha az gecikmeye sahiptir ve paket kaybına TCP gibi tepki vermez. Performans öncelikli ise UDP kullanın.
* Sıkıştırma: comp-lzo gibi sıkıştırma algoritmaları CPU kullanımını artırabilir. Eğer ağ bant genişliğiniz yeterliyse, sıkıştırmayı devre dışı bırakmak genellikle daha iyi performans sağlar. Ayrıca, yukarıda bahsedildiği gibi güvenlik riskleri de taşıyabilir.
* Şifreleme Algoritması: cipher AES-256-CBC gibi güçlü algoritmalar kullanmak önemlidir, ancak daha az güçlü algoritmalar (örneğin AES-128-CBC) daha az CPU gerektirebilir. Güvenlik ve performans arasında bir denge bulmak önemlidir.

Sorun Giderme

Kurulum sırasında veya sonrasında bazı sorunlarla karşılaşmanız olasıdır. İşte sık karşılaşılan sorunlar ve çözümleri:

Bağlantı Sorunları

* “TLS Error: TLS key negotiation failed to occur within 60 seconds”: Bu hata genellikle sunucu veya istemci tarafındaki sertifika/anahtar sorunlarından, yanlış ta.key ayarlarından veya güvenlik duvarı engellemelerinden kaynaklanır.
* ca.crt, server.crt, server.key, client.crt, client.key, ta.key dosyalarının doğru yerlerde ve doğru izinlerle olduğundan emin olun.
* server.conf ve client.ovpn dosyalarındaki tls-auth direktiflerinin ve ta.key dosya yolunun doğru olduğundan emin olun (sunucuda tls-auth ta.key 0, istemcide tls-auth ta.key 1).
* Sunucunun güvenlik duvarında (ufw) UDP 1194 portunun açık olduğundan emin olun.
* İstemcinin internet bağlantısının çalıştığından emin olun.
* “Connection Refused” veya “No Route to Host”: Sunucu IP adresinin yanlış olması, sunucunun kapalı olması veya güvenlik duvarının bağlantıyı tamamen engellemesi durumunda ortaya çıkar.
* client.ovpn dosyasındaki remote satırındaki IP adresini kontrol edin.
* Sunucunun çalıştığından ve OpenVPN servisinin etkin olduğundan emin olun.
* Sunucunun güvenlik duvarında 1194/udp portunun açık olduğunu doğrulayın.

Ağ Erişimi Sorunları

* VPN’e bağlanıyorum ama internete erişemiyorum:
* IP yönlendirme (net.ipv4.ip_forward=1) sunucuda etkin mi? sudo sysctl -p komutunu çalıştırdınız mı?
* ufw before.rules dosyasındaki NAT kuralı doğru mu? Dış arayüz adını (eth0 gibi) ve VPN ağını (10.8.0.0/24) kontrol edin. sudo ufw disable && sudo ufw enable komutunu çalıştırdınız mı?
* server.conf dosyasında push "redirect-gateway def1 bypass-dhcp" satırının yorumunu kaldırdınız mı?
* server.conf dosyasında DNS sunucuları (push "dhcp-option DNS ...") doğru ayarlandı mı?
* VPN’e bağlanıyorum ama sadece sunucunun bağlı olduğu ağdaki kaynaklara erişebiliyorum, internete değil:
* Bu genellikle NAT kuralının veya IP yönlendirmenin doğru yapılandırılmadığını gösterir. Yukarıdaki adımları tekrar kontrol edin.

Sertifika Hataları

* “Certificate has expired”: Sertifika süresi dolmuş. Yeni bir sertifika oluşturmanız ve imzalamanız gerekir.
* “VERIFY ERROR: depth=0, error=CRL has expired: C=TR, ST=Istanbul, L=Istanbul, O=OpenVPNServer, OU=IT, CN=server”: CRL (Certificate Revocation List) süresi dolmuş veya hatalı. Eğer CRL kullanıyorsanız, onu yenilemeniz gerekir. Bu rehberde CRL kullanmadık, ancak bu hata genellikle yanlış yapılandırmadan gelir.
* “VERIFY ERROR: depth=0, error=certificate is not yet valid: C=TR, ST=Istanbul, L=Istanbul, O=OpenVPNServer, OU=IT, CN=server”: Sunucu veya istemci sertifikasının geçerlilik tarihi henüz başlamamış. Sistem saatlerinin doğru olduğundan emin olun.

Sorunları giderirken, OpenVPN sunucusunun ve istemcisinin günlüklerini dikkatlice inceleyin. Günlükler genellikle sorunun kaynağı hakkında önemli ipuçları verir.

Sonuç

Bu rehberde, Ubuntu 14.04 LTS üzerine kendi OpenVPN sunucunuzu kurmak için gerekli tüm adımları detaylı bir şekilde ele aldık. Sertifika yetkilisi (CA) oluşturmaktan, sunucu ve istemci sertifikalarını imzalamaya, sunucu yapılandırmasını yapmaktan, güvenlik duvarı ve ağ ayarlarını düzenlemeye kadar her aşamayı adım adım anlattık. Kendi VPN sunucunuzu kurarak, internet trafiğiniz üzerinde tam kontrol sahibi olabilir, çevrimiçi gizliliğinizi ve güvenliğinizi artırabilirsiniz.

Unutulmamalıdır ki, Ubuntu 14.04 artık resmi güvenlik güncellemeleri almayan eski bir işletim sistemidir. Bu nedenle, eğer yeni bir kurulum yapıyorsanız veya mevcut sisteminizi güncellemeyi düşünüyorsanız, daha güncel ve desteklenen bir Ubuntu sürümünü (örneğin Ubuntu 20.04 LTS veya 22.04 LTS) kullanmanız şiddetle tavsiye edilir. Ancak, bu rehber, eski sistemlerdeki OpenVPN kurulumunun temel prensiplerini ve adımlarını anlamak için sağlam bir temel sunmaktadır. Güvenli ve özel bir çevrimiçi deneyim için kendi OpenVPN sunucunuzu başarıyla kurduğunuzu umuyoruz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.