Di manakah kunci persendirian VPN patut tinggal: fail, CNG atau TPM?
Pilih antara fail kunci, stor perisian yang tidak boleh dieksport dan TPM untuk identiti VPN, kemudian buktikan pilihan dengan arahan dan pelan pemulihan.
Dua soalan menentukan di mana kunci persendirian VPN berada: bolehkah bahan kunci disalin dari hos, dan bolehkah sesuatu proses menggunakannya tanpa sesiapa di papan kekunci. Label pemasaran sesuatu stor tidak menjawab kedua-duanya. Daemon terowong yang perlu kembali selepas but semula memerlukan penggunaan tanpa pengawasan, yang menyingkirkan apa-apa yang bergantung pada PIN yang ditaip manusia.
Pilih antara menyalin dan menggunakan
Penyalinan dan penggunaan gagal secara berbeza, jadi anggap keduanya sebagai dua keperluan, bukan satu. Penyerang yang boleh membaca bait kunci membawa identiti ke hos lain, dan mesin asal tidak menyedarinya. Penyerang yang tidak boleh membaca bait tetapi mencapai proses tandatangan masih disahkan selagi akses itu berterusan.
Kunci dalam fail mudah disalin, sebab itu juga ia paling mudah disandarkan dan dipulihkan. Stor kunci perisian mengubah API, bukan sempadan: penyedia menolak panggilan eksportnya sendiri, tetapi konteks pentadbir yang sama yang memasang kunci biasanya mempunyai laluan lain ke bahan itu. Tidak boleh dieksport pada penyedia perisian ialah kenyataan tentang operasi yang disokong, bukan bukti dinding perkakasan. Anggapnya sebagai penghalang laju terhadap penyalinan sambil lewa, bukan perlindungan daripada seseorang yang sudah memegang sesi anda.
TPM atau kad pintar menjalankan operasi tandatangan di dalam perkakasan dan hanya memulangkan hasilnya. Itu menutup laluan salinan dan membiarkan laluan penggunaan terbuka kepada apa-apa yang boleh meminta tandatangan.
Padankan stor dengan daemon terowong
Daemon mengehadkan ini lebih daripada dasar keselamatan. WireGuard mengambil kunci persendirian base64 daripada fail atau daripada input wg set dan tiada laluan ke stor sijil, jadi kunci antara muka yang disokong TPM tidak dipertimbangkan. OpenVPN yang dibina terhadap OpenSSL 3 boleh memuatkan kunci melalui URI penyedia, dan strongSwan menyertakan pemalam TPM bersama sokongan PKCS#11, tetapi kedua-duanya bergantung pada cara pakej anda dikompil.
Daemon yang tidak dapat mencapai stor yang dipilih menjadikan sempadan perkakasan sebagai hiasan. Seseorang mengeksport kunci sekali, membiarkannya dalam fail, dan seluruh reka bentuk berjalan senyap pada salinan itu.
Pembaharuan ialah separuh lagi padanan, dan di situlah kebanyakan reka bentuk runtuh. Stor yang berfungsi pada pendaftaran pertama tetapi menuntut log masuk konsol bagi setiap pengeluaran semula akan dipintas pada kali pertama sijil tamat pada waktu yang tidak sesuai. Uji laluan pengeluaran semula selagi kunci semasa masih ada berbulan-bulan.
Inventori kunci sebelum memindahkannya
Catat apa itu kunci sebelum menukar di mana ia tinggal, kerana migrasi yang kehilangan subject alternative names memutuskan terowong dengan cara yang terbaca sebagai kesalahan penghalaan. Buang sijil, sahkan kunci persendirian boleh dibaca di tempat daemon menjangkakannya, dan periksa pasangan itu benar-benar sepadan.
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 mesti sama. Jika tidak, daemon menyelesaikan persediaan dan kemudian gagal pada setiap percubaan dengan ralat sijil atau tandatangan yang tidak menunjuk ke mana-mana dekat punca sebenar. Padanan WireGuard lebih pendek, kerana kunci awam diterbitkan terus daripada kunci persendirian: wg pubkey < /etc/wireguard/wg0.key mesti mencetak kunci rakan yang sudah disimpan pelayan anda.
Kebenaran tergolong dalam inventori yang sama. stat -c '%a %U:%G' /etc/wireguard/wg0.key sepatutnya memulangkan 600 root:root, dan apa-apa yang boleh dibaca oleh kumpulan atau dunia bermakna kunci itu sudah tersedia kepada proses yang tidak pernah anda maksudkan.
Periksa stor dan laluan penggunaan
Pengesahan mempunyai tiga bahagian, dan bahagian ketiga itulah yang dilangkau. Sahkan kunci wujud dalam stor yang dipilih, sahkan daemon memuatkan kunci itu dan bukan salinan yang tertinggal, kemudian sahkan ia masih bermula apabila artifak eksport sudah tiada.
certutil -store -user My
certutil -csp "Microsoft Platform Crypto Provider" -key -user
certutil -verifykeys -user My
ipsec listcerts
Di Windows arahan pertama menyenaraikan stor peribadi dan mencetak penyedia kunci di sebelah setiap entri, dan di situlah sijil yang kelihatan disokong perkakasan tetapi duduk dalam penyedia perisian muncul. Yang kedua menyenaraikan kunci yang dipegang penyedia kripto platform, jadi identiti VPN yang tiada di situ sedangkan sijilnya ada bermakna separuh persendirian tinggal di tempat lain. Di get laluan Linux, ipsec listcerts melaporkan apa yang dimuatkan strongSwan, termasuk kunci yang datang daripada pemalam TPM. Bandingkan cap jari atau cincangan kunci awam dengan inventori daripada mempercayai bilangan entri.
Ujian negatif ialah yang membuktikan reka bentuk. Pindahkan kunci yang dieksport keluar daripada direktori konfigurasi daemon, mulakan semula perkhidmatan, dan baca dalam log identiti apa yang dipaparkannya. Terowong yang tetap naik menggunakan stor; kegagalan bermula bermakna reka bentuk itu benar-benar berjalan pada salinan.
Tulis pembaharuan dan pemulihan
Pemulihan berbeza tajam antara dua keluarga, dan perbezaan itu milik nota reka bentuk, bukan panggilan insiden. Kunci fail boleh disandarkan secara penyulitan dan dipulihkan, jadi migrasi yang gagal boleh diterbalikkan. Kunci yang tidak boleh dieksport tidak boleh disandarkan langsung, yang menjadikan pengeluaran semula dan pendaftaran semula satu-satunya laluan pemulihan apabila peranti mati.
Periksa tamat tempoh sebelum ia menjadi gangguan: openssl x509 -in vpn.crt -noout -checkend 2592000 berakhir dengan kod bukan sifar apabila sijil tamat dalam tiga puluh hari, jadi ia masuk terus ke pemeriksaan pemantauan. Menjalankan baris itu setiap minggu menangkap pembaharuan yang tiada siapa merancang.
Pembuangan berlaku di pelayan: hapuskan rakan atau batalkan nombor siri, kemudian sahkan terowong gagal, kerana klien dengan sesi dalam cache boleh menyembunyikan pembatalan separuh siap untuk seketika. Pembatalan juga mesti sampai ke laluan CRL atau OCSP pemusat, bukan hanya pangkalan data CA. Sijil ialah dokumen awam, dan profil RFC 5280 merangkumi cara ia disahkan; tiada apa dalam pengesahan itu melindungi kunci persendirian yang disalin sebelum putaran.
Tulis keputusan di satu tempat: stor mana yang memegang kunci, proses mana yang boleh menggunakannya, siapa yang boleh mengeluarkannya semula dan apa pemulihannya. Perenggan itulah yang ditanya juruaudit, dan itulah yang bertahan apabila kakitangan berganti.