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)
| Alan | Açıklama |
|---|---|
| Ana Teknik Konu | Debian 11 üzerinde OpenVPN kurulumu |
| Çözülen Problem | Güvensiz ağlardan özel kaynaklara şifreli VPN tüneli oluşturma |
| Kullanılan Teknolojiler | OpenVPN, 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.
- 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.