Suis kecemasan hanya menyekat IPv4: mengapa IPv6 masih keluar
Satu set peraturan firewall untuk IPv4 tidak berkata apa-apa tentang IPv6. Pada peranti dwi-tindanan, terowong boleh jatuh sementara aplikasi mengekalkan laluan yang berfungsi di sekelilingnya.
Terowong jatuh, suis kecemasan melaporkan ia bertindak, dan muat turun terus berjalan. Tiada apa yang rosak dalam peraturan IPv4. Aplikasi hanya berpindah ke laluan yang peraturan itu tidak pernah ditulis untuknya.
Peranti dwi-tindanan mempunyai dua jalan keluar yang bebas. Menyekat salah satunya ialah separuh sekatan.
Dua set peraturan, dua nilai lalai
Dalam Linux, iptables dan ip6tables ialah jadual berasingan dengan dasar berasingan. Menetapkan rantai INPUT dan OUTPUT jadual IPv4 kepada DROP tidak mengubah apa-apa dalam jadual IPv6, yang nilai lalainya biasanya ACCEPT. Pemisahan yang sama wujud dalam nftables, di mana anda boleh memeriksa satu keluarga dan mendapati hanya satu daripadanya membawa peraturan anda. Asimetri itu normal, dan itulah keseluruhan masalahnya.
Sebab itulah suis kecemasan boleh kelihatan menyeluruh tetapi bertindak separa. Skrip yang menulis peraturan IPv4 telah dijalankan, pembilang meningkat, baris log muncul, dan paket IPv6 keluar melalui antara muka fizikal sepenuhnya tidak tersentuh.
Baca apa yang klien anda benar-benar pasang, bukan apa yang dijanjikan halaman pemasaran. Sesetengah klien menghalakan IPv6 ke dalam terowong, sesetengah menyekatnya dengan sengaja, dan sesetengah membiarkannya sementara kunci peringkat platform melaksanakan peraturan lain. Dokumentasi vendor ialah satu-satunya sumber yang patut dipercayai di sini.
Apa yang diberitahu oleh konfigurasi antara muka
Halaman manual wg-quick menyertakan peraturan IPv6 dalam konfigurasi contohnya, dan sebabnya ialah jurang ini. Contoh itu bukan hiasan. Ia wujud kerana peraturan IPv4 sahaja akan membiarkan keluarga kedua terbuka.
Menyalin separuh contoh menghasilkan separuh dasar. Inilah asal paling biasa kebocoran ini. Satu catatan blog memendekkan contoh kerana panjang. Versi yang dipendekkan itu kemudiannya menjadi templat yang semua orang guna semula.
# what is actually installed, per family?
sudo iptables -S OUTPUT | head -20
sudo ip6tables -S OUTPUT | head -20
# nftables: inspect each family separately
sudo nft list ruleset inet | head -40
# does this host even have a usable IPv6 path?
ip -6 route show default
Jika arahan kedua mencetak dasar yang membenarkan manakala yang pertama mencetak DROP, anda telah menemui jawapannya tanpa menyentuh klien. Asimetri itulah pepijat.
Mengapa satu carian bukan seluruh cerita
Satu nama boleh mengembalikan rekod A dan rekod AAAA sekali gus, dan aplikasi tidak semuanya memilih cara yang sama. Pelayar mungkin mengutamakan IPv6 apabila rangkaian menawarkannya dan berundur apabila gagal, manakala penyegerakan latar belakang atau pengemas kini menggunakan penyelesai dan keutamaannya sendiri. Oleh itu, satu ujian berjaya melalui IPv4 membuktikan satu laluan, bukan dasarnya.
Peralihan rangkaian juga mengubah jawapannya. Menyertai rangkaian Wi-Fi lain, bangun daripada tidur atau bertukar kepada selular boleh memberikan peranti awalan IPv6 baharu, dan dasar yang kelihatan mencukupi di LAN pejabat mungkin tidak meliputinya.
Uji keadaan apabila terowong dimatikan
Menguji semasa bersambung memberitahu anda terowong berfungsi. Ujian yang menarik ialah keadaan tidak tersedia, kerana ketika itulah suis kecemasan sepatutnya bertahan. Hentikan terowong dengan sengaja, kemudian cuba destinasi penting daripada aplikasi yang anda lindungi.
# with the tunnel stopped, does anything still leave?
ip -6 route get 2606:4700:4700::1111
curl -6 -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://ipv6.example.net/
curl -4 -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://ipv4.example.net/
Kedua-dua keluarga patut gagal tertutup. Jika permintaan IPv4 tamat masa dan permintaan IPv6 mengembalikan kod status, dasarnya tidak lengkap, dan berapa kali pun terowong diuji semula, ia tidak akan berubah.
Kekalkan juga pengecualian yang didokumenkan dalam ujian itu. Penemuan rangkaian setempat, pembaharuan DHCP atau laluan but ke titik akhir VPN mungkin perlu kekal boleh dicapai, dan pengecualian itu patut dinamakan dalam dasar dan bukan ditemui semasa gangguan. Ujian kebocoran yang gagal kerana terowong tidak dapat naik semula bukan penemuan keselamatan, ia adalah penemuan ketersambungan.