Menyekat IPv6 untuk melindungi WireGuard merosakkan hos
Peraturan input yang menggugurkan semua IPv6 juga membuang penemuan jiran dan Packet Too Big. Asingkan tiga tanggungjawab, kemudian periksa hos masih berfungsi.
Matlamatnya wajar: hanya pengguna terowong sepatutnya sampai ke perkhidmatan pada mesin ini. Pelaksanaan yang biasa diambil ialah rantai input IPv6 yang menggugurkan segala-galanya kecuali WireGuard, dan itu juga menggugurkan trafik yang mengekalkan hos terikat pada pautannya sendiri. Penemuan jiran dan mesej penyelenggaraan laluan bukanlah akses perkhidmatan, dan membuangnya menghasilkan mesin yang tidak dapat dicapai atas sebab yang tiada kaitan dengan dasar anda. Terowong naik, perkhidmatan dibatasi dengan betul, dan tiada apa-apa lagi pada pautan yang berfungsi.
Tiga tanggungjawab, satu set peraturan
Tanggungjawab pertama ialah operasi rangkaian luar: hos mesti kekal terikat pada pautannya, menyelesaikan jiran dan mempelajari had laluan pautan itu. Yang kedua ialah pendengar tersulit, yang menerima UDP pada alamat dan port yang anda pilih. Yang ketiga ialah set perkhidmatan dinyahsulit yang anda mahu pengguna terowong capai.
Itu tiga dasar berbeza, dan hanya yang kedua dan ketiga berkaitan VPN. Set peraturan yang menganggapnya satu mewarisi mod kegagalan di mana mengetatkan sempadan aplikasi memutuskan ikatan hos secara senyap.
Simpan dalam rantai berasingan atau sekurang-kurangnya ulasan berasingan, supaya orang seterusnya nampak baris mana wujud atas sebab apa.
Apa yang ICMPv6 lakukan untuk hos
IPv6 bergantung pada ICMPv6 jauh lebih banyak daripada gema. Permintaan dan pengumuman jiran menggantikan ARP dan diperlukan untuk penghantaran setempat. Packet Too Big membawa maklumat MTU laluan, dan mengabaikannya menghasilkan pemindahan yang tersekat pada paket besar. Pengumuman penghala membawa laluan lalai dan maklumat awalan apabila pautan menggunakan konfigurasi automatik.
RFC 4890 memisahkan mesej yang wajib dibenarkan penapis hos daripada yang merupakan pilihan pentadbiran, dan ia berbuat demikian dalam bahagian hos yang berbeza daripada peraturan untuk penghala yang memajukan antara rangkaian. Membaca bahagian pemajuan sahaja menghasilkan dasar input yang terlalu ketat untuk hos yang dilindunginya.
Peraturan praktikalnya ialah membenarkan mesej ralat dan konfigurasi penting pada antara muka yang memerlukannya, terhad mengikut jenis dan sumber di mana platform membenarkannya, dan membuat keputusan jelas tentang selebihnya.
Menggantikan semua itu dengan kebenaran ICMPv6 menyeluruh menyelesaikan masalah ketersediaan dan melepaskan penapisan. Menggantikannya dengan pengguguran menyeluruh menyelesaikan masalah penapisan dan melepaskan hos.
Benarkan terowong dahulu, kemudian perkhidmatan
Terima pengangkutan WireGuard pada alamat luar dan port UDP yang dimaksudkan, dan terima trafik balik melalui penjejakan sambungan. Kemudian benarkan perkhidmatan aplikasi melalui antara muka terowong, daripada sumber yang anda benar-benar benarkan.
Kebenaran untuk port UDP luar tidak membenarkan permintaan dinyahsulit di dalamnya. Perbezaan itulah seluruh sebab antara muka terowong muncul dalam peraturan perkhidmatan.
Baca set peraturan sebagaimana adanya, bukan sebagaimana fail menerangkannya:
sudo nft list ruleset
ip -6 addr show
ip -6 route show default
Pendengar pada alamat fizikal ialah pendedahan berasingan daripada perkhidmatan yang sama pada alamat terowong. Jika mesin juga memajukan trafik ke mesin lain, itu keputusan rantai pemajuan dan bukan dasar input ini, dan ia memerlukan alasan sendiri.
Uji pautan, bukan hanya terowong
Terowong yang berfungsi selepas perubahan membuktikan kurang daripada yang kelihatan, kerana entri jiran sedia ada dan sambungan yang terbentuk boleh menyembunyikan mesej kawalan yang kini digugurkan oleh dasar.
Periksa ikatan secara langsung, kemudian periksa bahawa laluan yang dikecualikan masih gagal:
ip -6 neigh show
ping -6 -c 3 2001:db8:1::1
sudo nft -c -f /etc/nftables.conf
Jadual jiran yang kekal lengkap selepas but semula ialah tanda penemuan masih berfungsi. Jadual yang kosong dan tidak pernah diisi semula ialah tanda anda menapisnya keluar. Perintah ketiga mengesahkan sintaks set peraturan tanpa menerapkannya, dan itu wajar dilakukan selagi anda masih ada sesi.
Pulihkan hos yang anda kunci diri di luar
Sebelum menukar peraturan tembok api yang membawa sesi pentadbiran anda sendiri, simpan saluran kedua: konsol, sambungan bersiri, atau pengembalian berjadual yang membuang peraturan baharu jika anda tidak membatalkannya.
Jika perubahan benar-benar mengunci anda di luar, pemulihan melalui saluran itu dan bukan melalui rangkaian yang baru anda buang. Pulihkan set peraturan sebelumnya daripada salinan tersimpan, sahkan hos boleh dicapai semula, dan hanya selepas itu terapkan dasar yang dimaksudkan dalam kepingan lebih kecil.
Dasar akhir tidak universal. Pengalamatan, penghalaan dan pelaksanaan tembok api ialah input penggunaan, tetapi sempadannya sama di mana-mana: tolak akses aplikasi yang tidak diingini sambil mengekalkan trafik kawalan yang membawa terowong dibenarkan.