Selamlar Sayın LSociety okuru. Bu yazımda AWS EC2 Ubuntu sanal makinesi üzerinde WireGuard ile kendi VPN’imizi kuracağız.

VPN denilince akla ilk olarak yasaklı sitelere erişmek gelse de aslında tek kullanım amacı bu değildir. VPN’ler, veri güvenliğini artırmak, çevrimiçi gizliliği korumak, uzaktan çalışan ekiplerin güvenli bir şekilde şirket ağına erişmesini sağlamak gibi birçok farklı alanda kullanılır. Kendi VPN’inizi kurarak, hem trafiğinizin kontrolünü elinize alabilir hem de üçüncü taraf sağlayıcılara olan bağımlılığınızı azaltabilirsiniz.

Güvenlik tarafından örnek vermek gerekirse, en basitinden kablosuz ağ güvenliği diyebilirim. VPN kullanımı; ARP Poison ve Evil Twin gibi “Man In The Middle” saldrılarının hepsine engel olur. Konunun anlaşılması adına bu videoyu izlemenizi tavsiye ederim.

Ben kurulumu AWS EC2 üzerindeki Ubuntu 24.04 makinemle yapacağım. Buradaki yazımdan yardım alarak siz de clouddaki ücretsiz sanal makinenizi hazırlayıp VPN kurulum adımlarına geçebilirsiniz.

Hazırsanız kuruluma başlayalım.

Kurulum ve Anahtar Çifti Oluşturma

WireGuardı kuralım:

sudo apt update
sudo apt install wireguard -y

Peerlara (VPN ile birbirne bağlanacak cihazlar) güvenle bağlanabilmek için public ve private keylere ihtiyacımız var. Bu keyleri WireGuard ile oluşturacağız. İlk olarak private keyimizi oluşturalım:

wg genkey | sudo tee /etc/wireguard/private.key

Base64 formatındaki keyi ekranda göreceksiniz. İlerideki adımlarda bu keyi kullanacağız. Şimdiden bir yere not alabilir veya ihtiyaç halinde /etc/wireguard/private.key dosyasını okuyabilirsiniz.

/etc/wireguard altında private keyimizi oluşturduk. Keyin gizli kalması gerektiğinden dosya izinlerini yalnızca root kullanıcısının erişebileceği şekilde değiştirelim:

sudo chmod go= /etc/wireguard/private.key

Private keyimiz hazır olduğuna göre public keyimizi de oluşturabiliriz:

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

Bu komut ile private keyimizden bir public key türettik.

Konfigürasyonları Ayarlama

WireGuard konfigürasyonumuzu hazırlamaya başlayabiliriz. (/etc/wireguard/wg0.conf):

sudo nano /etc/wireguard/wg0.conf

Aşağıdaki ayarları dosyaya yapıştıralım:

[Interface]
PrivateKey = <PRIVATE-KEY>
Address = 10.0.0.1/24
ListenPort = 51820
  • PrivateKey satırına, private keyimizi yapıştıralım (/etc/wireguard/private.key’ dosyasında kayıtlı)
  • Adress satırı, belirlediğimiz IP aralığından WireGuard arayüzüne (interface) verilecek olan IP adresini ve alt ağ maskesini belirtir.

Tünel arayüzü ve bağlanan cihazlar için bir ip aralığı belirlememiz gerekiyor. Aşağıdaki ip aralıklarından birini seçebilirsiniz:

  • 10.0.0.010.255.255.255
  • 172.16.0.0172.31.255.255
  • 192.168.0.0192.168.255.255

Ben bu kurulumda 10.0.0.0/24 ip aralığını kullanacağım.

  • ListenPort, kurulacak bağlantılarda kullanacağımız porttur. Default olarak 51820 portu kullanılır ancak isterseniz değiştirebilirsiniz.

Dosyayı kaydedip kapatalım. (CTRL+O , ENTER , CTRL+X)

WireGuard Servisini Başlatma

Artık WireGuard Serverimizi başlatabiliriz.

Makinenin her yeniden başlatılması sırasında WireGuardı başlatmak için gerekli komutu çalıştıralım:

sudo systemctl enable wg-quick@wg0.service

WireGuard servisini başlatalım:

sudo systemctl start wg-quick@wg0.service

Servisin durumunu kontrol edelim:

sudo systemctl status wg-quick@wg0.service

Resimdeki gibi “active” yazısını gördüyseniz, WireGuard başarıyla başlatılmıştır.

Peer Kurulumu

Peer olarak yine bir Ubuntu kullanacağım.

Eğer mobil cihazdan bağlanmak isterseniz App Store ve Play Storeda WireGuard uygulamasını bulabilirsiniz, yazımın sonunda mobil uygulama için konfigürasyonları paylaşacağım.

AWS’de uyguladığımız birçok adımı peerda da uygulayacağız. İlk olarak WireGuard kuralım:

sudo apt update
sudo apt install wireguard -y

Private ve public keylerimizi oluşturalım:

wg genkey | sudo tee /etc/wireguard/private.key
sudo chmod go= /etc/wireguard/private.key
sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

Konfigürasyonlarımızı yapalım:

sudo nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <Peer Private Key>
ListenPort = 51820
Address = 10.0.0.2/24


[Peer]
PublicKey = <Server(AWS) Public Key>
Endpoint = <Server_IP:Port>
AllowedIPs = 10.0.0.1/32

Interface kısmına peer bilgilerini, Peer kısmına da bağlanacağımız WireGuard Serverin(AWS) bilgilerini giriyoruz.

Wireguard servisimizi başlatıp kontol edelim:

sudo systemctl enable wg-quick@wg0.service
sudo systemctl start wg-quick@wg0.service
sudo systemctl status wg-quick@wg0.service

Peerımızda WireGuardı başarıyla başlattıysak, WireGuard Server’a (AWS) dönüp peerımızı ekleyelim.

AWS üzerinde:

sudo wg set wg0 peer <Peer Public Key> allowed-ips 10.0.0.2

(WireGuard Peerinin public keyini girmeyi unutmayın)

Bu adımı da başarıyla tamamladıysanız iki ortam arasındaki bağlantı kurulmuş demektir.

WireGuard Serverinizden(AWS) 10.0.0.2 adresine ping atarak test edebilirsiniz:

ping 10.0.0.2

AWS Üzerinden İnternete Çıkmak İçin

WireGuard Server (AWS) Network Ayarları

Bağlantı yapacak cihazların internet trafiğini yönlendirmek için IP yönlendirmeyi ayarlayalım:

sudo nano /etc/sysctl.conf

Dosyanın sonuna bu satırı ekleyelim:

net.ipv4.ip_forward=1

Dosyayı kaydedip kapatalım. (CTRL+O , ENTER , CTRL+X)

Yeni ayarların yüklenmesi için bu komutu çalıştıralım:

sudo sysctl -p

WireGuard Server (AWS) Firewall (ufw) Ayarları

Gelen ve giden trafiğin doğru bir şekilde yönlendirilmesi için bazı firewall ayarlarının yapılması gerekiyor.

İlk olarak genel ağ arayüzünü (public network interface) bulalım:

ip route list default

Ekrana gelen çıktıda “dev” kelimesinden sonraki kısım aradığımız arayüz olacaktır. Örneğin:

Bendeki arayüz adı “ens5”. Arayüz adını bir kenara not edelim.

Firewall kurallarını eklemek için konfigürasyon dosyamıza geri dönelim:

sudo nano /etc/wireguard/wg0.conf

SaveConfig = true satırının altına bu satırları ekleyelim:

PostUp = ufw route allow in on wg0 out on ens5
PostUp = iptables -t nat -I POSTROUTING -o ens5 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on ens5
PreDown = iptables -t nat -D POSTROUTING -o ens5 -j MASQUERADE

Ağ arayüzü adınız ens5’ten farklıysa kendi ağ arayüzü adınızla değiştirmeyi unutmayın.

Dosyayı kaydedip kapatalım. (CTRL+O , ENTER , CTRL+X)

PostUp satırları, VPN bağlantısı kurulduktan sonra devreye girer. İlk olarak, ufw route allow in on wg0 out on ens5 kuralı, WireGuard arayüzü (wg0) üzerinden gelen trafiğin dış ağ arayüzü (ens5) üzerinden yönlendirilmesine izin verir. Ardından, iptables ile NAT (Ağ Adres Çevirisi) uygulanarak, dış ağa çıkarken trafiğin kaynak IP adresi gizlenir ve sistemin IP’sine çevrilir (MASQUERADE).

PreDown satırları ise VPN bağlantısı kesilmeden önce devreye girer. ufw ile yönlendirme izni iptal edilir ve iptables kuralı silinerek NAT işlemi sonlandırılır. Bu adımlar, bağlantı sonlandırılırken tüm kuralların temizlenmesini ve gereksiz açıkların oluşmasını engeller.

Son olarak konfigürasyonda belirttiğimiz portu(51820) ve ssh portumuzu ufw kurallarına ekleyelim:

sudo ufw allow 51820/udp
sudo ufw allow 22/tcp

ufw’yi başlatalım:

sudo ufw disable
sudo ufw enable

SSH bağlantısının etkilenebileceğine dair gelen mesajı onaylayıp (y) Enter’a basalım.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.