Hazırlayan : @ATK
Herkese tekrar selamlar.
İlk bölümde WireGuard’ın mantığını, sunucu hazırlığını, temel güvenlik sertleştirmelerini ve WireGuard kurulumunu işlemiştik.
Bu bölümde ise artık işin daha profesyonel tarafına geçiyoruz. WireGuard manuel yapılandırması, istemci kurulumları, wg-easy paneli, firewall hardening, Fail2Ban, DNS leak koruması, kill switch ve ileri seviye güvenlik ayarlarını detaylı şekilde ele alacağız.
Hazırsanız Kaldığımız Yerden Yani WireGuard Yapılandırmasından Devam Edelim.
WireGuard Kurulumu :
Kernel Kontrölü :
WireGuard Modülü Kontrölü :
WireGuard Paketleri :
Versiyon Kontrölü :
Kernel Modülü Yükleme :
Otomatik Yükleme :
WireGuard Manuel Yapılandırma :
Anahtar Üretimi :
Anahtar Üret :
PSK Üret :
İzinler :
Ağ Arayüzü :
Çıktıda Genelde :
wg0.conf :
İçerik :
İzin :
WireGuard Başlatma :
Durum :
Otomatik Başlat :
İstemci Yapılandırması :
İstemci Anahtarları :
PSK :
Sunucuya İstemci Ekleme :
İstemci Config :
QR Kod :
WireGuard UI (wg-easy) :
Docker Kurulumu :
Docker Compose :
docker-compose.yml :
Başlatma :
Log :
Panel Erişimi :
Nginx Reverse Proxy :
Kurulum :
SSL :
Firewall Yapılandırması :
UFW Kurulumu :
Ubuntu Üzerinden en kolay firewall yönetin aracı UFW'dir.
Durum Kontrölü :
Varsayılan Politikalar :
SSH Portunu Aç :
WireGuard Portu :
Firewall Aktif Et :
Rate Limiting :
SSH Brute Force Saldırılarını Azaltmak İçin :
nftables :
Modern Linux Sistemlerde İptables Yerine Nftables Önerilir.
Kurulum :
Servisi Başlat :
Config :
Örnek :
Uygula :
Fail2Ban Ve Saldırı Önleme :
Kurulum :
Servisi Başlat :
Jail Yapılandırması :
Örnek :
Durum Kontrölü :
SSH Jail :
DNS Güvenliği Ve Leak Koruması :
- DNS Leak Nedir :
VPN Aktif Olsa Bile DNS Sorguların ISS'ye Gidiyorsa Gizlilik Bozulur. Buna DNS Leak Denir.
Güvenli DNS Sağlayıcıları (Önerilen) :
CloudFlare - DNS : 1.1.1.1
Google - DNS : 8.8.8.8
Quad9 - DNS : 9.9.9.9
WireGuard DNS Ayarı :
İstemci Config :
DNS Leak Test :
Araçlar :
- dnsleaktest.com
- ipleak.net
- browserleaks.com
Unbound Recursive DNS :
Kurulum :
Servis Kontrölü :
Test :
Kill Switch ve Trafik Zorlaması :
Kill Switch Mantığı :
VPN Düşerse trafik normal bağlantıya kaçmamalıdır.
Kill Switch Bunu Engeller.
AllowedIPs :
Tam Tünel :
iptables Kill Switch :
Kalıcı Kayıt :
IPv6 Leak Önleme :
IPv6 Devre Dışı Bırak :
İçerik :
Uygula :
IPv6 WireGuard Yapılandırması :
- IPv4 Adresleri Tükenmektedir.
- Modern Ağlar IPv6 Kullanır.
IPv6 Adresleme :
Örnek Subnet :
Sunucu Config :
İstemci Config :
IPv6 Forwarding :
İçerik :
Uygula :
Değerli TurkHackTeam Üyeleri Buraya kadar okuyan herkese teşekkür ederim.
Bu rehber serisinde sıfırdan başlayarak profesyonel seviyede bir WireGuard VPN altyapısının nasıl kurulacağını, güvenli hale getirileceğini ve yönetileceğini detaylı şekilde ele aldık.
Artık:
- kendi VPN sunucunuzu kurabilir,
- güvenlik sertleştirmeleri yapabilir,
- istemci yönetimini sağlayabilir,
- DNS leak ve trafik sızıntılarını engelleyebilir,
- daha güvenli ve kontrollü bir altyapı oluşturabilirsiniz.
Umarım faydalı olmuştur.
Sorusu veya eklemek istediği bir şey olan herkes konu altında belirtebilir.
İyi forumlar.
Herkese tekrar selamlar.
İlk bölümde WireGuard’ın mantığını, sunucu hazırlığını, temel güvenlik sertleştirmelerini ve WireGuard kurulumunu işlemiştik.
Bu bölümde ise artık işin daha profesyonel tarafına geçiyoruz. WireGuard manuel yapılandırması, istemci kurulumları, wg-easy paneli, firewall hardening, Fail2Ban, DNS leak koruması, kill switch ve ileri seviye güvenlik ayarlarını detaylı şekilde ele alacağız.
Hazırsanız Kaldığımız Yerden Yani WireGuard Yapılandırmasından Devam Edelim.
WireGuard Kurulumu :
Bash:
uname -r
Bash:
lsmod | grep wireguard
WireGuard Paketleri :
Bash:
sudo apt install wireguard wireguard-tools
Bash:
wg --version
Kernel Modülü Yükleme :
Bash:
sudo modprobe wireguard
Bash:
echo "wireguard" | sudo tee /etc/modules-load.d/wireguard.conf
WireGuard Manuel Yapılandırma :
Anahtar Üretimi :
Bash:
cd /etc/wireguard
sudo chmod 700 /etc/wireguard
Bash:
sudo wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key
Bash:
sudo wg genpsk | sudo tee preshared.key
Bash:
sudo chmod 600 server_private.key
sudo chmod 600 preshared.key
Ağ Arayüzü :
Bash:
ip route get 8.8.8.8
Kod:
dev eth0
wg0.conf :
Bash:
sudo nano /etc/wireguard/wg0.conf
INI:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -A FORWARD -o %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -D FORWARD -o %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Bash:
sudo chmod 600 /etc/wireguard/wg0.conf
WireGuard Başlatma :
Bash:
sudo wg-quick up wg0
Bash:
sudo wg show
Bash:
sudo systemctl enable wg-quick@wg0
İstemci Yapılandırması :
İstemci Anahtarları :
Bash:
wg genkey | tee client_private.key | wg pubkey > client_public.key
Bash:
wg genpsk > client_psk.key
Sunucuya İstemci Ekleme :
wg0.confiçine :
INI:
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
PresharedKey = CLIENT_PSK
AllowedIPs = 10.0.0.2/32
PersistentKeepalive = 25
INI:
[Interface]
Address = 10.0.0.2/24
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 1.1.1.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
PresharedKey = CLIENT_PSK
Endpoint = SERVER_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Bash:
sudo apt install qrencode
qrencode -t ansiutf8 < client.conf
WireGuard UI (wg-easy) :
Docker Kurulumu :
Bash:
curl -fsSL https://get.docker.com | sh
Bash:
sudo apt install docker-compose-plugin
YAML:
version: "3.8"
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest
container_name: wg-easy
environment:
- WG_HOST=SERVER_IP
- PASSWORD=admin
- WG_PORT=51820
- WG_DEFAULT_DNS=1.1.1.1
volumes:
- ~/.wg-easy:/etc/wireguard
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
Bash:
docker compose up -d
Bash:
docker compose logs -f
Kod:
http://SERVER_IP:51821
Nginx Reverse Proxy :
Kurulum :
Bash:
sudo apt install nginx certbot python3-certbot-nginx
Bash:
sudo certbot --nginx -d vpn.domain.com
Firewall Yapılandırması :
UFW Kurulumu :
Ubuntu Üzerinden en kolay firewall yönetin aracı UFW'dir.
Durum Kontrölü :
Bash:
sudo ufw status verbose
Bash:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Bash:
sudo ufw allow 2222/tcp
Bash:
sudo ufw allow 51820/udp
Bash:
sudo ufw enable
SSH Brute Force Saldırılarını Azaltmak İçin :
Bash:
sudo ufw limit 2222/tcp
Modern Linux Sistemlerde İptables Yerine Nftables Önerilir.
Kurulum :
Bash:
sudo apt install nftables
Bash:
sudo systemctl enable nftables
sudo systemctl start nftables
Bash:
sudo nano /etc/nftables.conf
Kod:
table inet filter {
chain input {
type filter hook input priority 0;
ct state established,related accept
iif lo accept
tcp dport 2222 accept
udp dport 51820 accept
ip protocol icmp accept
counter drop
}
}
Bash:
sudo nft -f /etc/nftables.conf
Fail2Ban Ve Saldırı Önleme :
Bash:
sudo apt install fail2ban
Bash:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Bash:
sudo nano /etc/fail2ban/jail.local
INI:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 3
[sshd]
enabled = true
port = 2222
logpath = /var/log/auth.log
Bash:
sudo fail2ban-client status
Bash:
sudo fail2ban-client status sshd
DNS Güvenliği Ve Leak Koruması :
- DNS Leak Nedir :
VPN Aktif Olsa Bile DNS Sorguların ISS'ye Gidiyorsa Gizlilik Bozulur. Buna DNS Leak Denir.
CloudFlare - DNS : 1.1.1.1
Google - DNS : 8.8.8.8
Quad9 - DNS : 9.9.9.9
WireGuard DNS Ayarı :
İstemci Config :
INI:
DNS = 1.1.1.1
DNS Leak Test :
Araçlar :
- dnsleaktest.com
- ipleak.net
- browserleaks.com
Unbound Recursive DNS :
Kurulum :
Bash:
sudo apt install unbound
Bash:
sudo systemctl status unbound
Bash:
dig @127.0.0.1 google.com
Kill Switch ve Trafik Zorlaması :
Kill Switch Mantığı :
VPN Düşerse trafik normal bağlantıya kaçmamalıdır.
Kill Switch Bunu Engeller.
AllowedIPs :
Tam Tünel :
INI:
AllowedIPs = 0.0.0.0/0
iptables Kill Switch :
Bash:
iptables -A OUTPUT ! -o wg0 -m conntrack --ctstate NEW -j REJECT
Bash:
sudo apt install iptables-persistent
IPv6 Leak Önleme :
IPv6 Devre Dışı Bırak :
Bash:
sudo nano /etc/sysctl.d/99-ipv6.conf
Kod:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
Bash:
sudo sysctl -p /etc/sysctl.d/99-ipv6.conf
IPv6 WireGuard Yapılandırması :
- IPv4 Adresleri Tükenmektedir.
- Modern Ağlar IPv6 Kullanır.
IPv6 Adresleme :
Örnek Subnet :
Kod:
fd00:dead:beef::/64
INI:
[Interface]
Address = 10.0.0.1/24, fd00:dead:beef::1/64
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
INI:
[Interface]
Address = 10.0.0.2/24, fd00:dead:beef::2/64
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 1.1.1.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
IPv6 Forwarding :
Bash:
sudo nano /etc/sysctl.d/99-ipv6-forward.conf
Kod:
net.ipv6.conf.all.forwarding = 1
Bash:
sudo sysctl -p /etc/sysctl.d/99-ipv6-forward.conf
Değerli TurkHackTeam Üyeleri Buraya kadar okuyan herkese teşekkür ederim.
Bu rehber serisinde sıfırdan başlayarak profesyonel seviyede bir WireGuard VPN altyapısının nasıl kurulacağını, güvenli hale getirileceğini ve yönetileceğini detaylı şekilde ele aldık.
Artık:
- kendi VPN sunucunuzu kurabilir,
- güvenlik sertleştirmeleri yapabilir,
- istemci yönetimini sağlayabilir,
- DNS leak ve trafik sızıntılarını engelleyebilir,
- daha güvenli ve kontrollü bir altyapı oluşturabilirsiniz.
Umarım faydalı olmuştur.
Sorusu veya eklemek istediği bir şey olan herkes konu altında belirtebilir.
İyi forumlar.




