Cara membatasi akses antara dua kantor yang terhubung VPN
Tunnel situs ke situs bukanlah saling percaya. Susun matriks sumber, tujuan, dan layanan, terapkan pada lalu lintas yang didekripsi, dan buktikan juga penolakan.
Tunnel situs ke situs menjawab satu pertanyaan, apakah kedua kantor dapat bertukar paket, dan membiarkan yang penting terbuka: perangkat cabang mana boleh mencapai layanan pusat mana. Memperlakukan tunnel sebagai saling percaya adalah cara laptop tamu berakhir di jalur yang sama dengan server keuangan. Solusinya bukan tunnel yang lebih baik, melainkan daftar izin eksplisit yang diterapkan setelah dekripsi. Panduan ini membawa daftar itu dari definisi hingga penolakan yang terbukti.
Bekerjalah dalam urutan ini, dan jangan melebarkan rute tunnel sampai langkah kebijakan di bawah lulus.
Tulis matriks sebelum menyentuh gateway
Baris yang berguna menyebutkan tiga hal: grup sumber, host atau jaringan layanan tujuan, serta protokol dan port yang benar-benar dipakai aplikasi. Cabang dan pusat data bukan entri. DNS privat dan layanan autentikasi mendapat barisnya sendiri hanya ketika aplikasi tidak dapat bekerja tanpanya.
Kelompokkan sumber berdasarkan peran, bukan berdasarkan kemudahan subnet: staf, tamu, administrasi. Ketika ketiganya berbagi satu LAN datar, gateway tidak dapat membedakan mereka di lapisan jaringan, jadi kontrol identitas atau segmentasi harus datang lebih dulu. Lalu tulis matriks itu dengan pemilik dan tanggal tinjauan di setiap baris.
| Sumber | Tujuan | Layanan | Keputusan |
|---|---|---|---|
| staf cabang | aplikasi pemesanan 10.10.5.10 | TCP 443 | izinkan di gateway yang mendekripsi |
| staf cabang | VLAN administrasi server | apa saja | penolakan implisit |
| Wi-Fi tamu | rentang pusat mana pun | apa saja | tolak sebelum tunnel |
| host lompat administrasi | VLAN server | TCP 22 dan 3389 | izinkan dengan MFA, firewall host mempersempit lebih lanjut |
Terapkan di tempat paket didekripsi
Aturan yang mengizinkan IKE dan ESP hanya membangun tunnel luar. Lalu lintas dalam tiba terbuka di antarmuka tunnel, dan di situlah daftar izin berada: rantai penerusan pada perangkat yang mendekripsi, penurunan default, satu aturan per baris matriks. Pada gateway Linux itu berarti penerusan diaktifkan dan aturan filter ada pada perangkat tunnel, bukan pada uplink fisik, seperti yang dijelaskan panduan penerusan strongSwan.
Selektor lalu lintas adalah keputusan perutean, bukan keputusan otorisasi. Selektor lebar yang mencakup kedua subnet bisa benar untuk perutean sementara firewall tetap hanya mengizinkan TCP 443 ke satu host. Selektor dinegosiasikan untuk tunnel dan menjelaskan apa yang boleh masuk ke dalamnya, bukan apa yang boleh dipakai perangkat tertentu. Jangan pernah melebarkan aturan firewall karena selektornya lebar.
iptables -A FORWARD -i tun0 -s 10.20.0.0/24 -d 10.10.5.10 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i tun0 -j DROP
NAT dan subnet yang tumpang tindih mengubah aturan
Ketika gateway cabang menerjemahkan setiap host ke satu alamat sebelum tunnel, setiap baris berbasis sumber runtuh ke alamat tunggal itu. Hentikan penerjemahan lalu lintas tunnel, atau terima bahwa aturan harus bersandar pada hal lain, seperti alamat sumber asli yang dicatat sebelum penerjemahan. Ujung jauh punya masalah yang sama, karena host tujuan melihat alamat setelah NAT dan bukan yang asli.
Rentang yang tumpang tindih adalah jebakan lainnya. Dua kantor yang keduanya memakai 192.168.1.0/24 tidak dapat dijelaskan dalam satu tabel kebijakan tanpa memetakan satu sisi, dan pemetaan bukan pengganti pengalamatan yang tidak bertabrakan. Perbaiki rencana sebelum menulis aturan yang nanti harus Anda uraikan.
Buktikan penolakan, bukan hanya keberhasilan
Menguji hanya aplikasi yang diizinkan membuktikan sangat sedikit, karena aturan yang longgar di suatu tempat di hulu menghasilkan hasil yang sama.
Dari perangkat cabang biasa, capai layanan yang dimaksud dan pastikan seluruh sesi bekerja. Lalu coba tujuan yang harus tetap tertutup, seperti port administratif pada server yang tidak ada urusan dengan cabang, dan baca penghitung atau entri log yang menjatuhkannya. Menonaktifkan kumpulan aturan untuk memeriksa apakah berfungsi membatalkan uji dan membiarkan gateway terbuka selama Anda melihat.
Jaga daftar tetap hidup
Aplikasi berpindah, dan aturan yang hidup lebih lama dari aplikasinya menjadi lubang yang tidak dimiliki siapa pun. Lampirkan tanggal tinjauan ke baris, dan ubah cakupan selektor serta aturan firewall pada langkah pemeliharaan yang sama ketika layanan berpindah alamat.
Pembatasan tingkat host tetap penting di balik tunnel: firewall server itu sendiri harus menerima rentang cabang hanya untuk layanan yang dipublikasikannya. Dua lapisan yang sepakat lebih mudah diaudit daripada satu lapisan yang dipercaya sepenuhnya.