Menempatkan dua grup klien di subnet berbeda tampak seperti isolasi, dan bukan. Alamat menjelaskan dari mana paket tampaknya datang, sedangkan izin adalah keputusan yang diambil oleh apa pun yang meneruskannya. Pertanyaan itu dijawab oleh konfigurasi, bukan oleh mask, jadi putuskan komponen mana yang meneruskan lalu lintas antar-peer sebelum menulis aturan apa pun.

Subnet adalah label, bukan aturan

Memberi satu kumpulan alamat per grup memberi Anda alamat yang mudah dibaca dan tidak lebih. Klien yang menerima rute tambahan telah memperoleh keterjangkauan, dan keterjangkauan bukan otorisasi. Izin untuk berbicara berada pada keputusan penerusan, yang dapat hidup di daemon atau di kernel tergantung konfigurasi server.

Kepemilikan alamat adalah yang membuat prefiks dapat dipakai sebagai pemilih grup. Setiap identitas yang diautentikasi harus memetakan ke alamat atau rentang yang dapat diprediksi, dan pemetaan itu gagal begitu beberapa perangkat berbagi satu kredensial dan satu penetapan. Selesaikan identitas dan konkurensi sebelum mengandalkan prefiks sumber, karena kebijakan yang menebak mesin mana yang menelepon memberi otorisasi ke mesin yang salah pada saat terburuk.

Pilih jalur yang membawa lalu lintas antar-peer

Ketika daemon meneruskan paket peer di dalam prosesnya sendiri, paket itu tidak pernah mencapai kait penerusan host, sehingga aturan kernel tidak dapat melihatnya. Nonaktifkan penerusan internal itu dan kernel menjadi titik penerusan, tempat aturan penerusan biasa berlaku.

# peer forwarding inside the daemon: enforce with per-group policy instead of FORWARD rules
client-to-client
# kernel forwarding path: remove the line above, then filter in the forward chain

Kanal data yang di-offload dan server yang dikelola produk menerbitkan model penegakan mereka sendiri, jadi pastikan mana yang Anda jalankan alih-alih mengasumsikan perilaku komunitas. Kegagalan yang layak dihindari adalah aturan yang tampak benar dalam tinjauan dan tidak pernah dikonsultasikan saat runtime.

Tulis matriks sebelum menulis aturan

Matriks pendek lebih mudah ditinjau daripada kumpulan aturan, dan itulah kontrak yang harus dipenuhi implementasi: peer satu grup diizinkan, peer antar-grup ditolak, kedua grup diizinkan ke satu layanan bersama bernama, semua lainnya ditolak. Tulis keempat baris itu sebelum membuka editor firewall. Peninjau yang tidak membaca sintaks aturan tetap dapat memeriksa matriks. Implementasi lalu hanya perlu mencocokkan barisnya.

SourceDestinationDecision
Group A addressAnother Group A addressAllow
Group A addressA Group B addressDeny
Either groupThe shared internal serviceAllow
Either groupAnything not listedDeny

Pisahkan tiga kelas tujuan saat menulisnya. Layanan di host VPN adalah input lokal, klien lain adalah transit peer, dan mesin di belakang gateway adalah jalur penerusan yang berbeda. Satu aturan longgar dapat memberikan ketiganya secara tidak sengaja, dan begitulah kebijakan grup berubah menjadi jaringan datar dengan langkah tambahan. Tulis kelas di samping setiap baris agar niatnya bertahan pada penyuntingan berikutnya.

Letakkan aturan di tempat yang bertahan

Tambahkan keputusan di tempat yang sama dengan pemeliharaan firewall lainnya, sebelum aturan permisif mana pun yang jika tidak akan menelannya. Urutan aturan adalah bagian dari kebijakan, dan aturan yang benar ditempatkan setelah penerimaan luas tidak menegakkan apa pun. Catat nomor aturan sebelum dan sesudah perubahan. Kebijakan yang ada di editor tetapi tidak di kumpulan aturan yang berjalan adalah rencana, bukan kendali.

Putuskan apa yang terjadi pada aliran yang sudah ada saat kebijakan berubah, karena sesi yang dibuka sebelum perubahan dapat terus berjalan sesudahnya. Jika anggota yang keluar harus segera kehilangan akses, kumpulan aturan memerlukan cara untuk mengakhiri keadaan itu alih-alih menunggu koneksi menutup sendiri.

Jadikan aturan persisten melalui mekanisme yang memiliki firewall lainnya, dan catat matriks di sampingnya. Kebijakan yang tidak tercatat akan diturunkan ulang dari ingatan pada insiden berikutnya, biasanya oleh seseorang yang terburu-buru.

Buktikan dari kedua sisi

Uji keterjangkauan dalam grup yang sama, kegagalan antar-grup, dan layanan bersama dari satu klien di setiap grup. Satu pengujian dari satu klien membuktikan separuh matriks, dan separuh yang dilewatkannya biasanya yang salah. Ulangi arah penolakan dua kali, karena sesi yang di-cache dapat menyembunyikan kesalahan penegakan. Catat pasangan mana yang Anda uji agar orang berikutnya tidak mengulanginya.

Ulangi pemeriksaan pada IPv6 jika terowongan membawanya, dan pertahankan autentikasi aplikasi biasa. Prefiks sumber bukan akun, jadi lolos kebijakan jaringan tidak berarti suatu layanan harus memercayai pemanggil.

Artikel terkait