UFW'nin acil durdurma anahtarı VPN'inizi mi engelliyor? Eşe izin verin
Giden trafiği reddeden kuralınız tünelin el sıkışmasını düşürüyor. ufw enable'dan önce eklenen tek bir eş istisnası, politikayı acil durdurma anahtarına çevirir.
Kontrol listesini izlediniz: gideni reddet, tünele izin ver, ufw'yi etkinleştir. Sonra istemci el sıkışmada bekler ve asla bağlanmaz, ya da bağlanır ve hiçbir sayfa yüklenmez. İki hata da aynı boşluktan gelir. Tünelin var olmasına izin veren kural eksik, çünkü tünel paketlerinizin çıktığı bir arayüz değil.
tun0 üzerindeki izin neden başlangıçta hiçbir şeyle eşleşmez
tun0'ı istemci bir oturum oluştuktan sonra yaratır. O oturumu kuran datagramlar, sağlayıcıya 1194 numaralı bağlantı noktasından gönderilen sıradan UDP paketleridir ve fiziksel kaynak adresiyle wlan0 ya da eth0 üzerinden çıkarlar. allow out on tun0 yalnızca giden arayüzü tun0 olan trafikle eşleşir, bu yüzden el sıkışma sırasında hiçbir şeyle eşleşmez.
Üstüne default deny outgoing koyun ve dış paketler arayüz görünmeden önce düşürülür. İstemci yeniden dener, zaman aşımına uğrar ve bir TLS ya da el sıkışma hatası bildirir; bu da insanları sertifikalar ve MTU arasında koştururken güvenlik duvarı bağlantıyı sessizce yer. Trafiğinizi tutması gereken kural, o trafiğin tutulmasını engelliyor.
Refleks düzeltmesi sızıntıyı kalıcı yapar. sudo ufw allow out on wlan0, ya da varsayılanı yeniden izin ver'e çevirmek, tüneli ayağa kaldırır ve makineyi acil durdurma anahtarı olmadan bırakır: tünel bir sonraki düştüğünde her şey fiziksel adaptör üzerinden yeniden başlar. O iki değişiklik yüzünden tam bir öğleden sonra kaybettim, ta ki gerçekte hangi paketi filtrelediğimi çözene kadar.
İki paket kümesinin ihtiyacı olan şey
Trafiğiniz güvenlik duvarını iki kez, iki biçimde geçer. İç paket tünel adresinden tun0 üzerinden dışarı çıkar. Dış paket fiziksel adresten eşe gider ve tel üzerinde görünen tek şey odur. Her biçim için bir kural:
sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow out to 203.0.113.10 port 443 proto tcp comment 'tcp fallback'
Adresi ve bağlantı noktasını kendi profilinizdekilerle değiştirin. WireGuard eşleri genellikle 51820/udp üzerinden yanıt verir; TCP 443 üzerinden giden OpenVPN profilleri bunun yerine o bağlantı noktasına ihtiyaç duyar. Ayrıntılar farklı, biçim değil: iki kural da dar ve birlikte tünel kapalıyken makinenin ulaşabileceği tek hedefleri tanımlarlar.
Sıra ikinci efsanedir. Ham iptables ile zinciri yukarıdan aşağı okur ve hangi kuralın kazanacağını düşünürsünüz. ufw, yazdığınız listenin ince bir kabuğu değildir; kurallarınızı kendi zincirlerine derler ve ekleme noktalarını seçer. ufw status onları ufw'nin sırasıyla yazdırır, sizin sıranızla değil. Bir kural yok sayılmış göründüğünde, herhangi bir şeyi yeniden yazmadan önce ufw show added ile iptables -S | grep ufw gelen derlenmiş kümeyi karşılaştırın.
İstisna tek adres genişliğinde kalmalı
Eş kuralı yalnızca istemcinin aradığı adresi adlandırdığı sürece doğrudur. Sağlayıcılar uç noktaları döndürür ve ana makine adını çözen bir profil DNS değişikliğini yeni bir adrese izlerken kural hâlâ eskisini gösterir. Aylardır çalışan bir tünel ayağa kalkmamaya başladığında, bir şeyi genişletmeden önce kuraldaki adresi istemcinin aradığı adresle karşılaştırın.
Bütün bir alt ağa ya da 1194 bağlantı noktasındaki her hedefe genişletmek, politikayı yeniden delikli bir güvenlik duvarına çevirir. İstisna acil durdurma anahtarıdır; bir kez geniş olduğunda durduracak bir şey kalmaz. Onu tek bir adreste tutun ve ait olduğu profili ve sağlayıcıyı adlandıran bir yorum bırakın, çünkü altı ay sonra adres keyfî görünecek.
Ad çözümlemesi kendi satırını hak ediyor. Arama tünel var olmadan önce, fiziksel arayüz üzerinden yapılır, bu yüzden katı giden-reddet politikası istemciyi kendi sunucusunu bulamaz hâlde bırakabilir. Çözümleyicinizin adresine 53 bağlantı noktasına izin verin ya da bir kez çözüp adresi profilde sabitleyin. Her arayüzde DNS'e izin vermek bir karardır, varsayılan değil.
Politikayı tünele ihtiyaç duyulmadan önce kurun
ufw enable tüm politikayı bir kerede uygular ve zincirlerini yeniden yükler; çalışan bir güvenlik duvarında varsayılan politikayı değiştirmek de onları yeniden yükler. ufw kılavuzu bunun SSH gibi mevcut bağlantıları düşürebileceği konusunda uyarır. Bu yüzden komutlar bu sırayla gider, SSH kuralı etkinleştirmeden önce ve açık bir konsol oturumuyla:
sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status verbose
ufw reset o bloktan kasten çıkarılmıştır. Her kuralı siler ve güvenlik duvarını devre dışı bırakır; uzak bir ana makinede oturumunuzu düşüren şey sonraki etkinleştirmedir. Yine de sıfırlarsanız, SSH kuralını ekleyin ve devam etmeden önce konsol üzerinden ikinci bir geri dönüş yolu doğrulayın.
Sıralama kozmetik değildir. ufw çalışırken eklenen kurallar hiçbir şeyi boşaltmaz, ama varsayılan politikayı tersine çevirdiğiniz anda zincirler yeniden yüklenir ve eski politikanın izin verdiği oturum da onlarla gider. Varsayılanları, izinleri ve etkinleştirmeyi tek geçişte yapın, makineye bağlı olmayan bir içeri girme yolunuz varken.
Engellenmiş durumu test edin ve geri almayı saklayın
Test edilmemiş bir acil durdurma anahtarı tahmindir. İstemcinin bağlantısını kasten kesin ve bir sayfa yüklemeyi deneyin: başarısız olmalı. Yeniden bağlanın ve hiçbir kurala dokunmadan toparlanmalı. sudo ufw status verbose varsayılanları ve günlük kaydı durumunu doğrular, ve ufw status numbered test kuralının amacını aştığında hangisinin silineceğini gösterir.
Ters betiği ileri betiğin yanında tutun. Gideni reddet ve ölü tüneli olan bir makine kendi onarımını indiremez, bu yüzden geri alma diskte olmalı ve konsoldan okunabilmeli:
sudo ufw reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
Tünel zaten kapalıyken ve kuralların kaldırılması gerektiğinde çalıştırın, rutin bir adım olarak değil. Terminali kapatmadan önce dört şey doğru olmalı: eş kuralı tam olarak bir adresi adlandırır, DNS'in adlandırılmış bir istisnası vardır, etkinleştirme izinlerden sonra gelmiştir ve tüneli çekmek normal trafiği öldürür ama istemciyi sonsuza dek öldürmez.