Bir betik ele geçirildiğinde ya da bir uygulama yanlış yapılandırıldığında 10.x veya 192.168.x adreslerini yoklamaya başlayabilir; bu trafik sunucunuzdan çıkar ve çoğu zaman ağ tarafından kötüye kullanım bildirimlerine yol açar. Özel aralıklara giden bağlantıları engellemek, her VPS Linux Infrawire sunucusunda basit bir önlemdir. Bu rehber, bunu DNS'i veya kendi bağlantınızı bozmadan UFW ile nasıl yapacağınızı gösterir.
📋 Ön koşullar
- Ubuntu 24.04 veya Debian 12 üzerinde root SSH erişimli bir VPS (UFW ikisinde de mevcuttur).
- Temel UFW bilgisi. Henüz kurulu değilse:
Bashsudo apt update && sudo apt install -y ufw
- Güvenlik duvarını değiştirirken açık tutulan ikinci bir SSH oturumu.
🧭 Hangi aralıklar engellenmeli
| Aralık | Kullanım |
|---|---|
10.0.0.0/8 | RFC1918 özel |
172.16.0.0/12 | RFC1918 özel |
192.168.0.0/16 | RFC1918 özel |
100.64.0.0/10 | Operatör düzeyi NAT (RFC6598) |
169.254.0.0/16 | IPv4 bağlantı-yerel |
192.0.0.0/24 | IETF protokol atamaları |
198.18.0.0/15 | Karşılaştırma testleri |
fc00::/7 | IPv6 benzersiz yerel adresler |
fe80::/10 aralığını engellemeyin: IPv6, komşu keşfi için ve çoğu zaman varsayılan ağ geçidi için bağlantı-yerel adresleri kullanır; bunu engellemek IPv6'yı tamamen keser.
🔍 Önce VPS'inizin gerçekte neye ihtiyaç duyduğuna bakın
Ağ geçidiniz ya da DNS çözümleyiciniz özel bir aralıktaysa, toptan engelleme ağınızı keser. Herhangi bir kural eklemeden önce yapılandırmanıza bakın:
Baship route ip -6 route cat /etc/resolv.conf resolvectl status | grep -E 'DNS Servers|Link'
Bir çözümleyici ya da bağımlı olduğunuz bir hizmet özel adres kullanıyorsa (PRIVATE_DNS_IP), aşağıda gösterildiği gibi onu açıkça izin verin ve bu kuralı en başa koyun. Kullandığınız her şey genel adreslerdeyse bu adımı atlayabilirsiniz.
🧱 Yöntem 1: ufw deny out
SSH erişiminin sürdüğünden emin olun, sonra varsayılan ilkeleri ayarlayın. Özel aralıklara yönelik giden kurallar, SSH oturumlarınıza gelen yanıtları etkilemez.
Bashsudo ufw allow 22/tcp sudo ufw default deny incoming sudo ufw default allow outgoing
Bir istisnaya ihtiyacınız varsa, engellemelerden önce değerlendirilmesi için 1. sıraya ekleyin:
Bashsudo ufw insert 1 allow out to PRIVATE_DNS_IP port 53
Şimdi her aralık için bir engelleme ekleyin (UFW kuralları sırayla değerlendirilir, ilk eşleşen kazanır):
Bashsudo ufw deny out to 10.0.0.0/8 sudo ufw deny out to 172.16.0.0/12 sudo ufw deny out to 192.168.0.0/16 sudo ufw deny out to 100.64.0.0/10 sudo ufw deny out to 169.254.0.0/16 sudo ufw deny out to 192.0.0.0/24 sudo ufw deny out to 198.18.0.0/15 sudo ufw deny out to fc00::/7 sudo ufw enable
ufw enable, SSH bağlantılarını bozabileceği konusunda uyarabilir; 22 numaralı porta izin verildiği için y yanıtını verin. Sırayı şununla inceleyin:
Bashsudo ufw status numbered
📄 Yöntem 2: before.rules
Kullanıcı kurallarından önce uygulanan tek bir kural bloğunu tercih ediyorsanız /etc/ufw/before.rules dosyasını düzenleyin. Önce yedek alın:
Bashsudo cp /etc/ufw/before.rules /etc/ufw/before.rules.bak sudo nano /etc/ufw/before.rules
*filter bölümünde, loopback ve kurulu bağlantıları kabul eden satırlardan sonra şunları ekleyin:
TEXT1# Özel ağlara giden trafiği engelle 2-A ufw-before-output -d 10.0.0.0/8 -j REJECT 3-A ufw-before-output -d 172.16.0.0/12 -j REJECT 4-A ufw-before-output -d 192.168.0.0/16 -j REJECT 5-A ufw-before-output -d 100.64.0.0/10 -j REJECT 6-A ufw-before-output -d 169.254.0.0/16 -j REJECT
IPv6'nın kendi dosyası /etc/ufw/before6.rules vardır ve zincir adı yine ufw-before-output şeklindedir:
TEXT-A ufw-before-output -d fc00::/7 -j REJECT
PRIVATE_DNS_IP için istisnayı bu satırların hemen üstüne -A ufw-before-output -d PRIVATE_DNS_IP -j ACCEPT ile ekleyin. Yeniden yükleyin:
Bashsudo ufw reload
REJECT hemen bir hata döndürür; böylece uygulamalar zaman aşımını beklemeden hızlıca başarısız olur. Sessizliği tercih ediyorsanız -j DROP kullanın.
✅ Doğrulama
Kurallar yüklenmiş olmalı, engellenen hedefler başarısız olmalı, genel olanlar ise çalışmaya devam etmeli:
Bashsudo ufw status verbose ping -c 1 10.0.0.1 # başarısız olmalı ping -c 1 192.168.1.1 # başarısız olmalı curl -m 5 http://10.0.0.1 # başarısız olmalı ping -c 2 1.1.1.1 # başarılı olmalı dig +short example.com # çözümlenmeli curl -I https://www.debian.org
ufw deny out ile başarısız ping genellikle Operation not permitted bildirir. Paket sayaçları isabetleri doğrular:
Bashsudo iptables -L ufw-user-output -n -v sudo iptables -L ufw-before-output -n -v
🛠️ Sorun giderme
DNS çalışmayı bıraktı. Çözümleyiciniz özel bir aralıkta. sudo ufw status numbered ile sırayı kaldırın ya da düzeltin, sonra sudo ufw insert 1 allow out to PRIVATE_DNS_IP port 53 ekleyin. Ağ yapılandırmanızda genel bir çözümleyiciye de geçebilirsiniz.
Değişiklikten sonra IPv6 bozuldu. Muhtemelen fe80::/10 aralığını ya da fc00::/7 içindeki bir ağ geçidini engellediniz. Kuralı sudo ufw delete deny out to fc00::/7 ile silin ve yalnızca gerekeni yeniden ekleyin.
Özel ağdaki bir hizmete (VPN, iç API) erişemiyorsunuz. O tam adres için ufw insert 1 allow out to PRIVATE_IP ile izin kuralı ekleyin. SSH'in kendisine erişemiyorsanız sunucuya herhangi bir konsol erişimi kullanın ve sudo ufw disable çalıştırın.
🔒 VPS'iniz artık yanlışlıkla özel ağları taramıyor: bu türden kötüye kullanım bildirimleri durmalı.