Skip to main content

Debian 11 Üzerinde OpenVPN Sunucusu Kurulumu ve Yapılandırması

Bu Rehberde Ne Öğreneceksiniz?

Bu kapsamlı rehberde Debian 11 üzerinde güvenli bir OpenVPN sunucusu kurmayı, ayrı bir CA (Certificate Authority) ile sertifikaları yönetmeyi, Diffie-Hellman ve TLS-Auth anahtarlarını oluşturmayı, istemci tarafını tek bir .ovpn dosyası halinde üretmeyi ve tüm yapılandırmayı eksiksiz bir şekilde tamamlamayı öğreneceksiniz.


🧠 Aşama 1 — Teknik Analiz (Özet)

AlanAçıklama
Ana Teknik KonuDebian 11 üzerinde OpenVPN kurulumu
Çözülen ProblemGüvensiz ağlardan özel kaynaklara şifreli VPN tüneli oluşturma
Kullanılan TeknolojilerOpenVPN, Easy-RSA, PKI, TLS-Auth, AES-256-CBC, UFW NAT
Kullanıcı AdımlarıKurulum → CSR → CA imzalama → DH → TLS-Auth → Server.conf → NAT → Servis → .ovpn

📋 Ön Gereksinimler

  • Debian 11 OpenVPN Sunucusu (db-vpn-01)
  • Debian 11 CA Sunucusu (db-ca-01)
  • Sudo yetkili kullanıcı
  • Easy-RSA kurulumu
  • UFW etkin olmalı

🚀 Adım 1 — OpenVPN Kurulumu

OpenVPN paketini Debian depolarından yükleyin:

sudo apt update
sudo apt install openvpn

🚀 Adım 2 — Sunucu Sertifikası, Anahtar ve DH/TLS-Auth Dosyaları

1️⃣ Sunucu CSR (Certificate Signing Request) oluşturma


cd ~/easy-rsa
./easyrsa gen-req server nopass

Bu işlem sunucu için bir özel anahtar ve imzalanmayı bekleyen bir sertifika isteği oluşturur.

2️⃣ Özel anahtarı OpenVPN dizinine taşıma


sudo cp pki/private/server.key /etc/openvpn/

3️⃣ CSR’yi CA sunucusuna gönderme


scp pki/reqs/server.req devuser@CA_IP:/tmp

🛡️ Adım 3 — CA Sunucusunda Sertifika İmzalama

CA tarafında CSR’yi içe aktarın:


cd ~/easy-rsa
./easyrsa import-req /tmp/server.req server

Sunucu sertifikasını imzalayın:


./easyrsa sign-req server server

Sertifikaları geri aktarın:


scp pki/issued/server.crt devuser@VPN_IP:/tmp
scp pki/ca.crt devuser@VPN_IP:/tmp

sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/

Diffie-Hellman anahtarı (DH)


cd ~/easy-rsa
./easyrsa gen-dh
sudo cp pki/dh.pem /etc/openvpn/

TLS-Auth anahtarı oluşturma


sudo openvpn --genkey secret ta.key
sudo cp ta.key /etc/openvpn/

TLS-Auth sunucuyu UDP saldırılarına karşı korur.


🚀 Adım 4 — İstemci Sertifikası ve Anahtar

Dizin oluşturma


mkdir -p ~/client-configs/keys
chmod -R 700 ~/client-configs

CSR oluşturma


cd ~/easy-rsa
./easyrsa gen-req client1 nopass
cp pki/private/client1.key ~/client-configs/keys/
scp pki/reqs/client1.req devuser@CA_IP:/tmp

CA üzerinde imzalama


./easyrsa import-req /tmp/client1.req client1
./easyrsa sign-req client client1

Geri taşı


scp pki/issued/client1.crt devuser@VPN_IP:/tmp
cp /tmp/client1.crt ~/client-configs/keys/
sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/
sudo cp ~/easy-rsa/ta.key ~/client-configs/keys/

⚙️ Adım 5 — OpenVPN Sunucu Yapılandırması

Örnek yapılandırmayı taşıyın:


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

Server.conf İçindeki Zorunlu Ayarlar TLS-Auth anahtarı


tls-auth ta.key 0

Güçlü şifreleme


cipher AES-256-CBC
auth SHA256

DH dosyası


dh dh.pem

Yetki azaltma


user nobody
group nogroup

Tüm trafiği VPN’e yönlendirme (opsiyonel)


push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

🌐 Adım 6 — IP Forwarding ve NAT Ayarı (UFW)

IP Forwarding etkinleştirme


sudo nano /etc/sysctl.conf

Aşağıdakini aktif edin:


net.ipv4.ip_forward=1

Etkinleştirin:


sudo sysctl -p

Ağ arayüzünü bulun


ip route | grep default

Genelde eth0 veya ens3 olur.

UFW NAT kuralı ekleyin


sudo nano /etc/ufw/before.rules

Ekleyin:


# START OPENVPN RULES
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
Forward policy

sudo nano /etc/default/ufw

DEFAULT_FORWARD_POLICY="ACCEPT"

Portları açın


sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
sudo ufw disable
sudo ufw enable

▶️ Adım 7 — OpenVPN Servisini Başlatma


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

🧩 Adım 8 — Tek Dosyalık İstemci Yapılandırması

Temel dosyayı oluşturun:


cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
nano ~/client-configs/base.conf

Düzenleyin:


remote VPN_IP 1194
user nobody
group nogroup
key-direction 1
cipher AES-256-CBC
auth SHA256

#ca ca.crt
#cert client.crt
#key client.key
#tls-auth ta.key 1

🔧 make_config.sh — Tek .ovpn Dosyası Üreticisi


nano ~/client-configs/make_config.sh

#!/bin/bash
KEY_DIR=/home/devuser/client-configs/keys
OUTPUT_DIR=/home/devuser/client-configs/files
BASE_CONFIG=/home/devuser/client-configs/base.conf

cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/${1}.key \
<(echo -e '</key>\n<tls-auth>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-auth>') \
> ${OUTPUT_DIR}/${1}.ovpn

Çalıştırılabilir yapın:


chmod 700 ~/client-configs/make_config.sh

📦 Adım 9 — İstemci .ovpn Dosyası Oluşturma


cd ~/client-configs
sudo ./make_config.sh client1

İndirmek için:


sftp devuser@VPN_IP:client-configs/files/client1.ovpn ~/

❓ Sıkça Sorulan Sorular (SSS)

1. OpenVPN UDP mi TCP mi daha iyi?

UDP daha hızlıdır, TCP ise engellenmiş ağlarda daha kararlı olabilir.

2. CA neden ayrı sunucuda tutulmalı?

CA anahtarının çalınması tüm VPN yapısını çökertebilir. Ayrı sunucu güvenliği katlar.

3. .ovpn içine tüm anahtarları eklemek güvenli mi?

Evet, OpenVPN tarafından tamamen desteklenmektedir.

  1. Bir istemciyi nasıl engellerim?

İptal edin:


./easyrsa revoke client1
./easyrsa gen-crl

CRL dosyasını sunucuya koyun.

5. Portu 443 yapabilir miyim?

Evet, özellikle kısıtlı kurumsal ağlarda faydalıdır.

🎯 Sonuç Artık Debian 11 üzerinde tam özellikli bir OpenVPN sunucusu kurdunuz. Tüm güvenlik ayarları, sertifika imzalama süreçleri ve istemci oluşturma adımları eksiksizdir.