Mengapa kunci server dan kredensial pengguna memerlukan pemilik terpisah
Identitas gateway dan izin pengguna adalah dua rahasia berbeda dengan dampak berbeda. Tiga pertanyaan menentukan cara menyimpan, menyerahkan, dan mencabut masing-masing.
Kunci yang membuktikan bahwa gateway Anda adalah dirinya sendiri dan kredensial yang menyatakan seseorang boleh bergabung keduanya adalah rahasia, dan di situlah kemiripannya berakhir. Yang satu mengenali layanan kepada setiap klien; yang lain mengenali satu pengguna kepada layanan tersebut. Mencampurnya menghemat satu langkah saat penyiapan dan memakan satu sore saat insiden, karena pemulihan untuk masing-masing bukan operasi yang sama. Pemisahan itu membosankan untuk disiapkan dan mudah diingat untuk dilewati.
Dua rahasia, dua pemilik berbeda
Gateway menyimpan kunci privat atau sertifikat yang satu-satunya tugas adalah membuktikan identitasnya selama jabat tangan. Klien memerlukan materi publik yang cocok untuk memverifikasinya, dan mereka tidak pernah memerlukan separuh privatnya. Asimetri itulah yang memungkinkan autentikasi server tanpa memberikan kemampuan meniru server kepada setiap pengguna.
Materi pengguna bergerak ke arah sebaliknya. Kunci privat klien, sertifikat klien, atau kata sandi menunjukkan bahwa orang atau perangkat tertentu ini diberi akses. Materi itu diperkirakan akan didistribusikan, disalin antar perangkat, dan akhirnya dicabut.
WireGuard membuat pemisahan itu jelas karena setiap peserta memiliki pasangan kunci: kunci privat server tetap di server, dan berkas konfigurasi yang Anda berikan kepada pengguna memuat kunci privat mereka sendiri ditambah kunci publik server. Profil yang memuat kunci privat server bukan jalan pintas, melainkan kompromi yang menunggu berbagi berkas.
Tiga pertanyaan yang menentukan pemisahan
Tanyakan siapa yang harus dapat membaca rahasia itu, apa yang dapat dilakukan penyerang jika rahasia itu terbuka, dan apakah perbaikannya satu pencabutan atau pembangunan ulang layanan.
Jika pengguna dapat membacanya dan itu membuktikan identitas gateway, jawaban atas pertanyaan kedua adalah penyerang dapat meniru server Anda di hadapan setiap klien — hasil terburuk, karena klien dirancang untuk memercayai identitas itu. Jika itu hanya membuktikan satu pengguna, paparan tersebut memberi pengguna itu akses ke satu peer, dan pencabutan adalah operasi rutin. Jika itu kunci otoritas sertifikat, paparannya lebih buruk daripada keduanya, karena penyerang dapat membuat identitas yang dipercaya setiap titik akhir.
Ketiga jawaban itu menghasilkan aturan penyimpanan: kunci CA hidup offline atau di brankas, kunci gateway hidup di gateway, dan kunci pengguna hidup bersama pengguna. Tata letak apa pun yang menempatkan ketiganya dalam satu direktori demi kenyamanan telah mengubah keputusan menjadi kecelakaan.
Apa yang sebenarnya dibutuhkan klien
Klien memerlukan sertifikat publik atau kunci publik peer, materi CA atau sidik jari yang harus dipercayainya, kunci privatnya sendiri, dan detail titik akhir. Daftar itu tidak memuat apa pun yang termasuk identitas privat gateway.
Dokumentasi adalah tempat kebocorannya. Panduan yang menyuruh menyalin direktori server dan menghapus yang tidak perlu sudah mengajarkan model yang salah, karena berkas yang tersisa setelah langkah penghapusan jarang diperiksa siapa pun.
Cabut satu pengguna tanpa menyentuh gateway
Karena identitas pengguna diterbitkan terpisah, mereka dapat ditarik terpisah. Penerapan berbasis sertifikat mencabut sertifikat klien dan menerbitkan daftar pencabutan yang diperbarui; penerapan WireGuard menghapus entri peer dari konfigurasi server. Tidak satu pun operasi itu mengubah kunci gateway itu sendiri.
Simpan catatan penerbitan, atau Anda tidak akan tahu identitas mana yang harus ditarik. Lembar kerja sudah cukup, asalkan mencantumkan orang, perangkat, nomor seri atau kunci publik, dan tanggal, serta asalkan seseorang memeliharanya setelah orang yang membangunnya pergi.
Perintah di bawah memeriksa sertifikat klien lalu mencabutnya melalui otoritas bergaya OpenSSL, yang merupakan alur yang dibungkus easy-rsa:
openssl x509 -in client.crt -noout -subject -serial
openssl ca -config openssl.cnf -revoke client.crt
openssl ca -config openssl.cnf -gencrl -out crl.pemTerbitkan daftar baru di tempat klien memeriksanya, atau pencabutan itu hanya catatan dalam berkas yang tidak mengubah apa pun. Jika gateway Anda menerima sertifikat klien tanpa memeriksa daftar pencabutan, katakan itu secara eksplisit alih-alih menyiratkan bahwa pencabutan berfungsi.
Jaga cadangan tetap terpisah seperti rahasianya
Arsip pembangunan ulang secara sah memuat kunci gateway dan materi CA, karena tanpanya pemulihan tidak dapat mereproduksi layanan. Paket penyiapan klien tidak boleh, dan keduanya tidak boleh disimpan bersama. Beri label setiap arsip menurut siapa yang boleh menyimpannya, bukan menurut tanggal pembuatannya. Label itulah yang dibaca administrator yang lelah pada pukul dua pagi.
Perbedaan itu juga menetapkan siapa yang boleh mengambil masing-masing. Mengelola gateway, menerbitkan identitas pengguna, dan membaca cadangan adalah tiga kuasa berbeda, dan orang yang memerlukan satu tidak otomatis memerlukan yang lain. Tuliskan izin itu, lalu periksa terhadap apa yang sebenarnya diizinkan penyimpanan Anda, karena pewarisan direktori diam-diam memberikan lebih banyak daripada yang dimaksud kebijakan.