VPN istemcilerinin tünelde birbirine erişmesini durdurun
Bir hizmete ulaşmak rotadır, başka bir istemciye ulaşmak politikadır. Eş trafiğini belirleyen iletim noktasını bulun, ardından reddi bir istemciden kanıtlayın.
İki istemci de sıçrama ana bilgisayarını açabilir ve yine de birbirlerini açmakla hiçbir işleri olmayabilir. Bir hizmete ulaşmak bir iletim kararıdır, bir eşe ulaşmak ise bir politika kararıdır ve çoğu VPN yığını bunları ayrı nesnelerde tutar. Birincisi için yapılandırdığınız hiçbir şey ikincisini uygulamaz. Bu nedenle iş kural eklemek değil, bu sunucuda eşler arası trafiği belirleyen nesneyi bulmak, reddi oraya yazmak ve bir istemciden kanıtlamaktır.
Paylaşılan hizmete giden rota eşler arasında izin değildir
İstemci alt ağını duyurmak, bir eşe başka bir istemcinin adresine doğru paketi kabloya nasıl koyacağını söyler. O paketin teslim edilip edilmeyeceği sonra, onu ileten şey tarafından belirlenir. Bir Linux ağ geçidinde bu FORWARD zinciridir; kullanıcı alanındaki bir arka planda tünelin kendi oturum tablosudur. Rota erişilebilirliği yanıtlar ve izni dokunulmadan bırakır.
Bu yüzden yalnızca rotaları okuyan bir yalıtım denetimi hiçbir şey kanıtlamaz. /24 her istemciye itilebilirken eşler arasındaki her paket iletim kancasında düşürülür. Tehlikeli durum tersidir: açık bir kural yok, izin veren bir varsayılan var ve yalıtım yalnızca kimse test etmediği için varmış gibi görünüyor.
Bir terminal açmadan önce gereksinimi tek satıra yazın. Hizmet bloğuna ve sıçrama ana bilgisayarına erişin, istemci bloğunun içinde başka hiçbir şeye erişmeyin.
Eş paketini gerçekte kimin ilettiğini bulun
İki sunucu davranışı istemci tarafından aynı görünür ve farklı kurallar gerektirir. Ya çekirdek paketi tünel arayüzünden yeniden dışarı iletir ya da arka plan paketi oturumlar arasında kopyalar ve çekirdek onu hiç görmez.
WireGuard birinci gruba aittir: eşler arası anahtarı yoktur, bu yüzden 10.8.0.4'ten 10.8.0.5'e bir paket wg0 üzerinde gelir, iletim kancasına çarpar ve AllowedIPs her iki adresi kapsadığında yeniden wg0 üzerinden yönlendirilir. OpenVPN, sunucu yapılandırmasında client-to-client ayarlandığında ikinci gruptur, çünkü bu yönerge paketi kullanıcı alanında oturumlar arasında devreder. Herhangi bir şey yazmadan önce yüklenen yapılandırmada bu yönergeyi denetleyin. Trafiği hiç görmeyen bir çekirdek kuralı, çalışan bir kuraldan ayırt edilemez ve bir dağıtım tam da böyle yalıtımsız sonlanır.
Yüklendiğini varsaydığınız dosya yerine etkin yapılandırmayı okuyun, çünkü dağıtım paketleri kendi içerme dosyalarını getirir. Arka plan iletimi yapıyorsa ret onun kendi istemci başına kontrollerine aittir ve ana bilgisayar güvenlik duvarı yalnızca ana bilgisayara yönelen trafiği süzer. Çekirdek iletiyorsa iletim kancası önemli olan tek yerdir.
Yönlendirilmiş ve çevrilmiş dağıtımlar bir denetim daha gerektirir: uzak bir istemcinin gördüğü kaynak beklediğiniz olmayabilir. O zaman istemci alt ağıyla eşleşen bir kural hiçbir şeyle eşleşmez. Eşleşmeyi yazmadan önce çeviriden sağ çıkan adresi not edin ve NAT adreslerini tahmin etmek yerine arayüz çiftini eşleştirmeyi tercih edin.
Her adrese tek başına iptal edilebilir bir kimlik verin
İki aygıt bir kimlik bilgisini paylaştığı anda yalıtım çöker. O kimliğe bağlı bir kural onları ayıramaz ve kayıp bir dizüstü bilgisayarın iptali tüm grubu iptal eder. Aygıt başına sertifikalar veya eş başına anahtarlar iptali yerel, politikayı okunur tutar, çünkü her adres tam olarak bir kişiye veya makineye karşılık gelir. Tasarım bunu yapamıyorsa, kuralı ince taneli diye tanımlamak yerine çalıştırma kitabında söyleyin.
Adres dağıtımı politikayla uyuşmalıdır. Hizmetler için bir blok, istemciler için bir blok ayırın ve istemci adreslerini ilk gelen alır aralığından değil, denetlediğiniz havuzdan verin. Sunucu çeviriyor veya köprülüyorsa eşleme tablosunu yapılandırmanın yanında tutun, çünkü bir sonraki okuyucunun kuralı yeniden türetmesi için gereken tablo odur.
Reddi paketin tüneli geçtiği yere koyun
WireGuard trafiğini ileten bir ağ geçidinde iki kural durumu kapsar: hizmet bloğuna izin verin, sonra istemci bloğunun geri kalanını düşürün. Arayüz çifti adresler kadar önemlidir, çünkü yalnızca hedefe göre eşleşme LAN'dan gelen trafiği de yakalar. İzin önce değerlendirilsin diye onları bu sırayla yükleyin.
nftables ile çift mevcut bir inet filter tablosuna girer, önce izin sonra düşürme. Her iki eşleşme de arayüz çiftini ve adresleri sabitler.
nft add rule inet filter forward iifname "wg0" oifname "wg0" ip saddr 10.8.0.0/24 ip daddr 10.8.2.0/24 accept
nft add rule inet filter forward iifname "wg0" oifname "wg0" ip saddr 10.8.0.0/24 ip daddr 10.8.0.0/24 drop
Yükledikten sonra çıkış durumuna güvenmek yerine zinciri geriye doğru okuyun ve iki kuralın amaçladığınız sırada olduğunu doğrulayın. IPv6 havuzu için eşleşen ip6 kuralları ekleyin, yoksa v4 çifti çift yığınlı bir tünelde yalnızca süstür. Sunucunun zaten izin veren bir iletim politikası varsa zinciri tamamen değiştirmek yerine düşürmeyi ekleyin.
OpenVPN üzerinde client-to-client etkinleştirildiğinde bu iletim kuralları eşler arası trafikle hiç eşleşmez ve ret arka planın kendi kontrollerinde yaşamalıdır. Ana bilgisayara yönelen trafik için çekirdek kurallarını koruyun, ancak onları yalıtım denetimi saymayın.
Reddi sunucudan değil, bir istemciden kanıtlayın
Ağ geçidinden test etmek hiçbir şey kanıtlamaz, çünkü yerel olarak üretilen trafik çıkış yolunu alır ve iletim kancasını hiç geçmez. İki gerçek istemci kullanın: hizmete ulaşması gereken biri ve reddedilmesi gereken biri. Önce izin durumunu çalıştırın, böylece bozuk bir tünel çalışan bir politikayla karıştırılmasın.
İzin verilen istemciden hizmetin kendi bağlantı noktasında yanıt verdiğini doğrulayın. Aynı istemciden eş adresini deneyin ve ret yerine sessiz bir düşürme bekleyin:
ping -c 3 -W 2 10.8.0.5
nc -z -w 2 10.8.0.5 22
nft list chain inet filter forward
iptables -vnL FORWARD
ping -6 -c 3 -W 2 fd00:8::5
Düşürülen paket ve çevrimdışı eş ikisi de zaman aşımı gibi görünür, bu yüzden bir sonuca varmadan önce sayaçları denetleyin. Eş açıkça çalışırken düşürme kuralının sayacının arttığını doğrulayın. IPv6 üzerinde yineleyin, orada eksik bir ip6 kuralı v4 reddini etkili görünür bırakır. Kabul edilen ve reddedilen sonuçları tarihle birlikte çalıştırma kitabına yazın, çünkü sonraki geçiş kuralı yeniden türetecektir.