Mengkloning image server VPN tanpa mengkloning identitasnya
Putuskan apakah salinan memulihkan satu gateway atau menambahkan yang kedua. Konfigurasi yang dapat digunakan ulang, otoritas penandatanganan, dan status jaringan masing-masing berpindah secara berbeda.
Image menyala, layanan mulai, dan klien terhubung. Saat itulah waktunya berhenti dan bertanya operasi mana dari dua operasi yang sangat berbeda yang baru saja terjadi. Entah salinan memulihkan satu gateway logis yang sebelumnya ada, atau menambahkan gateway kedua ke armada. Keduanya sah, dan keduanya memiliki konsekuensi berbeda bagi identitas dan akses. Mesin yang menyala dengan bersih tidak membuktikan keduanya.
Tiga kondisi menentukan jawabannya, dan itu adalah tiga keranjang materi yang dapat dibawa sebuah image. Pisahkan sebelum image dibuat, bukan setelah ia digunakan dua kali.
Pertama-tama putuskan operasi mana yang sedang Anda lakukan
Pemulihan mempertahankan satu identitas layanan. Instans lama sudah hilang, nama dan sertifikat tetap ada, dan klien terus memercayai titik akhir yang sama. Penambahan menciptakan identitas kedua yang harus dibedakan oleh klien, log, dan pencabutan.
Perbedaannya bukan sekadar kosmetik. Jika dua host aktif menyajikan sertifikat gateway yang sama, klien tidak dapat membedakannya, jejak audit juga tidak, dan mencabut sertifikat itu menghapus keduanya sekaligus. Itu mungkin justru yang diinginkan desain ketersediaan tinggi yang disengaja, dan jarang menjadi maksud salinan image yang terburu-buru.
Jadi keputusan pertama adalah satu kalimat, ditulis sebelum image meninggalkan host build: salinan ini memulihkan gateway A, atau salinan ini menjadi gateway B. Semua yang setelahnya adalah pembukuan terhadap kalimat itu. Jika tidak ada yang bisa menuliskannya, salinan belum siap dibangun.
Input yang dapat digunakan ulang, identitas dan otoritas, status penerapan
Keranjang yang dapat digunakan ulang adalah yang mudah: paket, konfigurasi yang telah ditinjau tanpa rahasia, templat layanan, pengaturan pengerasan. Inilah yang benar-benar dikuasai sebuah image, dan dapat direproduksi tanpa batas.
Keranjang identitas dan otoritas adalah tempat salinan salah. Kunci privat dan sertifikat gateway mengidentifikasi gateway itu kepada setiap klien. Kunci penandatanganan otoritas sertifikat adalah objek lain dengan kekuatan lain: ia menerbitkan identitas. Memercayai penerbit tidak berarti setiap gateway baru membutuhkan kemampuan menerbitkan, dan mengirimkan kunci penandatanganan di dalam image memberikan kemampuan itu kepada apa pun yang dapat membaca image.
Keranjang status penerapan adalah yang dilupakan orang karena tampak seperti konfigurasi. Alamat pendengar, kumpulan alamat, rute yang didorong, pengaturan resolver, dan integrasi lokal semuanya menyandikan asumsi tentang host pertama. Node kedua yang menyalinnya dapat mengalokasikan dari kumpulan yang sudah dimiliki gateway lain, atau mengarahkan klien ke sumber daya yang hanya ada di samping yang asli.
Apa yang harus diterima node baru, dan dari siapa
Node yang dikelola secara mandiri sebaiknya menerima kredensialnya sendiri melalui proses pendaftaran yang disetujui, dengan operasi penandatanganan terjadi di tempat kunci penandatanganan berada, bukan di host baru. Catat identitas mana yang dapat ditarik tanpa mengganggu node lain; jika jawabannya "semuanya", desain tersebut memiliki satu identitas yang berpura-pura menjadi dua.
Nilai jaringan layak mendapat perlakuan yang sama. Pilih kumpulan, alamat pendengar, dan sekumpulan rute yang didorong yang tidak bertabrakan dengan gateway yang ada, lalu tuliskan ke input penyediaan, bukan ke dalam image. Input dapat ditinjau; image tidak.
Ada kasus tengah yang sah. Desain pemulihan atau replikasi yang didukung dapat dengan sengaja mempertahankan satu identitas layanan logis di antara host, dengan akses terkendali ke salinan lama dan rencana rotasi. Itu keputusan dengan pemilik, bukan default yang terjadi karena image-nya praktis.
openssl x509 -in /etc/openvpn/server/server.crt -noout -subject -issuer -dates
find /etc/openvpn -name '*.key' -o -name '*.pem' | head -20
Perintah pertama memberi tahu identitas mana yang sebenarnya disajikan node dan siapa yang menandatanganinya. Yang kedua adalah inventaris awal, bukan bukti: materi privat dapat berada di luar direktori itu, di dalam basis data aplikasi, atau di lapisan snapshot yang tidak lagi ditampilkan sistem berkas yang berjalan.
Apa yang diam-diam dibawa salinan image
Menghapus berkas dari revisi terbaru sebuah image tidak menghapusnya dari revisi lama, cache lapisan, atau snapshot yang diambil saat berkas itu masih ada. Karena itu image yang membawa kredensial harus diperlakukan sebagai objek sensitif sepanjang masa hidupnya, bukan hanya pada saat dibangun.
Periksa isi image dan input penyediaan sebagai dua pertanyaan terpisah. Image menjawab "apa yang ada di dalam artefak ini", sedangkan input menjawab "akan menjadi apa instans ini saat boot pertama". Image bersih dengan skrip bootstrap yang mengambil kunci bersama menjawab pertanyaan pertama dengan baik dan pertanyaan kedua dengan buruk.
Batasi image pemulihan yang secara sah memuat rahasia kepada orang-orang yang membutuhkannya, dan catat di mana image itu disimpan. Alternatifnya, image yang praktis karena bekerja tanpa penyediaan apa pun, adalah image yang sama yang memberikan identitas gateway kepada siapa pun yang menemukannya. Hanya satu dari dua tugas itu yang muncul di log build.
Pemeriksaan penerimaan sebelum produksi
Sebelum node menerima lalu lintas, pastikan empat hal: identitas yang disajikannya, klien yang akan diterimanya, sumber daya yang boleh dijangkau, dan jalur kembali bagi alamat yang dibagikannya.
systemctl status openvpn-server@lab --no-pager
ss -lunp 'sport = :1194'
ip -4 route show table all | grep -F '10.90.'
Kemudian periksa kasus negatifnya, yang justru menangkap kecelakaan: apakah node baru memiliki akses administrator atau klien yang dimaksudkan untuk yang asli? Konfigurasi yang disalin dapat membawa entri klien tambahan, rute manajemen warisan, atau direktif push yang masuk akal pada host pertama.
Jika image yang berisi rahasia aktif sudah bergerak melewati batas yang disetujui, ganti kredensialnya dan kendalikan salinannya. Menghapus berkas dari build terbaru tidak sama dengan menghentikan kredensial yang masih dipegang salinan lama, dan selisih antara kedua fakta itu persis merupakan jendela yang dibutuhkan penyerang.