Komutları üretim sunucusunda çalıştırmadan önce yedek alın ve mümkünse bir test ortamında deneyin. Yönetim erişiminizi (SSH, panel) kaybetmemek için ayar değişikliklerinde açık bir ikinci oturum bulundurun.
Bu rehberde ne yapacağız?
VPN sunucusu kurmak işin yarısıdır; asıl zorluk kullanıcıların ve yapılandırmaların zaman içinde düzenli yönetilmesidir. Ayrılan çalışanın erişiminin kapanmaması, eski anahtarların yıllarca kullanılması veya yapılandırma dosyalarının e-postayla dolaşması ciddi riskler doğurur. Bu rehberde WireGuard tabanlı bir VPN sunucusunda VPN kullanıcı yönetimini ele alıyoruz: kullanıcı ekleme, kaldırma, anahtar yenileme ve yapılandırma dağıtımı.
Rehber, çalışanlarına veya müşterilerine VPN erişimi veren hosting ve sistem yöneticilerine hitap eder. Süreci kurmak yaklaşık 40 dakika, sonraki her kullanıcı ekleme işlemi birkaç dakika sürer. Örneklerde sunucu arabirimi wg0, tünel ağı 10.8.0.0/24 ve sunucu adresi 10.8.0.1 olarak kabul edilmiştir; çalışan bir WireGuard sunucunuz olduğunu varsayıyoruz.
Gereksinimler
- Çalışan bir WireGuard sunucusu (arabirim yapılandırması
/etc/wireguard/wg0.conf) - Sunucuya sudo erişimi ve sunucunun genel IP adresi veya alan adı
- Kullanıcı listesini tutacağınız bir kayıt dosyası veya envanter sistemi
- Yapılandırmayı kullanıcıya iletmek için güvenli bir kanal (şifreli mesajlaşma, parola yöneticisi paylaşımı vb.)
- İsteğe bağlı: QR kod için
qrencodepaketi
Adım adım VPN kullanıcı yönetimi
1. Adres planı ve kayıt tablosu oluşturun
Her kullanıcıya sabit bir tünel IP adresi ayırın ve kimin hangi adresi kullandığını yazılı tutun. Böylece günlüklerde bir adresi bir kişiye bağlayabilir ve erişimi kesinleştirebilirsiniz.
kullanici,tunel_ip,genel_anahtar,eklenme_tarihi,notlar
ayse.yilmaz,10.8.0.2,<GENEL_ANAHTAR>,2025-01-10,destek ekibiBu tabloda özel anahtar tutulmaz; yalnızca genel anahtar bulunur.
2. Kullanıcı ekleyin ve yapılandırmayı üretin
En güvenli yöntem anahtar çiftinin kullanıcının cihazında üretilmesi ve yalnızca genel anahtarın size iletilmesidir. Bu mümkün değilse, anahtarı sunucuda üretip yapılandırmayı güvenli kanaldan iletin ve sunucudaki kopyayı silin. Aşağıdaki betik ikinci yöntem içindir.
sudo tee /usr/local/sbin/vpn-kullanici-ekle.sh >/dev/null <<'EOF'
#!/bin/bash
set -euo pipefail
umask 077
AD=$1
IP=$2
SUNUCU_GENEL=$(wg show wg0 public-key)
ENDPOINT=<SUNUCU_GENEL_IP_VEYA_ALAN_ADI>:51820
OZEL=$(wg genkey)
GENEL=$(echo $OZEL | wg pubkey)
PSK=$(wg genpsk)
wg set wg0 peer $GENEL preshared-key <(echo $PSK) allowed-ips $IP/32
CIKTI=/root/vpn-istemci-$AD.conf
cat > $CIKTI <<EOT
[Interface]
PrivateKey = $OZEL
Address = $IP/32
DNS = <DNS_ADRESI>
[Peer]
PublicKey = $SUNUCU_GENEL
PresharedKey = $PSK
Endpoint = $ENDPOINT
AllowedIPs = 10.8.0.0/24
PersistentKeepalive = 25
EOT
echo Yapilandirma: $CIKTI
echo Genel anahtar: $GENEL
EOF
sudo chmod 700 /usr/local/sbin/vpn-kullanici-ekle.shBetik eşi çalışan arabirime anında ekler; ancak bu ekleme kalıcı değildir. Kalıcı olması için aynı eşin [Peer] bölümünü /etc/wireguard/wg0.conf dosyasına da yazmanız gerekir. Bunun için çalışan yapılandırmayı dosyaya kaydedebilirsiniz:
sudo wg-quick save wg0Not: save komutu dosyayı çalışan duruma göre yeniden yazar; çalıştırmadan önce dosyanın bir yedeğini alın. Betik sunucunun genel anahtarını çalışan arabirimden (wg show wg0 public-key) okur; bu yüzden wg0 ayakta olmalıdır.
Tüm trafiği tünelden geçirmek istiyorsanız (AllowedIPs = 0.0.0.0/0) sunucuda NAT ve yönlendirme kurulu olmalıdır; yalnızca iç ağa erişim yeterliyse AllowedIPs değerini o ağla sınırlayın.
3. Yapılandırmayı güvenli dağıtın
- Dosyayı e-postaya düz ek olarak göndermeyin; şifreli bir kanal veya parola yöneticisi paylaşımı kullanın.
- Mobil cihazlar için QR kod yüz yüze ya da güvenli ekran paylaşımıyla gösterilebilir:
sudo qrencode -t ansiutf8 -r /root/vpn-istemci-ayse.yilmaz.conf(yönlendirme<kullanılırsa dosyayı sudo değil kendi kabuğunuz okumaya çalışır ve izin hatası alırsınız) - Dağıtım tamamlanınca sunucudaki özel anahtar içeren dosyayı güvenli biçimde silin ve kaydı güncelleyin.
- Kullanıcıya yapılandırmayı yalnızca kendi cihazında kullanmasını ve paylaşmamasını söyleyin.
4. Kullanıcıyı kaldırın
Erişimi kesmek için eşi arabirimden çıkarın, yapılandırma dosyasından silin ve kayıt tablosunu güncelleyin.
sudo wg set wg0 peer <KULLANICI_GENEL_ANAHTAR> remove
sudo wg-quick save wg0
sudo wg show wg0Ayrılan kişiyle ilgili tüm kayıtlarda adresi serbest bırakmadan önce günlük saklama sürelerinizi düşünün. Kullanıcının kullandığı diğer sistemlerdeki anahtarlarını da aynı gün iptal edin.
5. Anahtar yenileme (rotasyon)
Kullanıcı anahtarını belirli aralıklarla veya cihaz kaybında yenileyin. Süreç: yeni anahtar çifti üret, yeni eşi ekle, kullanıcıya yeni yapılandırmayı ver, doğrulama sonrası eski eşi kaldır. Böylece kesinti oluşmaz.
sudo /usr/local/sbin/vpn-kullanici-ekle.sh ayse.yilmaz-yeni 10.8.0.12
# Kullanıcı yeni yapılandırmayla bağlandıktan sonra eskisini silin
sudo wg set wg0 peer <ESKI_GENEL_ANAHTAR> remove
sudo wg-quick save wg0Geçici olarak ikinci bir adres kullanılır; yenileme tamamlanınca eski adresi serbest bırakın ya da yeni yapılandırmayı eski adresle yeniden üretin.
6. Düzenli denetim yapın
sudo wg show wg0 latest-handshakesÇıktıdaki epoch zaman damgalarını okunur tarihe çevirerek uzun süredir bağlanmayan eşleri tespit edin ve sahipleriyle doğrulayıp kaldırın.
Doğrulama
Eklenen kullanıcının çalıştığını ve silinenin erişemediğini kanıtlayın:
# sunucuda
sudo wg show wg0
sudo wg show wg0 allowed-ips
# istemcide, tünel açıkken
ping -c 3 10.8.0.1Beklenen sonuç: eklenen eş wg show çıktısında ve istemci bağlandığında latest handshake görünür; istemciden 10.8.0.1 adresine ping çalışır. Kaldırılan eş listede artık yer almaz ve o anahtarla yapılan bağlantı denemelerinde el sıkışma oluşmaz.
Sık karşılaşılan sorunlar
- Kullanıcı bağlanıyor ama hiçbir yere erişemiyor:
AllowedIPsdeğeri veya sunucuda yönlendirme/NAT eksiktir. - Yeniden başlatmadan sonra kullanıcılar kayboldu: Eşler yalnızca çalışan arabirime eklendi,
wg-quick saveile dosyaya yazılmadı. - İki kullanıcı aynı IP’yi almış: Kayıt tablosu güncel tutulmamıştır; çakışan adreslerde bağlantılar kararsız olur. Adresleri tabloya göre atayın.
- Silinen kullanıcı hâlâ listede görünüyor: Eş kaldırıldığı anda trafiği kabul edilmez; listede duruyorsa
removeyanlış genel anahtarla çalıştırılmış ya dawg-quick saveyapılmadan servis yeniden başlatılıp eski dosya yüklenmiştir.wg showile doğrulayın. - Yapılandırma dosyası yanlış kişiye gitti: Eşi hemen kaldırın ve yeni anahtarla yeniden oluşturun.
Güvenlik ve bakım notları
- Özel anahtarları mümkün olduğunca sunucuda üretmeyin; mümkünse kullanıcı cihazında üretilsin ve yalnızca genel anahtar iletilsin.
- Kullanıcı yapılandırması içeren dosyaları
chmod 600ile saklayın ve dağıtımdan sonra silin. - İşten ayrılma sürecine VPN erişimini kapatmayı zorunlu bir adım olarak ekleyin.
- Kullanıcılar için farklı gruplar tanımlayın (örneğin yönetici, destek, müşteri) ve güvenlik duvarında her grubun erişimini ayrı sınırlayın.
- Önceden paylaşımlı anahtar (PresharedKey) kullanmak ek bir koruma katmanı sağlar ancak onu da özel anahtar gibi gizli tutmalısınız.
- Anahtar yenileme takvimi belirleyin ve denetim sonuçlarını kayıt altına alın.
Sık sorulan sorular
Kullanıcı sayısı arttığında WireGuard yönetimi zorlaşır mı?
Elle yönetim onlarca kullanıcıya kadar uygulanabilir. Daha fazlasında yapılandırmayı bir betik, yapılandırma yönetim aracı veya WireGuard için geliştirilmiş bir yönetim arayüzüyle otomatikleştirmeniz gerekir; bu araçlar için de erişim güvenliğini ayrıca sağlayın.
Kullanıcıya yapılandırmayı e-postayla gönderebilir miyim?
Özel anahtar içeren dosyayı e-postayla göndermek önerilmez, çünkü e-posta kutularında uzun süre kalır. Şifreli bir kanal ya da parola yöneticisi paylaşımı kullanın ve dağıtımdan sonra kopyaları silin.
Cihaz kaybolursa ne yapmalıyım?
İlgili eşi hemen sunucudan kaldırın, kullanıcıya yeni anahtarla yeni yapılandırma verin ve olayı kaydedin. Aynı cihazda saklanan diğer erişim bilgilerini de değiştirmeyi unutmayın.
İlgili sözlük terimleri
Bu kategorideki diğer rehberler
- HAProxy ile TCP yük dengeleme ve sağlık kontrolleriHAProxy ile TCP yük dengeleme kurun: frontend ve backend tanımı, sağlık kontrolleri, istatistik sayfası, yapılandırma doğrulama ve arka uç sunucu devre dışı kalma testi.
- SSH tüneli ve SOCKS proxy (yerel, uzak ve dinamik yönlendirme)SSH tüneli ile yerel (-L), uzak (-R) ve dinamik (-D) port yönlendirmeyi öğrenin; SOCKS proxy kurun, kalıcı tünel için systemd kullanın ve sunucuda tünel yetkilerini kısıtlayın.
- WireGuard ile siteden siteye (site-to-site) VPNİki ağı WireGuard ile birbirine bağlayan site-to-site VPN kurun: anahtar üretimi, iki uçta yapılandırma, IP yönlendirme, güvenlik duvarı kuralları ve el sıkışma doğrulaması.
- VPN’de DNS sızıntısı testi ve önlemiVPN kullanırken DNS isteklerinin tünel dışına sızıp sızmadığını test edin; WireGuard, OpenVPN ve Windows için ayarlarla kendi DNS çözümleyicinizi kurarak önlem alın.