iptables ana makinesi yalnızca VPN ile: tun aygıtını adlandırın, tun+ değil
tun+ makinedeki her tünele uyar. Tek bir aygıt adı sabitleyin, endpoint istisnasını başa koyun ve politikayı test ederken geri dönüş yolunu elinizde tutun.
-o tun+ yazmak kesin bir talimat gibi görünür ve aslında çekirdeğin sahip olduğu her tünele uyan bir joker karakterdir. İkinci bir VPN istemcisi, bir konteyner köprüsü ya da çökmüş bir oturumun bıraktığı bir arayüz bunu karşılar ve ana makine ardından politikanın engellemeyi amaçladığı trafiğe izin verir. Aşağıdaki yordam tek bir aygıt adı sabitler, istisnaları tünelin gerçekten oluşabileceği sıraya koyar ve kurallar kötü düşerse size bir dönüş yolu bırakır. Her adım tek başına geri alınabilecek kadar kısadır.
Adım 1: şu anda sahip olduğunuz kuralları yazın
Varsayılan bir politikayı değiştirmeden önce mevcut durumu kaydedin ki geri alma bir komut olsun, bir hatıra değil. iptables-save > /root/iptables.pre her tabloyu geri yükleyebileceğiniz bir dosyaya yazar ve ayarlamak üzere olduğunuz politika onu taşıyan bağlantıyı düşürdüğünde açık root oturumlu ikinci bir terminal paranoya değildir. Uzaktan çalışıyorsanız bir flush'ı da acil durdurma anahtarı olarak planlayın.
Sonra arayüzleri listeleyin, çünkü varsaydığınız ad okumanız gereken addır: ip -br link şu anda ne olduğunu gösterir ve tünel yukarı çıkmadan görünmez. Okurken aygıt adlarını not edin.
Adım 2: tünele kendi adını verin
OpenVPN istemci yapılandırmasında dev tun_work kabul eder ve Linux ardından tun0 ayırmak yerine tam olarak bu adla bir arayüz oluşturur. Başka hiçbir şey bu adı talep etmediği sürece ad yeniden bağlanmalar arasında sabit kalır ve aygıtı adlandıran kuralı anlamlı kılan da budur.
Adın denetlenemediği yerlerde bunun yerine tünel adresini veya paket işaretini eşleştirin. İkisi de çalışır, ikisi de okunması daha zordur ve tünel yeniden numaralandığında ikisi de daha sessiz başarısız olur. Her durumda tek bir şeyi eşleştirin ve hangisi olduğunu açıkça söyleyin.
Adım 3: politikayı endpoint istisnasını başa koyarak yazın
Yalnızca VPN'li bir ana makine, kısa bir istisna listesi olan varsayılan-ret ana makinesidir ve en çok önem taşıyan istisna tünelin var olmasına izin verendir. Tünel aygıtı kuralından önce endpoint kuralı olacak şekilde bu sırayla kurun, böylece el sıkışmanın gidecek bir yeri olsun:
# allow the tunnel to be built, then everything the tunnel carries
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 198.51.100.7 -p udp --dport 1194 -j ACCEPT
iptables -A OUTPUT -o tun_work -j ACCEPT
iptables -A INPUT -i tun_work -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTEndpoint'in gerçek adresi ve bağlantı noktası bu sayfaya değil, sağlayıcınıza aittir. Endpoint bir ana makine adıysa bir kez çözün ve sonucu sabitleyin, çünkü bir kural ad arayamaz ve dönen bir yanıt sonraki DNS değişikliğinden sonra politikayı sessizce bozar. Bağlantı noktasını da kontrol edin, çünkü sizi TCP 443'e taşıyan sağlayıcılar aksi hâlde kimsenin yazmadığı bir kurala ihtiyaç duyar. Yalnızca tek bir protokolde çalışan tünel genellikle güvenlik duvarı arızası değil, tam olarak bu eksikliktir.
Bir yönlendiricide aynı biçim arkasındaki istemciler için FORWARD zincirine girer ve yönlendiricinin kendi trafiği kendi kurallarına ihtiyaç duyar. Yalnızca iletilen paketleri kapsayan bir kural kümesi SSH ve DNS'i eski yolda bırakır ve yönlendiricinin tünel kalktığı anda erişilemez olmasının nedeni budur.
Adım 4: yalnızca varlığı değil sırayı da kontrol edin
Kurallar sırayla değerlendirilir, bu yüzden daha önce gelen bir ACCEPT sonradan eklediğiniz REJECT'i yalnızca gizler. established ve related eşleşmesi, kendi giden isteklerinize gelen yanıtların genel bir giriş yolu açmadan dönmesini sağlayan şeydir ve bunu tünel kabulünden sonra koymak, düşen bir tünelin yine de kendi arayüzünde dönüş trafiğini geçirdiği anlamına gelir.
Kural sayısını tek ekranda okunacak kadar küçük tutun. Denetleyemediğiniz bir kural kümesi, en üste istisnalar ekleyerek yamalayacağınız kümedir ve varsayılan-ret politikaları zamanla varsayılan-izin kenarını böyle kazanır. Değişiklikten önce ve sonra ACCEPT'leri sayın.
Adım 5: önyüklemeyi ve adres ailesini atlatmasını sağlayın
Elle girilen kurallar yeniden başlatmada kaybolur, bu yüzden onları dağıtımın güvenlik duvarı hizmetinden veya tünel arayüzü var olduktan sonra çalışan bir unit'ten yükleyin. OpenVPN başlamadan önce çalışan bir betikte tun_work'e başvurmak, düşen trafikten oluşan bir önyükleme döngüsü üretmenin yaygın bir yoludur.
Sonra IPv6'yı ayrıca kontrol edin, çünkü IPv4 için iyi bir varsayılan-ret politikası diğer aile hakkında hiçbir şey söylemez. ip -6 route ana makinenin yalnızca IPv4 işleyen bir tünelin etrafından trafik taşıyabilecek bir rotası olup olmadığını söyler ve ip6tables veya nftables kendi eşdeğer kurallarına ihtiyaç duyar. Kural kümesinin simetrisine güvenmek yerine IPv6-only bir hedefle test edin.
Adım 6: doğrulayın ve geri yüklemeye hazır olun
Tüneli kaldırın, amaçladığınız hizmetin çalıştığını doğrulayın, sonra politikanın reddetmesi gereken bir şeyi deneyin. Yanıt sizi şaşırtırsa iptables-restore < /root/iptables.pre ile geri yükleyin ve ancak ondan sonra kuralları düzenlemeye başlayın. Kalıcılık ve test edilmiş bir geri dönüş yolu, bunu iki kez yapabileceğiniz bir değişiklik yapan şeydir.