OpenVPN istemci engelleme kuralı neden FORWARD'a hiç ulaşmaz
İstemciden istemciye trafik OpenVPN sürecinin içinde kalabilir ve ana makinenin FORWARD zincirini hiç geçmeyebilir, bu yüzden sıfır sayaç hiçbir şey kanıtlamaz.
Aynı OpenVPN sunucusundaki iki istemci, havuzları için DROP kuralı ekledikten sonra bile birbirine ulaşabilir. Kural FORWARD zincirinde durur, trafik açıkça akar ama o kuralın sayacı sıfırda kalır. Doğal sonuç, güvenlik duvarının bozuk olduğudur. Çoğu zaman paket zincire hiç girmemiştir.
Bir eş paketinin OpenVPN sunucusundan geçebileceği iki yol vardır ve bunları güvenlik duvarı değil yapılandırma belirler. Hangi yolun kullanıldığını bilmek, ana makinedeki kuralın doğru yerde olup olmadığını söyler.
Bir eş paketinin izleyebileceği iki yol
İç yönlendirme seçeneği kapalıyken, A istemcisinden gelen paket tünel arayüzüne, hedefi B istemcisine atanmış adresin içinde olacak şekilde gelir. Sunucunun yönlendirme tablosu onu aynı tünel arayüzünden geri gönderir, çünkü B adresine giden rota sunucuya aittir. Bu, ana makineden içeri ve dışarı akan bir akıştır ve IPv4 yönlendirme yolu bunu değerlendirir.
İç yönlendirme seçeneği açıkken, sunucu süreci paketi bağlı bir istemciyle eşleştirir ve doğrudan o istemciye geri yazar. Paket daemonun içinde işlenir ve tünel aygıtına bir daha asla girmez, bu yüzden ana makinenin yönlendirme yolu tamamen atlanır. OpenVPN 2.6 kılavuzu bu seçeneği iç istemciden istemciye yönlendirme olarak tanımlar ve ana makinedeki güvenlik duvarı kuralının bunu görememesinin nedeni tam olarak budur.
Veri kanalını bir çekirdek modülüne devreden kurulumlarda üçüncü bir varyant vardır. Yönlendirme kararı ve şifreleme kullanıcı alanından çıkar ve netfilter'ın akışı görüp görmemesi, devretme yolunun nasıl kurulduğuna bağlıdır. Eski bir kural kümesinin devredilmiş bir sunucuda kullanıcı alanındaki bir sunucuyla aynı davrandığını asla varsaymayın. Kipi paket sürümünden değil, çalışan yapılandırmadan doğrulayın.
Sayaç hiç hareket etmediğinde
Sıfır sayaç, paketin o noktada o kuralla eşleşmediği anlamına gelir ve nedenleri birkaçtır. Birincisi yukarıdaki atlatmadır: trafik zincire hiç ulaşmamıştır. İkincisi arayüz, yön, kaynak veya hedef uyuşmazlığıdır; bu, havuz yeniden numaralandırıldığında ve kural hâlâ eski öneki adlandırdığında yaygındır.
Üçüncüsü konumdur. Zincirin başındaki bir kural, sizin DROP kuralınız değerlendirilmeden önce akışı kabul edebilir ve sonraki bir kural sonucu gerçekten belirleyen kural olabilir. Zinciri sayaçlar görünür durumdayken sırayla okuyun, sonra testi tekrarladığınızda hangi kuralın sayısının arttığını kontrol edin.
Gerçek adreslerini hatırladığınız bir kiralamadan değil, sunucunun kendi durumundan doğruladığınız iki istemci arasında tek bir kontrollü değiş tokuş yapın. İlgili sayaç hâlâ hareket etmiyorsa, eşleşmeyi yeniden yazmadan önce yoldan şüphelenin. Hareket ediyor ama bağlantı yine başarılıysa, düşürme daha sonra geçersiz kılınıyor demektir ve sorun sıralamadadır. Bu yanıt, onarımın kural değişikliği mi topoloji değişikliği mi olduğunu belirler, bu yüzden herhangi bir şeyi düzenlemeden önce onu elde edin.
Filtreleyebilen bir sınır seçmek
İlke ana makinenin güvenlik duvarında yaşamak zorundaysa, trafiği güvenlik duvarının görebileceği yere koyun. İç yönlendirmeyi kapatmak, eş trafiğini tünel arayüzünden ve yönlendirme yolundan geçirmenin desteklenen yoludur; bedeli her eş paketinin ana makinenin yığınından geçmesidir.
Sonra akışı tam olarak eşleştirin. Trafik iki yönde de tünel arayüzüne gelir ve tünel arayüzünden çıkar, bu yüzden yalnızca fiziksel arayüzü dikkate alan kurallar eşleşmez. Adres tabanlı kurallar güncel havuzu gerektirir ve dönüş yönünü de gidiş yönü kadar hesaba katmalıdır.
Birçok kurulum için istemci veya grup düzeyinde filtreleme daha iyi hizmet eder; orada kimlik bilinir ve ilke yeniden bağlanmada değişen bir adresi değil kullanıcıyı izler. Bu, ana makine zincirinden farklı bir mekanizmadır ve ikisi açık bir neden olmadan karıştırılmamalıdır.
Eski bir topolojinin kural kümesini geçiş sırasında değiştirmeden taşımayın. Adres havuzları, arayüz adları ve yönlendirme kipleri kuralın eşleşip eşleşmemesini etkiler ve bir zamanlar çalışan kopyalanmış bir kural en yanıltıcı kanıt türüdür. İzin vermek istediğiniz akıştan başlayın ve ona uyan kuralı yazın.
Bir kurala güvenmek yerine yalıtımı test etmek
Yasak durumu ve izin verilen durumu aynı çalıştırmada test edin. Bir istemciden diğerine yeni bir bağlantı başlatın ve başarısız olduğunu doğrulayın, sonra izin verilmesi gereken bir bağlantının hâlâ çalıştığını doğrulayın. Yalnızca ilki test edilirse her şeyi engelleyen bir güvenlik duvarı başarı gibi görünür.
Sunucu yapılandırması yeniden yüklendikten sonra ve bir istemci yeniden bağlandıktan sonra tekrarlayın, çünkü iç yönlendirme ve havuz atamaları çalışma zamanı durumudur. Sayaçları iki yönde de kontrol edin, çünkü bir yöne uyup yanıta uymayan bir kural, hızlı bir testte fark edilmesi zor olan kısmi yalıtım üretir.
Yalıtım, akışı gerçekten taşıyan sınırda gözlemlenen sonuçtur. Ana makinenin bir yerindeki DROP kuralı kanıt değildir; başarısız bir bağlantı ve ona neden olan kuralın hareket etmiş sayacı kanıttır.