Di mana kunci privat VPN harus tinggal: file, CNG, atau TPM?
Pilih antara file kunci, penyimpanan perangkat lunak yang tidak dapat diekspor, dan TPM untuk identitas VPN, lalu buktikan pilihan dengan perintah dan rencana pemulihan.
Dua pertanyaan menentukan di mana kunci privat VPN berada: apakah materi kunci dapat disalin dari host, dan apakah suatu proses dapat memakainya tanpa siapa pun di papan ketik. Label pemasaran sebuah penyimpanan tidak menjawab keduanya. Daemon terowongan yang harus kembali setelah reboot membutuhkan pemakaian tanpa pengawasan, yang menyingkirkan segala hal yang bergantung pada PIN yang diketik manusia.
Pilih antara menyalin dan memakai
Penyalinan dan pemakaian gagal dengan cara berbeda, jadi perlakukan keduanya sebagai dua persyaratan, bukan satu. Penyerang yang dapat membaca byte kunci membawa identitas ke host lain, dan mesin asal tidak menyadarinya. Penyerang yang tidak dapat membaca byte tetapi mencapai proses penandatanganan tetap terautentikasi selama akses itu berlangsung.
Kunci dalam file mudah disalin, karena itu juga paling mudah dicadangkan dan dipulihkan. Penyimpanan kunci perangkat lunak mengubah API, bukan batas: penyedia menolak panggilan ekspornya sendiri, tetapi konteks administrator yang sama yang memasang kunci biasanya punya rute lain ke materi. Tidak dapat diekspor pada penyedia perangkat lunak adalah pernyataan tentang operasi yang didukung, bukan bukti dinding perangkat keras. Anggap itu polisi tidur terhadap penyalinan biasa, bukan perlindungan dari orang yang sudah memegang sesi Anda.
TPM atau kartu pintar menjalankan operasi penandatanganan di dalam perangkat keras dan hanya mengembalikan hasilnya. Itu menutup jalur penyalinan dan membiarkan jalur pemakaian terbuka bagi apa pun yang dapat meminta tanda tangan.
Cocokkan penyimpanan dengan daemon terowongan
Daemon membatasi ini lebih dari kebijakan keamanan. WireGuard mengambil kunci privat base64 dari file atau dari masukan wg set dan tidak punya rute ke penyimpanan sertifikat, sehingga kunci antarmuka berbasis TPM tidak dipertimbangkan. OpenVPN yang dibangun terhadap OpenSSL 3 dapat memuat kunci lewat URI penyedia, dan strongSwan menyertakan plugin TPM bersama dukungan PKCS#11, tetapi keduanya bergantung pada cara paket Anda dikompilasi.
Daemon yang tidak dapat mencapai penyimpanan terpilih menjadikan batas perangkat keras sekadar hiasan. Seseorang mengekspor kunci sekali, membiarkannya di file, dan sisa desain berjalan diam-diam pada salinan itu.
Pembaruan adalah separuh lain dari pencocokan, dan di situlah sebagian besar desain runtuh. Penyimpanan yang berfungsi pada pendaftaran pertama tetapi menuntut login konsol untuk setiap penerbitan ulang akan dilewati saat sertifikat kedaluwarsa pada jam yang tidak nyaman. Uji jalur penerbitan ulang selagi kunci saat ini masih punya bulan-bulan.
Inventarisasi kunci sebelum memindahkannya
Catat apa itu kunci sebelum mengubah di mana ia tinggal, karena migrasi yang kehilangan subject alternative names memutus terowongan dengan cara yang terbaca sebagai kesalahan perutean. Buang sertifikat, pastikan kunci privat terbaca di tempat daemon mengharapkannya, dan periksa pasangan itu benar-benar cocok.
openssl x509 -in vpn.crt -noout -subject -ext subjectAltName
openssl pkey -in vpn.key -check -noout
openssl x509 -in vpn.crt -noout -pubkey | openssl sha256
openssl pkey -in vpn.key -pubout | openssl sha256
Dua ringkasan terakhir harus identik. Jika tidak, daemon menyelesaikan penyiapan lalu gagal pada setiap percobaan dengan kesalahan sertifikat atau tanda tangan yang tidak menunjuk ke mana pun dekat penyebab sebenarnya. Padanan WireGuard lebih pendek, karena kunci publik diturunkan langsung dari kunci privat: wg pubkey < /etc/wireguard/wg0.key harus mencetak kunci rekan yang sudah disimpan server Anda.
Izin termasuk dalam inventaris yang sama. stat -c '%a %U:%G' /etc/wireguard/wg0.key seharusnya mengembalikan 600 root:root, dan apa pun yang terbaca oleh grup atau dunia berarti kunci sudah tersedia bagi proses yang tidak pernah Anda maksudkan.
Periksa penyimpanan dan jalur pemakaian
Verifikasi punya tiga bagian, dan bagian ketiga itulah yang dilewati. Pastikan kunci ada di penyimpanan yang dipilih, pastikan daemon memuat kunci itu dan bukan salinan tersisa, lalu pastikan ia masih mulai saat artefak ekspor sudah hilang.
certutil -store -user My
certutil -csp "Microsoft Platform Crypto Provider" -key -user
certutil -verifykeys -user My
ipsec listcerts
Di Windows perintah pertama mendaftar penyimpanan pribadi dan mencetak penyedia kunci di samping setiap entri, dan di situlah sertifikat yang tampak didukung perangkat keras tetapi duduk di penyedia perangkat lunak muncul. Yang kedua mendaftar kunci yang dipegang penyedia kripto platform, jadi identitas VPN yang tidak ada di sana sementara sertifikatnya ada berarti separuh privatnya tinggal di tempat lain. Di gateway Linux, ipsec listcerts melaporkan apa yang dimuat strongSwan, termasuk kunci yang datang dari plugin TPM. Bandingkan sidik jari atau hash kunci publik dengan inventaris alih-alih mempercayai jumlah entri.
Uji negatif adalah yang membuktikan desain. Pindahkan kunci yang diekspor keluar dari direktori konfigurasi daemon, mulai ulang layanan, dan baca di log identitas apa yang disajikannya. Terowongan yang tetap naik menggunakan penyimpanan; kegagalan start berarti desain itu benar-benar berjalan pada salinan.
Tulis pembaruan dan pemulihan
Pemulihan berbeda tajam antara dua keluarga, dan perbedaan itu milik catatan desain, bukan panggilan insiden. Kunci file dapat dicadangkan terenkripsi dan dipulihkan, sehingga migrasi yang gagal bersifat reversibel. Kunci yang tidak dapat diekspor tidak dapat dicadangkan sama sekali, yang menjadikan penerbitan ulang dan pendaftaran ulang satu-satunya jalur pemulihan ketika perangkat mati.
Periksa kedaluwarsa sebelum menjadi gangguan: openssl x509 -in vpn.crt -noout -checkend 2592000 berakhir dengan kode bukan nol ketika sertifikat kedaluwarsa dalam tiga puluh hari, sehingga langsung masuk ke pemeriksaan pemantauan. Menjalankan baris itu setiap minggu menangkap pembaruan yang tidak direncanakan siapa pun.
Penghapusan terjadi di server: hapus rekan atau cabut nomor seri, lalu pastikan terowongan gagal, karena klien dengan sesi tersimpan di cache dapat menyembunyikan pencabutan setengah jadi untuk sementara. Pencabutan juga harus mencapai jalur CRL atau OCSP konsentrator, bukan hanya basis data CA. Sertifikat adalah dokumen publik, dan profil RFC 5280 mencakup cara validasinya; tidak ada bagian dari validasi itu yang melindungi kunci privat yang disalin sebelum rotasi.
Tulis keputusan di satu tempat: penyimpanan mana yang memegang kunci, proses mana yang boleh memakainya, siapa yang dapat menerbitkannya ulang, dan apa pemulihannya. Paragraf itulah yang ditanyakan auditor, dan itulah yang bertahan saat staf berganti.