Takip et

VPS’ler Arasında OpenVPN Kullanarak Trafiği Güvenli Hale Getirme Rehberi

VPS’ler Arasında OpenVPN Kullanarak Trafiği Güvenli Hale Getirme Rehberi VPS (Sanal Özel Sunucu) kullanımı, günümüzün dijital altyapısınd

VPS’ler Arasında OpenVPN Kullanarak Trafiği Güvenli Hale Getirme Rehberi

VPS (Sanal Özel Sunucu) kullanımı, günümüzün dijital altyapısında esneklik ve maliyet etkinliği sunan popüler bir çözümdür. Ancak, bu sunucular arasındaki veri akışı genellikle kamu ağları üzerinden gerçekleştiğinden, güvenlik endişelerini de beraberinde getirir. Hassas verilerin aktarılması, yönetimsel erişim veya sadece özel bir ağ oluşturma ihtiyacı olsun, VPS’ler arasındaki trafiği şifrelemek ve güvence altına almak kritik öneme sahiptir. Bu makale, açık kaynaklı ve güçlü bir VPN çözümü olan OpenVPN kullanarak iki veya daha fazla VPS arasında güvenli, şifreli bir tünel oluşturmanın adım adım nasıl yapılacağını detaylandırmaktadır.

Giriş: Neden VPS Trafiğini Güvenli Hale Getirmeliyiz?

Günümüzün siber tehdit ortamında, veri güvenliği her zamankinden daha önemlidir. VPS’ler arasında aktarılan veriler, potansiyel olarak kötü niyetli aktörler tarafından izlenebilir, ele geçirilebilir veya değiştirilebilir. Bu durum, özellikle veritabanı sunucuları, uygulama sunucuları, mikro servisler veya yedekleme çözümleri gibi kritik bileşenler arasında iletişim kurulduğunda büyük riskler taşır.

Güvenli bir tünel oluşturmanın başlıca nedenleri şunlardır:

* Veri Gizliliği: Tüm iletişim şifrelenir, böylece yetkisiz kişilerin verilere erişmesi engellenir.
* Veri Bütünlüğü: Verilerin aktarım sırasında değiştirilmediği garanti edilir.
* Kimlik Doğrulama: Bağlanan her iki tarafın da kimliği doğrulanır, böylece sahte sunucuların veya istemcilerin ağa sızması önlenir.
* Ağ Segmentasyonu: Kamu ağından izole edilmiş özel bir ağ katmanı oluşturarak, genel ağ üzerindeki saldırı yüzeyini azaltır.
* Güvenli Uzaktan Erişim: Yönetimsel erişimler (SSH, RDP) bile bu güvenli tünel üzerinden yapılarak ek bir güvenlik katmanı sağlanır.

OpenVPN, bu ihtiyaçları karşılamak için tasarlanmış, SSL/TLS tabanlı, son derece esnek ve yapılandırılabilir bir VPN çözümüdür. Açık kaynak kodlu olması, geniş bir topluluk tarafından sürekli denetlenmesini ve geliştirilmesini sağlar, bu da güvenilirliğini artırır. Bu rehber, OpenVPN sunucusunu bir VPS’e kurmayı, istemci VPS’ler için sertifikalar oluşturmayı ve bağlantıları yapılandırmayı kapsamlı bir şekilde ele alacaktır.

Temel Kavramlar ve Ön Hazırlık

OpenVPN kurulumuna başlamadan önce, bazı temel kavramları anlamak ve gerekli ön hazırlıkları yapmak süreci kolaylaştıracaktır.

VPN Nedir ve Neden Kullanılır?

VPN (Virtual Private Network – Sanal Özel Ağ), genel bir ağ (internet gibi) üzerinden özel bir ağ bağlantısı oluşturmayı sağlayan bir teknolojidir. VPN’ler, genellikle şifreleme ve kimlik doğrulama mekanizmaları kullanarak veri trafiğini güvence altına alır. Bu, sanki fiziksel olarak aynı yerel ağdaymışsınız gibi güvenli bir şekilde uzaktan kaynaklara erişmenizi veya farklı coğrafyalardaki ağları birbirine bağlamanızı sağlar.

VPS’ler arası senaryoda, VPN, sanki tüm VPS’leriniz aynı fiziksel veri merkezinde, aynı yerel ağ üzerinde bulunuyormuş gibi davranmalarını sağlar. Bu, servisler arası güvenli iletişimi, veritabanı erişimlerini veya dağıtık sistem mimarilerini basitleştirir ve güvence altına alır.

OpenVPN’in Avantajları

OpenVPN, diğer VPN çözümlerine göre birçok avantaj sunar:

* Güvenlik: SSL/TLS protokollerini kullanarak güçlü şifreleme ve kimlik doğrulama sağlar. Bu, endüstri standardı güvenlik protokollerine dayanır.
* Esneklik: TCP veya UDP protokolleri üzerinden çalışabilir. UDP genellikle daha hızlıdır ve oyun veya VoIP gibi gecikmeye duyarlı uygulamalar için tercih edilirken, TCP daha kararlıdır ve güvenlik duvarlarını aşmada daha başarılı olabilir.
* Açık Kaynak: Kod tabanı herkese açıktır, bu da şeffaflık sağlar ve güvenlik açıklarının daha hızlı tespit edilip düzeltilmesine olanak tanır.
* Platform Bağımsızlığı: Linux, Windows, macOS, Android ve iOS gibi birçok farklı platformda istemci desteği sunar.
* Yapılandırılabilirlik: Çok sayıda yapılandırma seçeneği ile farklı senaryolara uyarlanabilir.

Gereksinimler

Bu rehberi takip etmek için aşağıdaki gereksinimlere ihtiyacınız olacaktır:

* İki veya Daha Fazla VPS: En az bir OpenVPN sunucusu olarak görev yapacak VPS ve en az bir istemci olarak bağlanacak VPS. Tüm VPS’lerin internete açık bir IP adresine sahip olması gerekir.
* İşletim Sistemi: Tercihen Ubuntu 20.04 LTS veya Debian 11/12 gibi güncel bir Linux dağıtımı. Bu rehberde komutlar bu dağıtımlar için optimize edilmiştir.
* Root Erişimi: Tüm VPS’lerde root kullanıcısı olarak veya sudo yetkisine sahip bir kullanıcı olarak erişim.
* Temel Linux Komut Bilgisi: ssh, cd, ls, cp, mv, nano veya vi gibi temel komutlara aşinalık.
* Güvenlik Duvarı Bilgisi: ufw veya iptables gibi güvenlik duvarı yönetimini anlama ve yapılandırma yeteneği.

Topoloji

Bu rehberde, tipik bir “client-server” topolojisi kullanacağız:

* OpenVPN Sunucusu (VPS-1): Bu VPS, VPN tünelinin merkezidir. Diğer tüm istemci VPS’ler bu sunucuya bağlanacaktır. Sertifika yetkilisi (CA) de genellikle bu sunucu üzerinde oluşturulur.
* OpenVPN İstemcisi (VPS-2, VPS-3, vb.): Bu VPS’ler, OpenVPN sunucusuna bağlanacak ve güvenli tünel üzerinden iletişim kuracaktır.

Bu yapılandırma, tüm VPS’ler arasında şifreli bir iletişim ağı oluşturarak, sanki hepsi aynı yerel ağdaymış gibi davranmalarını sağlar.

OpenVPN Sunucusu Kurulumu

OpenVPN sunucusunu kuracağımız VPS’e (VPS-1) SSH ile bağlanarak başlayacağız.

Sistem Güncellemesi ve Temel Paketler

İlk adım olarak, sistemin güncel olduğundan emin olun ve gerekli temel paketleri kurun:

sudo apt update
sudo apt upgrade -y
sudo apt install -y openvpn easy-rsa

easy-rsa paketi, OpenVPN için gerekli olan sertifika yetkilisi (CA) ve sunucu/istemci sertifikalarını oluşturmak için kullanılacak araçları içerir.

Sertifika Yetkilisi (CA) Oluşturma

OpenVPN, TLS/SSL sertifikaları kullanarak kimlik doğrulama ve şifreleme yapar. Bu sertifikaları yönetmek için kendi Sertifika Yetkilimizi (CA) oluşturmamız gerekecek. easy-rsa bu süreci basitleştirir.

1. Easy-RSA Dizinini Hazırlama:
easy-rsa komutlarını kullanmak için kendi çalışma dizinimizi oluşturup oraya kopyalayacağız:

make-cadir ~/openvpn-ca
    cd ~/openvpn-ca

2. vars Dosyasını Düzenleme:
vars dosyası, CA ve sertifikalar için varsayılan değerleri içerir. Bu değerleri kendi bilgilerinize göre düzenlemelisiniz.

nano vars

Aşağıdaki satırları bulup kendi bilgilerinize göre değiştirin. Özellikle KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL ve KEY_OU alanlarını doldurun. KEY_NAME genellikle server olarak bırakılır.

set_var EASYRSA_REQ_COUNTRY    "TR"
    set_var EASYRSA_REQ_PROVINCE   "Istanbul"
    set_var EASYRSA_REQ_CITY       "Istanbul"
    set_var EASYRSA_REQ_ORG        "MyOrg"
    set_var EASYRSA_REQ_EMAIL      "admin@myorg.com"
    set_var EASYRSA_REQ_OU         "MyOrgVPN"
    set_var EASYRSA_ALGO           "rsa"
    set_var EASYRSA_DIGEST         "sha256"

Dosyayı kaydedip kapatın (Ctrl+X, Y, Enter).

3. PKI (Public Key Infrastructure) Başlatma:
Şimdi PKI ortamını başlatın:

./easyrsa init-pki

4. CA Oluşturma:
Kendi Sertifika Yetkilinizi oluşturun. Bir parola belirlemeniz istenecektir. Bu parola, CA anahtarınızı korumak için kullanılır. Common Name için bir değer girmeniz istenecektir (örn. MyOrg CA).

./easyrsa build-ca full

Bu adımda belirlediğiniz parolayı unutmayın!

Sunucu Sertifikası ve Anahtarı Oluşturma

CA’yı oluşturduktan sonra, OpenVPN sunucusu için bir sertifika ve özel anahtar oluşturmalıyız.

1. Sunucu Anahtarını Oluşturma:
Sunucu için bir sertifika isteği ve özel anahtar oluşturun. no-pass seçeneği, sunucu anahtarı için parola istememesini sağlar, bu da otomatik başlatma için önemlidir.

./easyrsa gen-req server no-pass

Common Name için server olarak bırakın veya farklı bir isim girmeniz istenirse server yazın.

2. Sunucu Sertifikasını İmzalama:
Oluşturulan sunucu sertifika isteğini CA ile imzalayın. CA parolanızı girmeniz istenecektir.

./easyrsa sign-req server server

Onaylamak için yes yazın.

Diffie-Hellman Parametreleri Oluşturma

Diffie-Hellman (DH) değişimi, OpenVPN’in anahtar değişimi için kullandığı bir yöntemdir. Bu işlem biraz zaman alabilir (5-10 dakika veya daha fazla).

./easyrsa gen-dh

TLS Auth Anahtarı Oluşturma

tls-auth anahtarı, VPN bağlantısına ek bir güvenlik katmanı ekler. Bu, DDoS saldırılarına karşı koruma sağlar ve TLS el sıkışmasından önce yetkisiz paketleri filtreler.

openvpn --genkey --secret ta.key

Gerekli Dosyaları OpenVPN Dizinine Kopyalama

Oluşturduğumuz tüm sertifika ve anahtar dosyalarını OpenVPN’in yapılandırma dizinine kopyalamamız gerekiyor.

sudo cp pki/ca.crt /etc/openvpn/
sudo cp pki/issued/server.crt /etc/openvpn/
sudo cp pki/private/server.key /etc/openvpn/
sudo cp pki/dh.pem /etc/openvpn/
sudo cp ta.key /etc/openvpn/

OpenVPN Sunucu Yapılandırma Dosyası (server.conf) Oluşturma

Şimdi OpenVPN sunucusu için ana yapılandırma dosyasını oluşturalım.

sudo nano /etc/openvpn/server.conf

Aşağıdaki örnek yapılandırmayı kopyalayıp yapıştırın. Bu yapılandırma, çoğu senaryo için iyi bir başlangıç noktasıdır.

port 1194
proto udp
dev tun

ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0 # This is the server side

server 10.8.0.0 255.255.255.0 # VPN'e bağlanacak istemcilere atanacak IP aralığı
ifconfig-pool-persist ipp.txt

push "redirect-gateway def1 bypass-dhcp" # Tüm trafiği VPN üzerinden yönlendir
push "dhcp-option DNS 8.8.8.8" # Google DNS
push "dhcp-option DNS 8.8.4.4"

client-to-client # İstemcilerin birbirleriyle iletişim kurmasına izin ver
keepalive 10 120

cipher AES-256-GCM # Güçlü şifreleme algoritması
auth SHA256 # Kimlik doğrulama algoritması
comp-lzo no # Sıkıştırma (modern CPU'larda genellikle kapalı tutulur)

user nobody
group nogroup

persist-key
persist-tun

status openvpn-status.log
log openvpn.log
verb 3
explicit-exit-notify 1

Yapılandırma Açıklamaları:

* port 1194, proto udp: OpenVPN’in 1194 UDP portunu kullanacağını belirtir. UDP genellikle TCP’den daha hızlıdır.
* dev tun: IP katmanı (Layer 3) tünelleme için bir yönlendirme cihazı oluşturur.
* ca, cert, key, dh, tls-auth: Daha önce oluşturduğumuz sertifika ve anahtar dosyalarını belirtir. tls-auth için 0 sunucu tarafını gösterir.
* server 10.8.0.0 255.255.255.0: VPN ağı için özel bir IP adresi aralığı tanımlar. İstemcilere bu aralıktan IP’ler atanacaktır.
* push "redirect-gateway def1 bypass-dhcp": İstemcilere tüm trafiği VPN üzerinden yönlendirmelerini söyler.
* push "dhcp-option DNS ...": İstemcilere kullanılacak DNS sunucularını iletir.
* client-to-client: VPN’e bağlı istemcilerin birbirleriyle doğrudan iletişim kurmasına izin verir. Bu, VPS’ler arasında doğrudan trafik yönlendirmek için önemlidir.
* keepalive 10 120: Bağlantının aktif olup olmadığını kontrol eder.
* cipher AES-256-GCM, auth SHA256: Güçlü şifreleme ve kimlik doğrulama algoritmaları.
* user nobody, group nogroup: Güvenlik için OpenVPN’i ayrıcalıksız bir kullanıcı olarak çalıştırır.
* persist-key, persist-tun: Yeniden bağlantı sırasında anahtarların ve tünel cihazının yeniden yüklenmesini önler.
* status, log, verb: Durum ve log dosyalarını belirtir, verb 3 detay seviyesini ayarlar.

Dosyayı kaydedip kapatın.

IP Yönlendirmeyi Etkinleştirme

OpenVPN sunucusunun, istemcilerden gelen trafiği internete veya diğer ağlara yönlendirebilmesi için IP yönlendirmeyi etkinleştirmemiz gerekir.

sudo nano /etc/sysctl.conf

Dosya içinde aşağıdaki satırı bulun ve yorum işaretini (#) kaldırarak etkinleştirin:

net.ipv4.ip_forward=1

Dosyayı kaydedip kapatın. Değişiklikleri uygulamak için:

sudo sysctl -p

Güvenlik Duvarı (Firewall) Ayarları

Sunucu VPS’nizde bir güvenlik duvarı çalışıyorsa (ki çalışmalıdır), OpenVPN trafiğine izin vermeniz ve NAT (Network Address Translation) kurallarını ayarlamanız gerekir. Bu rehberde ufw (Uncomplicated Firewall) kullanacağız.

1. UFW’yi Kurma ve Etkinleştirme (Gerekiyorsa):

sudo apt install ufw -y
    sudo ufw enable
    sudo ufw default deny incoming
    sudo ufw default allow outgoing

2. SSH ve OpenVPN Portlarını Açma:

sudo ufw allow ssh
    sudo ufw allow 1194/udp

3. NAT Kurallarını Ayarlama:
UFW’nin NAT kurallarını desteklemesi için /etc/default/ufw dosyasını düzenlemeniz gerekebilir.

sudo nano /etc/default/ufw

DEFAULT_FORWARD_POLICY satırını bulun ve DROP yerine ACCEPT yapın:

DEFAULT_FORWARD_POLICY="ACCEPT"

Kaydedip kapatın. Şimdi UFW’nin ana yapılandırma dosyasını düzenleyerek NAT kurallarını ekleyelim. Bu, /etc/ufw/before.rules dosyasıdır:

sudo nano /etc/ufw/before.rules

Bu dosyanın en başına, nat ve -A POSTROUTING satırlarını, mevcut filter satırından önce ekleyin. eth0 yerine kendi ana ağ arayüzünüzün adını kullanmanız gerekebilir (genellikle eth0 veya ens3). Bunu ip a komutuyla kontrol edebilirsiniz.

# START OPENVPN RULES
    # NAT table rules
    *nat
    :POSTROUTING ACCEPT [0:0]
    # Allow traffic from OpenVPN client to eth0 (change to your main network interface)
    -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    COMMIT
    # END OPENVPN RULES

    # ... (mevcut diğer kurallar) ...

    *filter
    # ... (mevcut diğer kurallar) ...

Kaydedip kapatın. Son olarak, UFW’yi yeniden başlatın:

sudo ufw disable
    sudo ufw enable

OpenVPN Servisini Başlatma ve Etkinleştirme

Artık OpenVPN sunucusunu başlatabilir ve sistem başlangıcında otomatik olarak başlamasını sağlayabiliriz.

sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server

Servisin durumunu kontrol edin:

sudo systemctl status openvpn@server

Durum active (running) olarak görünmelidir. Ayrıca, tun0 adında yeni bir ağ arayüzünün oluştuğunu ip a komutuyla kontrol edebilirsiniz.

İstemci Yapılandırması ve Sertifikaları

Her bir istemci VPS için ayrı bir sertifika ve anahtar oluşturmamız gerekecek. Bu adımları OpenVPN sunucusunu kurduğumuz VPS-1 üzerinde gerçekleştireceğiz.

İstemci Sertifikası ve Anahtarı Oluşturma

easy-rsa dizininde olduğunuzdan emin olun (cd ~/openvpn-ca).

1. İstemci Anahtarını Oluşturma:
Örnek olarak client1 adında bir istemci oluşturalım. Her yeni istemci için farklı bir isim kullanmalısınız (örn. client2, client_webserver).

./easyrsa gen-req client1 no-pass

Common Name için client1 olarak bırakın veya farklı bir isim girmeniz istenirse client1 yazın.

2. İstemci Sertifikasını İmzalama:
CA parolanızı girerek istemci sertifikasını imzalayın.

./easyrsa sign-req client client1

Onaylamak için yes yazın.

İstemci Yapılandırma Dosyası (client.ovpn) Oluşturma

Şimdi istemcinin OpenVPN sunucusuna bağlanmak için kullanacağı yapılandırma dosyasını oluşturacağız. Bu dosya, istemcinin sunucuya bağlanması için gerekli tüm bilgileri ve sertifikaları içerecektir.

mkdir -p ~/client-configs/files
chmod 700 ~/client-configs

Aşağıdaki komutlarla istemci yapılandırma dosyasını oluşturun ve gerekli sertifikaları içine gömün:

cp /etc/openvpn/ca.crt ~/client-configs/
cp /etc/openvpn/ta.key ~/client-configs/
cp pki/issued/client1.crt ~/client-configs/
cp pki/private/client1.key ~/client-configs/

cd ~/client-configs
nano base.conf

base.conf içine aşağıdaki içeriği yapıştırın:

client
dev tun
proto udp
remote YOUR_SERVER_IP 1194 # BURAYI KENDİ SUNUCUNUZUN GENEL IP ADRESİ İLE DEĞİŞTİRİN
resolv-retry infinite
nobind

persist-key
persist-tun

remote-cert-tls server

cipher AES-256-GCM
auth SHA256
comp-lzo no # Sunucu tarafında comp-lzo no ise burada da no olmalı

verb 3








ÖNEMLİ: remote YOUR_SERVER_IP 1194 satırındaki YOUR_SERVER_IP kısmını OpenVPN sunucusunun (VPS-1) genel IP adresiyle değiştirmeyi unutmayın.

Şimdi bu base.conf dosyasını kullanarak client1.ovpn dosyasını oluşturalım ve sertifika/anahtar içeriklerini içine yerleştirelim:

CLIENT_NAME="client1"
cat base.conf > "$CLIENT_NAME.ovpn"
echo "" >> "$CLIENT_NAME.ovpn"
cat ca.crt >> "$CLIENT_NAME.ovpn"
echo "" >> "$CLIENT_NAME.ovpn"
echo "" >> "$CLIENT_NAME.ovpn"
cat "$CLIENT_NAME.crt" >> "$CLIENT_NAME.ovpn"
echo "" >> "$CLIENT_NAME.ovpn"
echo "" >> "$CLIENT_NAME.ovpn"
cat "$CLIENT_NAME.key" >> "$CLIENT_NAME.ovpn"
echo "" >> "$CLIENT_NAME.ovpn"
echo "" >> "$CLIENT_NAME.ovpn"
cat ta.key >> "$CLIENT_NAME.ovpn"
echo "" >> "$CLIENT_NAME.ovpn"

Artık ~/client-configs/client1.ovpn adında, tüm gerekli sertifika ve anahtarları içeren tek bir yapılandırma dosyanız var. Bu dosyayı istemci VPS’e aktaracağız.

Gerekli Dosyaları İstemciye Kopyalama

client1.ovpn dosyasını, OpenVPN istemcisi olarak kullanacağınız VPS’e (VPS-2) güvenli bir şekilde aktarın. Bunun için scp kullanabilirsiniz:

scp ~/client-configs/client1.ovpn user@YOUR_CLIENT_VPS_IP:/home/user/

user ve YOUR_CLIENT_VPS_IP kısımlarını kendi istemci VPS’nizin kullanıcı adı ve IP adresiyle değiştirin.

İstemci VPS Üzerinde OpenVPN Kurulumu ve Bağlantı

Şimdi OpenVPN istemcisi olarak kullanacağımız VPS’e (VPS-2) SSH ile bağlanın ve gerekli kurulumları yapın.

OpenVPN Kurulumu

İstemci VPS’te OpenVPN paketini kurun:

sudo apt update
sudo apt install -y openvpn

Yapılandırma Dosyasını Yerleştirme

Daha önce kopyaladığınız client1.ovpn dosyasını OpenVPN yapılandırma dizinine taşıyın:

sudo mv /home/user/client1.ovpn /etc/openvpn/

Eğer dosya adını /etc/openvpn/client.conf yaparsanız, systemctl ile yönetimi daha kolay olur.

sudo mv /etc/openvpn/client1.ovpn /etc/openvpn/client.conf

Bağlantıyı Başlatma

Şimdi OpenVPN istemcisini başlatabilir ve otomatik başlamasını sağlayabiliriz:

sudo systemctl start openvpn@client
sudo systemctl enable openvpn@client

Servisin durumunu kontrol edin:

sudo systemctl status openvpn@client

Durum active (running) olarak görünmelidir.

Bağlantıyı Doğrulama

Bağlantının başarılı olup olmadığını kontrol etmek için birkaç test yapabiliriz:

1. Tun Arayüzünü Kontrol Etme:
İstemci VPS’te ip a komutunu çalıştırın. tun0 veya benzeri bir arayüz görmelisiniz. Bu arayüze sunucu tarafından atanan bir IP adresi (örn. 10.8.0.x) atanmış olmalıdır.

ip a show tun0

2. Ping Testi:
İstemci VPS’ten OpenVPN sunucusunun VPN IP adresine (genellikle 10.8.0.1) ping atın:

ping 10.8.0.1

Eğer ping başarılı olursa, VPN tüneli başarıyla kurulmuş demektir. Benzer şekilde, OpenVPN sunucusundan istemcinin VPN IP adresine (örn. 10.8.0.6) ping atarak bağlantıyı iki yönlü doğrulayabilirsiniz.

3. İnternet Erişimi Testi (İstemci Tüm Trafiği Yönlendiriyorsa):
Eğer redirect-gateway def1 ayarını kullandıysanız, istemci VPS’nin genel IP adresinin değişip değişmediğini kontrol edebilirsiniz.

curl ifconfig.me

Bu komut, OpenVPN sunucusunun genel IP adresini döndürmelidir. Bu, tüm trafiğin VPN üzerinden yönlendirildiğini gösterir.

Artık VPS-1 (OpenVPN sunucusu) ve VPS-2 (OpenVPN istemcisi) arasında şifreli ve güvenli bir iletişim tüneli kurulmuştur. Diğer istemci VPS’ler için de client2, client3 gibi farklı isimlerle aynı adımları tekrarlayarak sertifikalar oluşturup, yapılandırma dosyalarını aktararak VPN ağına dahil edebilirsiniz.

Ek Güvenlik Önlemleri ve İyileştirmeler

Temel kurulumu tamamladıktan sonra, OpenVPN ağınızın güvenliğini daha da artırmak için ek önlemler alabilirsiniz.

TLS-Auth Kullanımı

Bu rehberde zaten dahil edilmiş olsa da, tls-auth direktifinin önemi vurgulanmalıdır. Bu özellik, DDoS saldırılarına karşı koruma sağlar ve TLS el sıkışmasından önce yetkisiz paketleri reddederek ön kimlik doğrulama katmanı sunar. Bu, VPN sunucunuzun kaynaklarını gereksiz yere kullanmasını engeller.

Sertifika İptal Listesi (CRL) Yönetimi

Bir istemci anahtarının veya sertifikasının çalınması veya kaybolması durumunda, bu sertifikayı iptal etmek önemlidir. Sertifika İptal Listesi (CRL), CA tarafından iptal edilen sertifikaların listesini tutar.

1. Sertifika İptali:
OpenVPN sunucusunda ~/openvpn-ca dizininde:

./easyrsa revoke client1

Onaylamak için yes yazın.

2. CRL Oluşturma:

./easyrsa gen-crl

3. CRL Dosyasını OpenVPN Dizinine Kopyalama:

sudo cp pki/crl.pem /etc/openvpn/

4. Sunucu Yapılandırmasına CRL Ekleme:
/etc/openvpn/server.conf dosyasını düzenleyin ve aşağıdaki satırı ekleyin:

crl-verify crl.pem

OpenVPN servisini yeniden başlatın: sudo systemctl restart openvpn@server. Artık iptal edilen sertifikalar VPN ağına bağlanamayacaktır. Her yeni iptalden sonra CRL dosyasını güncellemeyi ve sunucuya kopyalamayı unutmayın.

Güçlü Şifreleme Algoritmaları

OpenVPN yapılandırmanızda her zaman güncel ve güçlü şifreleme algoritmaları kullanın. Bu rehberde cipher AES-256-GCM ve auth SHA256 kullanılmıştır, bunlar şu an için iyi seçeneklerdir. Gelecekteki güvenlik gelişmelerini takip ederek bu algoritmaları güncel tutmanız önemlidir.

Log Yönetimi

OpenVPN sunucu ve istemci loglarını düzenli olarak kontrol edin. Anormal bağlantı denemeleri, kimlik doğrulama hataları veya diğer şüpheli etkinlikler için logları izlemek, olası güvenlik ihlallerini erken tespit etmenizi sağlar.

* Sunucu logları: /etc/openvpn/openvpn.log veya journalctl -u openvpn@server
* İstemci logları: journalctl -u openvpn@client

Privilege Separation (Ayrıcalık Ayrımı)

OpenVPN’i nobody ve nogroup gibi ayrıcalıksız bir kullanıcı olarak çalıştırmak, bir güvenlik açığı durumunda potansiyel zararı sınırlar. Bu rehberdeki server.conf dosyasında user nobody ve group nogroup satırları zaten bulunmaktadır.

Port Değişikliği

Varsayılan OpenVPN portu olan 1194’ü kullanmak yerine, farklı bir UDP portu (örn. 443 veya yüksek numaralı bir port) kullanmak, otomatik port taramalarını azaltabilir. Bu “güvenlik by obscurity” olarak adlandırılsa da, basit saldırıları engelleyebilir. Portu değiştirirseniz, hem server.conf hem de client.ovpn dosyalarındaki port ve remote satırlarını güncellemeniz ve güvenlik duvarınızda yeni portu açmanız gerekir.

Client-to-Client İletişimi

Eğer istemcilerinizin birbirleriyle doğrudan iletişim kurmasını istiyorsanız (örn. bir uygulama sunucusunun bir veritabanı sunucusuna erişmesi), server.conf dosyasında client-to-client direktifini etkinleştirin. Bu rehberdeki örnek yapılandırma bunu zaten içermektedir.

Statik IP Atama ve İstemciye Özel Yönlendirme

Belirli istemcilere her zaman aynı VPN IP adresini atamak veya onlara özel yönlendirme kuralları sağlamak isteyebilirsiniz. Bunun için server.conf dosyasında client-config-dir ccd direktifini etkinleştirin ve /etc/openvpn/ccd dizini oluşturun. Bu dizinde, her istemcinin Common Name’i ile aynı isimde bir dosya oluşturun (örn. client1).

sudo mkdir -p /etc/openvpn/ccd
sudo nano /etc/openvpn/ccd/client1

Bu dosyanın içine, client1‘e atanacak VPN IP adresini belirtmek için:

ifconfig-push 10.8.0.10 255.255.255.0

Veya belirli bir ağa yönlendirme yapmak için:

iroute 192.168.1.0 255.255.255.0

server.conf dosyasında client-config-dir ccd satırını yorumdan çıkarın veya ekleyin ve OpenVPN servisini yeniden başlatın.

Sorun Giderme

Kurulum sırasında veya sonrasında sorunlarla karşılaşmanız durumunda, aşağıdaki yaygın sorun giderme adımlarını deneyebilirsiniz.

Bağlantı Kurulamıyor

* Güvenlik Duvarı Kontrolü: Sunucu VPS’nizin güvenlik duvarında OpenVPN portunun (varsayılan 1194/UDP) açık olduğundan emin olun. Ayrıca, NAT kurallarının doğru yapılandırıldığını kontrol edin.
* sudo ufw status verbose
* sudo iptables -L -v
* Sunucu Logları: OpenVPN sunucusunun loglarını kontrol edin. Hata mesajları veya bağlantı denemeleri hakkında bilgi bulabilirsiniz.
* sudo journalctl -u openvpn@server -f
* sudo tail -f /etc/openvpn/openvpn.log
* İstemci Logları: İstemci tarafındaki logları kontrol edin.
* sudo journalctl -u openvpn@client -f
* Sertifika ve Anahtar Hataları: VERIFY ERROR gibi mesajlar görüyorsanız, sertifikaların doğru oluşturulduğundan ve istemciye doğru şekilde kopyalandığından emin olun. Dosya izinlerini kontrol edin.
* IP Yönlendirme: Sunucu VPS’de IP yönlendirmenin etkin olduğundan emin olun (net.ipv4.ip_forward=1 ve sudo sysctl -p).
* Ağ Arayüzü: Sunucuda tun0 arayüzünün oluştuğundan ve bir IP adresi aldığından emin olun (ip a).
* Sunucu IP Adresi: İstemci yapılandırma dosyasındaki (client.ovpn) remote YOUR_SERVER_IP 1194 satırındaki IP adresinin doğru olduğundan emin olun.

İnternet Erişimi Yok (İstemci Tarafında)

Eğer istemci VPN’e bağlanıyor ancak internete erişemiyorsa:

* NAT Kuralı: Sunucu VPS’nizdeki güvenlik duvarında (örn. ufw veya iptables) NAT kuralının doğru yapılandırıldığından ve ana ağ arayüzünüzün adının doğru olduğundan emin olun (-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE).
* DNS Ayarları: İstemci yapılandırmasındaki push "dhcp-option DNS ..." satırının doğru DNS sunucularını içerdiğinden emin olun.
* redirect-gateway Direktifi: İstemci yapılandırmasında redirect-gateway def1 satırının olduğundan emin olun. Bu, tüm trafiği VPN üzerinden yönlendirir.
* IP Yönlendirme: Sunucuda IP yönlendirmenin etkin olduğundan emin olun.

Performans Sorunları

* Sıkıştırma (comp-lzo): Modern CPU’larda comp-lzo sıkıştırması genellikle performansı düşürür. comp-lzo no olarak ayarlandığından emin olun (hem sunucuda hem de istemcide).
* Protokol (proto): UDP genellikle TCP’den daha hızlıdır. Eğer TCP kullanıyorsanız ve performans sorunları yaşıyorsanız UDP’ye geçmeyi deneyin.
* Sunucu Kaynakları: Sunucu VPS’nizin CPU, bellek ve ağ bant genişliği gibi kaynaklarının yeterli olduğundan emin olun.

Sonuç

Bu kapsamlı rehberde, OpenVPN kullanarak VPS’ler arasında güvenli ve şifreli bir iletişim tüneli oluşturmanın tüm adımlarını detaylı bir şekilde ele aldık. OpenVPN sunucusunu kurmaktan, sertifika yetkilisi oluşturmaya, istemci yapılandırmalarını hazırlamaya ve bağlantıları test etmeye kadar her aşama, VPS trafiğinizi güvence altına almak için kritik öneme sahiptir.

Kurulumun ardından, tüm VPS’leriniz artık halka açık internetin risklerinden izole edilmiş, özel bir sanal ağ üzerinden güvenli bir şekilde iletişim kurabilir. Bu, hassas verilerinizi korumanın, yönetimsel erişimi güvence altına almanın ve dağıtık uygulama mimarileriniz için sağlam bir temel oluşturmanın en etkili yollarından biridir.

Unutulmamalıdır ki siber güvenlik, sürekli bir süreçtir. OpenVPN kurulumunuzu düzenli olarak izlemek, logları kontrol etmek, sertifikaları yönetmek (özellikle iptal listesi) ve güvenlik önlemlerini güncel tutmak, VPN ağınızın uzun vadeli güvenliğini sağlamak için hayati öneme sahiptir. Bu rehber, size bu yolculukta sağlam bir başlangıç noktası sunarken, kendi özel ihtiyaçlarınıza göre daha fazla özelleştirme ve iyileştirme yapma esnekliğini de sağlamaktadır.

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

Gönder

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.
Mobil sürümden çık