TLS asli, pemajuan SSH atau VPN untuk satu perkhidmatan awan
TLS asli, pemajuan SSH dan tindanan berhalakan melindungi antara muka yang berbeza. Teliti setiap satu untuk memilih sempadan terkecil yang meliputi perkhidmatan.
Soalan jarang ialah sama ada untuk menyulitkan sesuatu antara dua mesin awan; soalan ialah antara muka mana yang anda sulitkan dan siapa menyemak identiti siapa. Saya memulakan perbualan ini dari perkhidmatan, bukan dari rajah rangkaian, kerana perkhidmatan sudah tahu apa yang diperlukannya. Tiga sempadan meliputi kebanyakan kes: TLS aplikasi itu sendiri, satu port TCP yang dimajukan melalui SSH, dan tindanan berhalakan yang memberi setiap peserta alamat. Ia tidak disusun mengikut kekuatan, tetapi mengikut berapa banyak masalah yang diliputi.
Mulakan dengan perkhidmatan, bukan rangkaian
Bergerak keluar dari proses. Protokol apa yang dituturkannya, nama apa yang akan disahkan oleh klien, dan siapa yang dibenarkan membuka sambungan? Ketiga-tiga jawapan itu menyingkirkan pilihan lebih cepat daripada mana-mana jadual perbandingan, dan konfigurasi perkhidmatan itu sendiri biasanya menjawabnya dalam beberapa minit.
Ambil API dalaman kecil yang sudah menyediakan HTTPS pada port 8443 dengan sijil untuk api.internal.example. ss -ltnp pada hos menunjukkan apa yang diikatnya, dan openssl s_client -connect 127.0.0.1:8443 -verify_hostname api.internal.example menunjukkan sama ada sijil itu sah untuk nama yang akan digunakan oleh klien. Jika kedua-duanya sihat, perkhidmatan boleh melindungi alirannya sendiri dan hanya kebolehcapaian yang tinggal. Itu masalah yang jauh lebih kecil daripada membina rangkaian.
Langkah 1: adakah perkhidmatan melindungi dirinya sendiri?
Ini pilihan yang diambil apabila sesuai, dan ia sesuai lebih kerap daripada yang diandaikan oleh pasukan. Penyulitan perkhidmatan meliputi seluruh laluan antara klien dan pelayan, termasuk setiap lonjakan di antaranya, yang tidak diperbaiki oleh mana-mana terowong di sekeliling tengah. Tetapkan nama yang dijangka dan kepercayaan secara eksplisit dan bukannya bergantung pada apa yang kebetulan ada dalam stor lalai klien.
Penyulitan dan kebolehcapaian kekal sebagai kawalan berasingan, dan menggabungkannya ialah tempat pilihan ini silap. Perkhidmatan TLS pada pendengar awam tanpa had masih menerima percubaan sambungan daripada sesiapa sahaja, jadi pendengar dan peraturan rangkaian mesti ditentukan secara bebas daripada fakta bahawa muatan dilindungi. Kemudian semak kebergantungan, kerana API di atas TLS tidak berkata apa-apa tentang titik penemuan, port pentadbir atau saluran pemindahan pukal di sebelahnya. Setiap satu memerlukan jawapannya sendiri, dan satu adik beradik tanpa perlindungan cukup untuk menjadikan seluruh sempadan sebagai fiksyen.
Langkah 2: adakah satu port TCP keseluruhan keperluan?
Apabila keperluan benar-benar satu port TCP, pemajuan ialah perkara terkecil yang berfungsi. Pemajuan tempatan SSH membawa port itu melalui sambungan disahkan yang sudah wujud.
Bentuknya ialah ssh -N -L 8443:127.0.0.1:8443 [email protected], dan perincian yang penting ialah alamat sasaran: 127.0.0.1 diselesaikan di sebelah jauh, jadi sambungan ke perkhidmatan dibuka dari bastion dan bukan dari komputer riba anda. Ikat pendengar tempatan secara sempit sebagai -L 127.0.0.1:8443:... supaya anda tidak menerbitkan perkhidmatan ke rangkaian tempatan anda sendiri secara tidak sengaja. Di sebelah pelayan, hadkan apa yang boleh dimajukan oleh akaun dan bukannya mempercayai tingkah laku baik klien. PermitOpen, AllowTcpForwarding local dan GatewayPorts no lalai ialah tiga tetapan yang mengubah geganti tujuan umum menjadi saluran tertentu.
Kontrak itu sempit dalam kedua-dua arah. SSH melindungi salurannya sendiri, dan lonjakan lanjut dari bastion ke aplikasi lain memerlukan perlindungannya sendiri. Perkhidmatan yang mendengar hanya pada loopback bastion mempunyai pendedahan yang sangat berbeza daripada yang dicapai melalui rangkaian lain, dan pemajuan tidak mengubahnya. Kekalkan pengesahan dan semakan TLS aplikasi dan bukannya menganggap terowong sebagai penggantinya.
Ini berfungsi dengan baik untuk satu sambungan dengan satu pemilik. Pada skala besar ia menjadi sistem: konflik port tempatan, penyeliaan, putaran kunci dan persoalan siapa yang memulakan semula pemajuan selepas but semula.
Langkah 3: adakah penghalakan keperluan sebenar?
Senarai itu ialah kos jujur pilihan terkecil, dan itulah sebabnya pasukan akhirnya menggantikan beberapa arahan latar belakang yang terlupa dengan sesuatu yang terurus. Penggantian itu bukan VPN secara automatik. Jika keperluan masih satu port TCP, pemajuan yang diselia dengan pemilik terdokumen lebih murah untuk dijalankan daripada tindanan dan ia gagal dengan cara yang anda boleh lihat. Ukur pemilikan operasi sebelum mengukur keanggunan.
Penghalakan menjadi jawapan yang betul apabila penghalakan ialah keperluan. Beberapa aplikasi yang memerlukan ketersambungan IP biasa, protokol yang tidak dapat dibawa oleh pemajuan TCP, atau perkhidmatan yang berpindah antara hos semuanya menunjuk ke arah yang sama.
Tindanan memberi peserta alamat dan laluan, kemudian kerja sebenar bermula: julat tidak bertindih, pemilikan laluan, DNS, pendaftaran, pembatalan dan apa yang berlaku apabila rakan hilang. Tiada satu pun daripada itu datang bersama alamat. Rakan yang diterima masuk ke tindanan juga tidak diotorisasi secara automatik untuk setiap operasi di destinasi, jadi pengesahan peringkat perkhidmatan kekal.
Apa yang anda miliki selepas itu
Dua perkara tergolong dalam rekod yang anda tinggalkan. Yang pertama ialah identiti yang dijangka disahkan oleh klien, kerana setiap sempadan ini merosot secara senyap sebaik sahaja semakan nama dilonggarkan untuk membuat sesuatu berfungsi. Yang kedua ialah langkah pembuangan: kunci, peraturan atau laluan mana yang hilang apabila akses tamat, dan siapa yang melakukannya.
Perjalanan ini berakhir di tempat ia bermula, pada perkhidmatan. Pilih sempadan yang meliputi trafik sebenar dan mengesahkan rakan yang anda maksudkan untuk disahkan, kemudian catat bagaimana akses dikemas kini, dipantau dan dibuang. Rujukan OpenSSH ialah tempat untuk mengesahkan pilihan pemajuan sebelum menjanjikan kontrak yang sempit. Jika anda tidak dapat menerangkan langkah pembuangan dalam satu ayat, sempadan itu lebih besar daripada masalahnya.