Bulut sunucuda Wireguard kurulumu
WireGuard nedir?
WireGuard, yönlendirilmeli veya köprülü ağ yapılandırmalarında noktadan noktaya (P2P) güvenli bağlantılar oluşturmak için sanal özel ağ (VPN) tekniklerini uygulayan ücretsiz ve açık kaynak kodlu bir yazılım uygulaması ve iletişim protokolüdür.
Bu Vikipedi tanımı WireGuard’ın ne olduğu ve hangi amaçlarla kullanılabileceğine dair ufak da olsa bir önizlenim yaratıyor.
Bulut sağlayıcılardan kiraladığımız sanal sunucularda, genellikle açık portlardan gelen istekleri dinleyen ve işleyen birçok servis çalıştırırız. İnternetten gelen istekleri dinleyen her port, sunucumuzun atak yüzeyini arttırır ve dolayısıyla çalışan servislerin-bütünüyle sunucunun güvenliğini sağlamak, ekstra çaba ve dikkat gerektirir.
Kurumsal-çalışma ortamlarında bu tür sorunlar genellikle siber güvenlik-ağ uzmanları veya sistem yöneticileri tarafından çözülmektedir. Ama bir ev sunucusunda, sadece kullandığınız servisleri kendiniz sunup, dışa bağımlılığınızı (ekonomik veya veri paylaşımı) azaltmaya çalıştığınız bir ortamda durum böyle değildir.
Başka bir açıdan bakacak olursak, diyelim ki evde değilken ev sunucunuzdaki servislere erişmek istiyorsunuz. Fakat dizüstü bilgisayarınız ve sunucunuz artık aynı yerel ağda değiller. Yani sunucunuza ufak kağıda yazdığınız yerel IP adresi üzerinden erişemiyorunuz.
- Belki evdeki yönlendiricimin genel IP adresini çıkmadan not alıp, bu adres üzerinden port yönlendirmesi yaparak bağlanabilirim?
- Dışarıda bir kafeye oturana kadar, internet sağlayıcınız tarafından ev ağınıza yeni bir IP adresi atanması oldukça mümkündür.
- Peki ya internet sağlayımdan statik bir IP adresi satın alsam?
- Akşam saatlerinde ailenizin favori dizisini izlediği ağı statik bir IP adresine bağlamak iyi bir fikir olmayabilir.
- Öğrenciyseniz, yurt müdürünü dönem ortasında statik IP adresi satın almaya ikna etmek, oldukça zorlayıcı olabilir.
Uzun lafın kısası; sanal bulut sunucuda (statik IP’ye bağlı) bir sanal ağ (VPN) oluşturup, ev sunucunuzu ve istemci cihazlarınızı bu ağa katmak iyi bir çözüm olabilir.
Ev sunucusuna yerel ağ dışından bağlanırken WireGuard’ı tercih etmek için bazı sebepler:
- Kurulumu ve özelleştirilmesi basit
- Şifreli bağlantı
- Direkt olarak Linux çekirdeği ağ katmanında çalışır
- Atak yüzeyi ufak
- Hızlı bağlantı (OpenVPN’e kıyasla)
Sanal sunucu tarafında kurulum
wireguard paketinin sunucuya kurulumu
wireguard paketini dağıtımınızın depolarından indirip kurun.
- Fedora/RHEL tabanlı dağıtımlar için:
dnf install wireguard
- Debian tabanlı dağıtımlar için:
apt install wireguard
IP yönlendirmesini aktif hale getirin
/etc/sysctl.conf dosyasına aşağıdaki satırları ekleyin:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
Yeni ayarları yüklemek için “sysctl -p” komutunu çalıştırın.
Anahtarların ve yapılandırma dosyasının oluşturulması
Bakınız: Vikipedi - Açık anahtarlı şifreleme
Yapılandırma dosyalarının bulunacağı klasörü oluşturun ve bu klasöre geçin:
mkdir /etc/wireguard && cd /etc/wireguard
Sanal sunucu için gizli anahtar oluşturun:
wg genkey | tee /etc/wireguard/server_private.key
ÖNEMLİ: Gizli anahtarların dosya izinlerini kısıtlayıcı şekilde ayarlamak, özellikle çok kullanıcılı ortamlarda oldukça önemli ve kritiktir! Ve ASLA GİZLİ ANAHTARI PAYLAŞMAYIN!
Sanal sunucu için önceden oluşturduğumuz gizli anahtarı kullanarak bir açık anahtar oluşturun:
cat /etc/wireguard/server_private.key | wg pubkey | tee /etc/wireguard/server_public.key
/etc/wireguard/wg0.conf yolunda yapılandırma dosyasını oluşturun:
[Interface]
Address = <SUNUCU_VPN_IP>/<ALT_AĞ_EKİ> # Örneğin: 130.10.0.1/24
ListenPort = <SUNUCU_PORT>
PrivateKey = <SUNUCU_GİZLİ_ANAHTAR>
PostUp = iptables -I FORWARD -i wg0 -o <AĞ_ARABİRİM> -j ACCEPT
PostUp = iptables -t nat -I POSTROUTING -o <AĞ_ARABİRİM> -j MASQUERADE
PostUp = ip6tables -t nat -I POSTROUTING -o <AĞ_ARABİRİM> -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -o <AĞ_ARABİRİM> -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o <AĞ_ARABİRİM> -j MASQUERADE
PostDown = ip6tables -t nat -D POSTROUTING -o <AĞ_ARABİRİM> -j MASQUERADE
<SUNUCU_VPN_IP>, <ALT_AĞ_EKİ>, <SUNUCU_PORT>, <SUNUCU_GİZLİ_ANAHTAR> ve <AĞ_ARABİRİM> değerlerini kendi değerlerinizle değiştirin (süslü parantezleri silin):
- <SUNUCU_VPN_IP>: Sunucunun sanal ağdaki IP adresi
- <ALT_AĞ_EKİ>: Sanal ağın, alt ağ ön eki
- <SUNUCU_PORT>: WireGuard’ın dinleyeceği port numarası. 51820 genellikle varsayılan olarak kullanılır fakat ekstra güvenlik için boştaki başka bir portun kullanılması tavsiye edilir.
- <SUNUCU_GİZLİ_ANAHTAR>:
/etc/wireguard/server_private.keydosyasına yazdığımız gizli anahtar - <AĞ_ARABİRİM>: Statik, genel IP’ye sahip ağ arabirim denetleyicisi. Bulmak için “
ip address” komutundan faydalanabilirsiniz.
iptablesyerine; UFW, firewalld, nftables gibi başka bir güvenlik duvarı aracı kullanmaya alışıksanız,/etc/wireguard/wg0.confdosyasındakiPostUpvePostDownayarları ile belirtilen komutları, kullandığınız araca göre değiştirebilirsiniz.iptableskomutları çoğu dağıtımda büyük ihtimal çalışır.
/etc/wireguard dizinindeki dosyalara ve alt dizinlere root kullanıcısı sahip olacak ve sadece kendisi erişebilecek şekilde ayarlayalım:
chown --recursive root:root /etc/wireguard
find /etc/wireguard -type d -exec chmod 700 {} \;
find /etc/wireguard -type f -exec chmod 600 {} \;
İstemci tarafında kurulum
wireguard paketinin istemciye kurulumu
wireguard paketini dağıtımınızın depolarından indirip kurun.
- Fedora/RHEL tabanlı dağıtımlar için:
dnf install wireguard
- Debian tabanlı dağıtımlar için:
apt install wireguard
İstemci anahtarlarının ve yapılandırma dosyasının oluşturulması
İstemci için açık ve gizli anahtarları oluşturun:
mkdir /etc/wireguard && cd /etc/wireguard
wg genkey | tee /etc/wireguard/client_private.key
cat /etc/wireguard/client_private.key | wg pubkey | tee /etc/wireguard/client_public.key
/etc/wireguard/wg-client0.conf yolunda yapılandırma dosyasını oluşturun:
[Interface]
Address = <İSTEMCİ_VPN_IP>/<ALT_AĞ_EKİ> #Örneğin: 130.10.0.2/24
PrivateKey = <İSTEMCİ_GİZLİ_ANAHTAR>
[Peer]
PublicKey = <SUNUCU_AÇIK_ANAHTAR>
AllowedIPs = <AĞ_ADRESİ>/<ALT_AĞ_EKİ> #Örneğin: 130.10.0.0/24
Endpoint = <SUNUCU_AÇIK_IP>:<SUNUCU_PORT>
PersistentKeepalive = 25
/etc/wireguard dizinindeki dosyalara ve alt dizinlere root kullanıcısı sahip olacak ve sadece kendisi erişebilecek şekilde ayarlayalım:
chown --recursive root:root /etc/wireguard
find /etc/wireguard -type d -exec chmod 700 {} \;
find /etc/wireguard -type f -exec chmod 600 {} \;
İstemciyi VPN sunucu yapılandırmasına ekleme
Aşağıdaki ayarları - sunucuya bağlanacak her bir istemci için - sunucudaki /etc/wireguard/.confekleyin (örn. ev sunucusu, dizüstü bilgisayar vb.):
[Peer]
PublicKey = <İSTEMCİ_AÇIK_ANAHTAR>
AllowedIPs = <İSTEMCİ_VPN_IP>/<İZİN_VERİLEN_ALT_AĞ> #Örneğin: 130.10.0.2/32
WireGuard Systemd servisinin aktivasyonu ve başlatılması
Sunucu tarafında:
systemctl enable --now wg-quick@wg0
İstemcilerde:
systemctl enable --now wg-quick@wg-client0
Bağlantı testi
wg showkomutu ile hem sunucu hem de istemci tarafında bağlantıların durumu kontrol edilebilir:
Sunucuda:
systemctl status wg-quick@wg0.serviceping <İSTEMCİ_VPN_IP>
İstemcilerde:
systemctl status wg-quick@wg-client0.serviceping <SUNUCU_VPN_IP>


