IPsec bersarang lebih mudah difikirkan apabila kedua-dua lapisan berakhir pada mesin berbeza. Empat gateway, dua terowong dan satu soalan yang menentukan sama ada reka bentuk berfungsi: apa yang sebenarnya dilihat oleh terowong luar apabila terowong dalaman selesai dengan paket itu? Jawab itu dan pemilih, laluan serta urutan penyelesaian masalah menyusul. Silap dan anda akan menghabiskan sehari menyahpepijat terowong yang secara teknikal hidup.

Model empat gateway

Gateway luar A dan B membina terowong pertama antara dua tapak. Di belakang A terletak gateway dalaman C dengan alamat transit 10.60.0.2; di belakang B terletak gateway dalaman D dengan alamat transit 10.70.0.2. Rangkaian aplikasi tinggal di belakang C dan D, dan setiap alamat dalam contoh sengaja tidak bertindih.

application net -> C -> A == outer IPsec == B -> D -> application net
                       \---------- inner IPsec ----------/

C transit: 10.60.0.2      D transit: 10.70.0.2
A and B:    underlay addresses only

Membahagikan lapisan kepada empat hos bermakna setiap mesin menguatkuasakan satu sempadan. Satu hos yang menjalankan kedua-dua lapisan perlu menyelaraskan dua set dasar, dua jadual laluan dan dua mod kegagalan pada satu mesin, yang mungkin dan jauh lebih sukar diperhatikan.

Setiap lapisan hanya membuang perlindungannya sendiri

C menyulitkan paket aplikasi untuk D. Hasilnya dialamatkan dari C ke D, dan itulah yang sampai ke A. Segala-galanya di hilir bergantung pada penulisan semula itu.

A menyulitkannya sekali lagi untuk B. B menyahsulit lapisan luar, melihat paket dari C ke D dan menghantarunya masih tersulit. D membuang perlindungan dalaman dan menyampaikan paket aplikasi itu.

Jadi A dan B melihat titik akhir dalaman dan metadatanya, tetapi bukan pihak yang menyahsulit muatan aplikasi. Itu sifat sebenar reka bentuk, bukan dakwaan bahawa C, D atau hos aplikasi boleh dipercayai.

Pemilih luar menamakan gateway dalaman

Di sinilah kebanyakan binaan seperti ini gagal. Untuk terowong luar berasaskan dasar, pemilih yang anda rundingkan mesti mengandungi alamat yang benar-benar dikendalikan oleh A dan B: 10.60.0.2/32 dan 10.70.0.2/32, dalam urutan tempatan dan jauh yang betul.

Meletakkan subnet aplikasi akhir dalam pemilih luar tidak berkesan, kerana apabila paket sampai ke A, enkapsulasi dalaman sudah menulis semula apa yang perlu dilindungi oleh A. Dasar luar kemudian tidak akan sepadan dengan apa-apa, dan terowong akan naik tanpa membawa data.

Jangan sempitkan kebenaran luar kepada UDP 500. Sambungan dalaman mempunyai laluan datanya sendiri, yang menggunakan ESP atau enkapsulasi UDP bergantung pada apa yang dirundingkan, dan dasar luar mesti membenarkan protokol itu.

Semak hasilnya dengan swanctl --list-sas pada setiap gateway dan sahkan bahawa persatuan keselamatan anak melaporkan alamat yang anda maksudkan, bukan yang anda andaikan. Jika senarai menunjukkan subnet aplikasi, dasar luar ditulis untuk lapisan yang salah. Betulkan pemilih sebelum menyahpepijat penghalaan, kerana penghalaan akan kelihatan baik dan pembilang tidak akan bergerak.

Penghantaran dan perangkap rekursi

Pemilih tidak menggantikan penghalaan. A dan B mesti menghantar trafik antara C dan D dalam kedua-dua arah, yang bermaksud penghantaran IP didayakan, laluan yang menunjuk ke terowong dan laluan balik yang wujud di sebelah sana.

Jika terowong luar menggunakan antara muka XFRM, laluan memilih antara muka itu manakala dasar yang dirundingkan masih mengehadkan apa yang dibawanya. Antara muka tidak meluaskan kawasan terlindung; ia hanya mengubah cara kernel mengambil paket itu.

Perangkapnya ialah rekursi. Laluan A ke titik akhir luar B mesti mengikut lapisan bawah, bukan terowong yang sedang dibina oleh A, jika tidak enkapsulasi cuba mengembara di dalam dirinya sendiri dan sambungan tidak pernah selesai.

Periksa terjemahan sebelum menambah lapisan

Lihat apa-apa NAT sumber pada A dan B sebelum anda menala apa-apa lagi. Peraturan yang menulis semula alamat C sebelum dasar IPsec terpakai boleh memecahkan pemilih yang dipersetujui, dan ia juga boleh mengubah apa yang diterima oleh D di sebelah sana.

Penyamaran yang luas tidak menjadi lebih selamat kerana ada dua lapisan. Ia menyembunyikan alamat mana yang dilihat oleh hujung jauh, dan itulah maklumat yang anda perlukan apabila terowong hidup tetapi aplikasi tidak.

Jika peraturan NAT benar-benar diperlukan, tuliskan alamat mana yang difikirkan oleh setiap pihak bahawa ia bercakap dengannya. Satu baris itu menyelesaikan kebanyakan perdebatan tentang sama ada terowong atau terjemahan yang salah. Ia juga memberitahu jurutera seterusnya ke mana perlu dilihat apabila peraturan itu dibuang setahun kemudian. Ping tidak akan melakukan apa-apa daripada itu.

Buktikan fail-closed dan semak MTU

Laluan yang hilang bukanlah dasar fail-closed dengan sendirinya. Jadual lain, laluan lalai atau peraturan dasar boleh menyediakan sandaran secara senyap, dan satu-satunya cara untuk tahu ialah menurunkan terowong luar dan memerhati apa yang dilakukan oleh trafik aplikasi. Lakukan dengan sengaja, dalam tetingkap penyelenggaraan, bukan menemukannya secara tidak sengaja.

Uji tiga keadaan: terowong luar mati, terowong dalaman mati, dan pemulihan selepas kedua-duanya kembali. Gunakan pembilang dasar pada setiap gateway, kerana dua sesi IKE yang terbentuk hanya membuktikan bahawa rundingan satah kawalan berjaya.

Bajetkan kedua-dua enkapsulasi. IKE yang berfungsi ialah hasil paket kecil, dan paket aplikasi saiz penuh masih boleh gagal apabila dua pengepala ditambah; uji dengan saiz muatan yang diketahui pada laluan sebenar dan bukannya menganggap nombornya bertambah. Aritmetiknya mudah, laluannya tidak.

Artikel berkaitan