Jauhkan Kunci Penandatanganan CA OpenVPN dari /etc/openvpn
Ruang kerja CA menerbitkan identitas; layanan hanya mengonsumsi materi yang sudah diterapkan. Beri setiap peran akun, direktori, dan cadangan sendiri, lalu verifikasi keduanya.
Dua direktori yang tampak serupa dalam tutorial melakukan pekerjaan yang sangat berbeda. Satu menyimpan otoritas sertifikat: kunci privatnya, penghitung nomor seri, dan catatan semua yang telah ditandatanganinya. Yang lain menyimpan apa yang dibutuhkan daemon untuk mulai dan melayani klien. Menempatkan keduanya di host yang sama di bawah akun yang sama nyaman untuk satu sore dan mahal selama sisa umur penerapan, karena daemon kemudian berjalan di samping satu kunci yang dapat mencetak identitas apa pun yang diinginkannya.
Apa isi ruang kerja CA
Direktori PKI adalah keadaan penerbit, bukan konfigurasi. Isinya kunci privat dan sertifikat CA, berkas nomor seri, indeks sertifikat yang diterbitkan, dan materi per identitas yang dihasilkan darinya.
Menandatangani permintaan mengubah keadaan itu, karena itu ruang kerja menjadi milik akun yang dikendalikan administrator di host tempat layanan VPN tidak berjalan. Siapa pun yang dapat membaca kunci privat CA dapat menerbitkan sertifikat yang akan dipercaya server, jadi perlindungan kunci adalah seluruh model kepercayaan dalam satu berkas. Menyalinnya ke lokasi kedua untuk menghemat satu langkah menciptakan benda kedua untuk dilindungi dan benda kedua untuk dilupakan. Setiap tanda tangan juga menaikkan nomor seri dan menambahkan entri ke indeks, karena itu ruang kerja adalah satu salinan keadaan, bukan folder berisi berkas.
Sertifikat CA publik berbeda. Sertifikat itu memang untuk didistribusikan, dan itulah yang dipakai klien dan server untuk saling memverifikasi.
Apa yang dibaca daemon saat mulai
Server yang berjalan mengonsumsi kumpulan kecil: sertifikatnya sendiri, kunci privatnya sendiri, sertifikat CA untuk memverifikasi peer, dan materi kunci apa pun yang dibutuhkan mode pilihannya. Server membaca jalur-jalur itu saat mulai dan lagi saat dimuat ulang.
Kepemilikan harus dievaluasi terhadap unit yang benar-benar diluncurkan, bukan terhadap shell root interaktif. Sandboxing yang dideklarasikan dapat membuat sebagian sistem berkas menjadi hanya-baca atau tidak terlihat bahkan ketika uji manual sebagai root berhasil.
systemctl show -p User -p Group -p ReadOnlyPaths [email protected]
stat -c '%a %U:%G' /etc/openvpn/server/server.key
runuser -u openvpn -- test -r /etc/openvpn/server/server.key; echo $?Baris ketiga itulah yang dilewatkan orang. Baris itu menanyakan kepada akun daemon sendiri apakah ia dapat membaca kunci, dan itulah satu-satunya versi pertanyaan yang penting setelah hak istimewa diturunkan. Kode keluar nol sebagai root tidak memberi tahu apa pun tentang apa yang terjadi setelah penurunan itu.
Kedua jalur kesalahan itu layak dipisahkan sebelum Anda mengubah izin apa pun. Kegagalan penandatanganan menunjuk ke direktori PKI, izin pencarian pada direktori induknya, dan akun yang menjalankan penerbit. Kegagalan saat mulai menunjuk ke unit, direktori kerjanya, dan jalur yang disebutkan dalam konfigurasi server. Membuat seluruh pohon dapat dibaca semua orang tidak memperbaiki keduanya, dan menghapus batas yang menjadi sandaran keduanya.
Mengapa menyalin kunci CA ke server gagal di kemudian hari
Salinan biasanya dimulai sebagai langkah penelusuran kesalahan: seseorang ingin memperbarui klien di host VPN, jadi kunci CA berakhir di /etc/openvpn dan pembaruan berhasil. Tugas langsungnya berhasil, dan batasnya hilang.
Lalu server dicadangkan, dan otoritas penandatanganan ikut masuk ke cadangan. Snapshot, bundel dukungan, atau salinan direktori konfigurasi kini membawa kemampuan menerbitkan identitas tepercaya selama CA masih valid. Siapa pun yang memegang salinan itu dapat mencetak sertifikat untuk nama apa pun yang diterima server, termasuk nama yang tidak pernah diterbitkan. Satu-satunya catatan tentang penerbitan itu adalah yang mereka pilih untuk disimpan.
Pemulihan dari keadaan itu bukan soal menghapus berkas. Anda harus memutuskan apakah kunci telah terekspos, merotasi CA jika demikian, dan membagikan ulang kepercayaan ke setiap peer. Ruang kerja terpisah menghindari seluruh pembicaraan itu.
Akun, direktori, cadangan
Beri penerbit akun dan direktori beranda sendiri, dijauhkan dari host VPN bila praktis. Beri daemon akun berbeda, dengan akses baca ke materi yang diterapkan dan akses tulis ke apa pun yang menerbitkan sertifikat. Terapkan dengan menyalin sertifikat publik ke luar dan jangan pernah menarik keadaan privat penerbit ke dalam. Cadangkan kedua peran secara terpisah, karena sensitivitas dan kisah pemulihannya berbeda.
Setelah pencabutan, perbarui berkas CRL yang disebut konfigurasi server, lalu muat ulang layanan agar koneksi baru membacanya. Dokumentasi Easy-RSA mencakup tata letak ruang kerja dan alur penandatanganan; aturan kepemilikan di sekitarnya tetap menjadi keputusan tentang host Anda. Pastikan apa yang dimuat layanan dengan openssl crl -in /etc/openvpn/crl.pem -noout -lastupdate -nextupdate alih-alih menganggap pemuatan ulang sudah mengambilnya.
Uji yang membuktikan pemisahan
Periksa kasus negatifnya, bukan hanya yang berfungsi. Tandatangani sertifikat dari akun penerbit sesuai rancangan, lalu pastikan akun yang sama tidak dapat memulai layanan atau membaca kunci privat server. Lalu pastikan akun daemon tidak dapat membaca kunci privat CA.
Ketiga pemeriksaan itu memakan beberapa menit dan bertahan terhadap pergantian staf, karena itu pernyataan tentang izin, bukan tentang kebiasaan. Tuliskan hasilnya bersama jalur dan akun yang dicakupnya, plus tanggal Anda menjalankannya. Orang berikutnya yang mewarisi penerapan ini jika tidak akan menurunkan kembali batas itu dari tutorial yang tidak pernah memilikinya. Catatan bertanggal juga yang membuat tinjauan berikutnya memakan beberapa menit alih-alih satu sore.