Kunci VPN PF di Mac: kebijakan situs, bukan fitur yang bisa dikirim
Packet Filter bukan API yang didukung untuk produk yang didistribusikan. Beri pemilik pada kumpulan aturan, sebutkan setiap pengecualian, dan uji transisinya.
Ini berfungsi di Mac Anda, jadi tampak seperti sesuatu yang bisa Anda berikan kepada pengguna. Asumsi itulah yang pertama harus dilepaskan. TN3165 dari Apple menyatakan dengan jelas bahwa Packet Filter bukan API yang didukung untuk produk yang didistribusikan secara umum, dan dokumen itu menempatkan administrasi situs yang memiliki hak istimewa dan terkendali sebagai kasus yang wajar. Karena itu, kunci VPN yang dibangun di atas PF adalah kebijakan operasional lokal dengan pemilik, bukan fitur yang bisa Anda kirimkan di dalam aplikasi.
PF bukan permukaan pengemasan
Perbedaannya bukan akademis. Produk yang didistribusikan dan bergantung pada PF mewarisi setiap perubahan yang Apple lakukan padanya, setiap konflik dengan alat lain yang juga menulis aturan, dan tidak ada komitmen dukungan bahwa pengaturan itu akan terus berfungsi. Situs yang mengelola mesinnya sendiri memiliki hubungan berbeda: ia dapat mendokumentasikan ketergantungan itu, mengujinya terhadap setiap rilis OS, dan menerima pemeliharaannya.
Sebagian saran pemasangan melewati batas yang layak disebut. Menimpa seluruh kumpulan aturan sistem agar satu anchor termuat, mengedit konfigurasi peluncuran sistem Apple, atau menonaktifkan System Integrity Protection bukan persyaratan yang dapat diterima untuk resep yang dapat digunakan ulang. Jika panduan yang diterbitkan membutuhkan salah satunya, itu menjelaskan laboratorium, bukan kebijakan yang dapat diterapkan.
Tulis niat keluar sebelum sintaksis
Putuskan apa yang diizinkan sebelum memilih satu kata kunci pun. Biasanya harus ada tiga jalur: transportasi klien VPN sendiri ke servernya, lalu lintas aplikasi yang terlindungi di dalam terowongan, dan apa pun yang benar-benar membutuhkan jalur langsung untuk penyiapan atau layanan lokal.
Beri setiap pengecualian yang diusulkan sebuah tujuan, transportasi, dan pemilik. Mengizinkan semua port ke satu titik akhir mengizinkan jauh lebih banyak daripada satu transportasi yang digunakan terowongan, dan paparan tambahan itu datang tanpa ada yang memutuskan bahwa hal itu seharusnya ada. Mengizinkan resolver publik adalah jebakan yang sama dalam kostum yang lebih ramah: ia menciptakan jalur DNS langsung bahkan saat terowongan mati, sehingga pencarian nama tetap bocor.
| Path | Destination | Owner |
|---|---|---|
| VPN transport | Gateway address, one UDP port | Network team |
| Tunnel traffic | Internal prefixes | Application owner |
| Resolver exception | Named internal resolver | Security team |
Uji yang berguna untuk sebuah pengecualian adalah apakah Anda dapat menyebutkan orang yang memintanya dan kegagalan yang dicegahnya. Jika tidak ada jawaban untuk keduanya, aturan itu kemungkinan jalan pintas untuk kesalahan konfigurasi yang jika tidak akan tetap tak terlihat.
Nomor utun bukan identitas
MacOS membuat antarmuka terowongan sebagai perangkat utun, dan nomor yang diberikan ke VPN Anda tidak stabil di antara boot ulang, sambung ulang, atau kehadiran klien lain. Aturan yang mencantumkan beberapa nomor tebakan bukan kebijakan; itu cuplikan satu sore.
Jangkarkan aturan pada sesuatu yang mengidentifikasi penyedia yang dituju: rencana alamat yang diberikan terowongan, proses yang memiliki antarmuka, atau konfigurasi yang dipelihara klien VPN itu sendiri. Lalu catat bagaimana identifikasi itu bekerja, karena orang yang meninjau aturan itu setahun kemudian tidak akan memiliki riwayat shell Anda.
Buat kebijakan yang dimuat dapat diatribusikan
Nama anchor mengatur aturan; itu tidak membuktikan bahwa kebijakan efektifnya adalah yang Anda maksudkan. Prioritas antar-anchor, aturan yang dimuat perangkat lunak lain, dan keadaan yang ada semuanya dapat mengubah hasil. Tinjau kumpulan efektif bersama siapa pun yang juga memiliki PF di mesin itu, dan dokumentasikan kepemilikannya di tempat yang sama dengan konfigurasi. Dua pemilik mengedit anchor berbeda dengan asumsi berbeda adalah cara biasa sebuah kunci mendapat lubang.
Simpan kumpulan aturan di jalur konfigurasi yang didukung situs, beri versi, dan catat rilis macOS mana yang diuji. Perubahan yang diterapkan dengan tangan dan diingat oleh satu orang bukan infrastruktur yang dipelihara, apa pun yang dikatakan tajuk berkas.
Uji transisinya, bukan keadaan terhubung
Tangkapan layar yang diambil saat terowongan hidup hampir tidak membuktikan apa pun. Telusuri keadaannya: startup sebelum koneksi apa pun, terowongan yang berfungsi, terowongan yang putus tanpa peringatan, pemutusan yang disengaja, dan perpindahan dari Wi-Fi ke hotspot. Setiap keadaan punya jawabannya sendiri, dan yang menarik adalah kegagalannya, bukan jalur bahagia.
Di setiap keadaan, catat apa yang sengaja dapat dijangkau. Periksa IPv4 dan IPv6 secara terpisah, uji resolusi nama, dan sertakan alur yang sudah terbentuk sebelum transisi, karena koneksi yang ada tidak selalu mengikuti kebijakan baru. Peramban yang gagal saat terowongan mati adalah satu titik data, bukan bukti bahwa setiap jalur lain diblokir.
Akhirnya, pertahankan metode pemulihan yang tidak bergantung pada jalur jaringan yang Anda ubah. Konfigurasi baik yang dikenal di penyimpanan lokal dan cara memuatnya yang terdokumentasi mengubah kunci menjadi kebijakan; tanpanya, satu revisi buruk mengunci administrator keluar dari mesin yang seharusnya dilindungi.