WireGuard Nedir ve Neden Tercih Edilmeli?
WireGuard, son yılların en popüler VPN protokollerinden biri haline geldi. OpenVPN gibi geleneksel çözümlere kıyasla çok daha hızlı, basit ve güvenli. Çekirdek seviyesinde çalıştığı için gecikme süresi neredeyse sıfıra iniyor. Üstelik yalnızca 4000 satır kodla yazılmış olması, güvenlik denetimlerini kolaylaştırıyor. Ubuntu sunucunuzda WireGuard kurarak hem uzaktan erişim hem de site-to-site bağlantıları kurabilirsiniz. Bu yazıda, sıfırdan bir WireGuard sunucusu kurup yapılandıracağız.
Kurulum Öncesi Gereksinimler
İşlem yapacağınız sunucuda Ubuntu 20.04 veya üzeri bir sürüm olması yeterli. Root yetkilerine sahip olmanızı öneririz. Ayrıca sunucunuzun 51820 UDP portunun açık olduğundan emin olun. Güvenlik duvarı ayarlarınızı buna göre düzenleyin. Örneğin, UFW kullanıyorsanız şu komutla portu açabilirsiniz:
sudo ufw allow 51820/udp
WireGuard Kurulumu
Ubuntu'ya WireGuard kurmak için PPA eklemeniz gerekiyor. İlk olarak sistem paketlerinizi güncelleyin:
sudo apt update && sudo apt upgrade -y
Ardından WireGuard deposunu ekleyip kuralım:
sudo add-apt-repository ppa:wireguard/wireguard
sudo apt update
sudo apt install wireguard -y
Kurulum tamamlandığında wg ve wg-quick komutları kullanıma hazır olacak. Bu noktada modülün yüklendiğini kontrol etmek için lsmod | grep wireguard komutunu çalıştırabilirsiniz. Eğer bir çıktı alamazsanız, çekirdek modülünü manuel olarak yüklemek gerekebilir.
Anahtar Çifti Oluşturma
WireGuard, özel ve genel anahtar çiftleriyle çalışır. Sunucu ve her istemci için benzersiz anahtarlar oluşturmalısınız. Sunucu anahtarlarını oluşturmak için:
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
Bu komut, özel anahtarı /etc/wireguard/server_private.key dosyasına yazarken, genel anahtarı da /etc/wireguard/server_public.key dosyasına kaydeder. Anahtarların izinlerini yalnızca root okuyabilecek şekilde ayarlayın:
sudo chmod 600 /etc/wireguard/server_private.key
Sunucu Yapılandırması
Şimdi asıl yapılandırma dosyasını oluşturuyoruz. /etc/wireguard/wg0.conf dosyasını aşağıdaki gibi düzenleyin:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = (sunucu_özel_anahtarınız)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Address satırı, WireGuard arayüzüne verilecek IP adresini belirler. Bu örnekte 10.0.0.0/24 alt ağını kullandık. PrivateKey kısmına önceden oluşturduğunuz özel anahtarı yapıştırın. PostUp ve PostDown kuralları, VPN trafiğini yönlendirmek için gerekli iptables kurallarını ekler ve kaldırır. Burada eth0 yerine kendi ana ağ arayüzünüzü yazmayı unutmayın.
Eğer sunucunuz IPv6 kullanıyorsa, benzer kuralları ip6tables ile eklemeniz gerekir. Ayrıca, paket yönlendirmeyi etkinleştirmek için /etc/sysctl.conf dosyasında net.ipv4.ip_forward=1 satırını bulup yorum işaretini kaldırın. Ardından sysctl -p ile ayarı uygulayın.
İstemci Ekleme
Her istemci için bir anahtar çifti oluşturmanız gerekir. Bunu sunucuda yapıp yapılandırma dosyasını istemciye gönderebilirsiniz. Örnek bir istemci yapılandırması /etc/wireguard/ altına client1.conf olarak kaydedilebilir:
[Interface]
PrivateKey = (istemci_özel_anahtarı)
Address = 10.0.0.2/32
DNS = 8.8.8.8
[Peer]
PublicKey = (sunucu_genel_anahtarı)
Endpoint = (sunucu_ip_adresi):51820
AllowedIPs = 0.0.0.0/0
Address istemciye verilecek IP, DNS ise kullanılacak DNS sunucusu. AllowedIPs ile tüm trafiği VPN üzerinden yönlendirebilirsiniz. İstemci dosyası hazır olduktan sonra, sunucu yapılandırmasına da bir [Peer] bölümü eklemelisiniz. Aynı wg0.conf dosyasına istemcinin genel anahtarını ve IP adresini ekleyin:
[Peer]
PublicKey = (istemci_genel_anahtarı)
AllowedIPs = 10.0.0.2/32
Böylece sunucu, istemciden gelen paketleri kabul edecek. Birden fazla istemci eklemek için her birine ayrı [Peer] bloğu oluşturmanız yeterli.
WireGuard Arayüzünü Başlatma
Yapılandırma tamamlandığında arayüzü başlatmak için:
sudo wg-quick up wg0
Başarılı olup olmadığını sudo wg show komutuyla kontrol edebilirsiniz. Eğer her şey yolundaysa, arayüzü başlangıçta otomatik olarak çalışacak şekilde etkinleştirin:
sudo systemctl enable wg-quick@wg0
Artık istemci tarafında da yapılandırma dosyasını kullanarak bağlantı kurabilirsiniz. Örneğin, bir Linux istemcide wg-quick up client1.conf komutu yeterli. Mobil veya Windows istemciler için resmi WireGuard uygulamalarını kullanabilirsiniz.
Güvenlik İpuçları
WireGuard doğası gereği güvenli olsa da, bazı ek önlemler almanızda fayda var. İlk olarak, sunucudaki wg0.conf dosyasına gereksiz [Peer] girişleri eklemeyin. Her istemci için sadece bir IP tanımlamak, olası saldırı yüzeyini daraltır. Ayrıca, istemci anahtarlarını düzenli olarak yenileyin. Özellikle mobil cihazlar kaybolduğunda, ilgili istemcinin genel anahtarını sunucudan kaldırarak erişimi hemen iptal edebilirsiniz.
Bir diğer önemli nokta, AllowedIPs ayarını mümkün olduğunca dar tutmak. Eğer tüm trafiği yönlendirmeniz gerekmiyorsa, sadece belirli alt ağları tanımlayın. Bu sayede gereksiz bant genişliği kullanımının önüne geçersiniz. Son olarak, sunucuda çalışan diğer servislerin güvenliğinden emin olun. WireGuard dışında açık port bırakmamak, saldırganların işini zorlaştıracaktır.
Sık Karşılaşılan Sorunlar ve Çözümleri
Bazı kullanıcılar bağlantı kurabildiği halde internete çıkamadığını bildiriyor. Bunun en yaygın nedeni, iptables kurallarının doğru çalışmaması. PostUp içindeki MASQUERADE kuralının doğru arayüzle eşleştiğinden emin olun. Ayrıca, allowed-ips içinde 0.0.0.0/0 kullanıyorsanız, istemcinin varsayılan yolu değiştirdiğini unutmayın. DNS çözümlemesi sorunları için istemci yapılandırmasında DNS sunucusu belirtmeyi ihmal etmeyin.
Bir diğer sorun ise port kapalılığı. Sunucunuzun 51820 UDP portuna gelen bağlantılara izin verdiğinizi kontrol edin. Ayrıca, bazı bulut sağlayıcıları (AWS, Azure) sanal güvenlik duvarlarında bu portu ayrıca açmanızı gerektirebilir. telnet veya nc gibi araçlarla portun erişilebilir olduğunu test edebilirsiniz.
Sonuç
WireGuard, Ubuntu sunucunuzda kısa sürede kurulabilecek ve yüksek performans sunacak bir VPN çözümü. Bu rehberdeki adımları takip ederek hem güvenli uzaktan erişim hem de şeffaf bir ağ altyapısı elde edebilirsiniz. Unutmayın, güvenlik sadece doğru yapılandırmayla değil, düzenli güncelleme ve izlemeyle de sağlanır. WireGuard ekibinin yayınladığı güncellemeleri takip edin ve sunucunuzu her zaman güncel tutun.