Koneksi OpenVPN gagal, seseorang menemukan perbaikan satu baris yang menambahkan SECLEVEL=0, dan terowongan naik. Yang berubah bukan sertifikat dan bukan rangkaian sandi; ambang penerimaan di seluruh pustaka bergeser, dan semua yang dilakukan proses setelahnya mewarisi batas baru. Itu layak dipahami sebelum baris yang sama disalin ke setiap profil di lingkungan.

Tentukan pustaka mana dan kebijakan mana yang berlaku

SECLEVEL adalah konsep OpenSSL, jadi pertanyaan pertama adalah apakah build Anda memakai OpenSSL sama sekali. OpenVPN dapat ditautkan ke lebih dari satu pustaka kriptografi, dan pengaturan yang berlaku untuk salah satunya tidak berarti bagi yang lain. Tanyakan kepada biner dengan apa ia dibangun, lalu tanyakan kepada pustaka versi dan konfigurasi apa yang dimuatnya:

openvpn --version | head -3
openssl version -a

Baca keluaran versi dengan cermat, karena distribusi menambal nilai bawaan. Sebagian mengirim konfigurasi sistem yang menaikkan level minimum di atas bawaan upstream, dan itulah sebabnya profil yang sama berperilaku berbeda pada dua mesin dengan paket OpenVPN identik. Kebijakan yang efektif adalah yang dimuat proses yang berjalan, bukan yang ada di manual upstream.

Lalu pisahkan dua lapisan yang dicampuradukkan orang. OpenVPN punya kendali TLS sendiri, termasuk pengaturan profil sertifikat dan daftar sandi eksplisit, dan semuanya berada di atas apa pun yang ditegakkan pustaka. Menurunkan level pustaka tidak mengubah sandi mana yang dicantumkan konfigurasi OpenVPN Anda, dan mempersempit daftar OpenVPN tidak menaikkan ambang pustaka. Mengetahui lapisan mana yang menolak Anda itulah yang mencegah perbaikan tetap menjadi tebakan.

Pisahkan tiga hal yang dapat ditolak

Kandidat pertama adalah materi identitas: sertifikat yang kuncinya terlalu kecil atau yang algoritme tanda tangannya tidak lagi diterima kebijakan. Yang kedua adalah parameter pertukaran kunci, seperti grup yang dianggap kebijakan terlalu lemah. Yang ketiga adalah rangkaian sandi yang dikecualikan kebijakan. Ketiganya dapat menyebabkan kegagalan handshake, dan hanya teks galat serta tahap negosiasi yang membedakannya.

Tak satu pun dari ketiganya adalah sandi kanal data. OpenVPN menegosiasikan enkripsi terowongannya terpisah dari handshake TLS, jadi koneksi yang berhasil setelah perubahan level keamanan tidak mengatakan apa pun tentang sandi mana yang melindungi muatan Anda. Jika pertanyaan yang sebenarnya Anda ajukan adalah tentang kerahasiaan data, Anda melihat tombol yang sama sekali salah.

Menurunkan level memperluas penerimaan untuk ketiga input sekaligus. Inilah bagian yang dilewatkan orang: perbaikan yang menerima sertifikat lama juga menerima grup lemah dan rangkaian yang mungkin tidak Anda maksudkan untuk diizinkan. Satu galat memicu perubahan, dan perubahannya lebih luas daripada galat itu. Asimetri itulah alasan pengecualian terbatas lebih baik daripada nilai bawaan untuk seluruh lingkungan.

Ubah inputnya, bukan ambangnya

Simpan galat persisnya sebelum menyentuh konfigurasi, termasuk tahap yang melaporkannya dan objek yang disebutkannya. Masalah sertifikat diselesaikan dengan mengganti sertifikat dengan sesuatu yang diterima kebijakan saat ini, yang biasanya berarti menerbitkannya ulang dari otoritas alih-alih memasang ulang berkas yang sama.

Jika input yang ditolak milik peer yang tidak Anda kendalikan, pembicaraannya dengan pemilik peer itu tentang materi pengganti yang didukung. Menurunkan ambang Anda sendiri untuk mengakomodasi sistem yang tidak dirawat siapa pun memindahkan biayanya dari mereka ke semua yang terhubung setelahnya.

Di tempat server menegakkan kebijakan, periksa apakah pengaturan tingkat OpenVPN adalah penyebab sebenarnya sebelum menyalahkan pustaka. Profil sertifikat yang meminta kelas lebih ketat daripada yang dapat dipenuhi sertifikat terpasang akan gagal apa pun level keamanannya, dan menghapus profil itu adalah perubahan yang lebih sempit daripada mematikan pemeriksaan pustaka.

Jika harus menurunkannya, batasi dan catat

Kadang pengecualian kompatibilitas yang disetujui adalah jawaban yang tepat, terutama untuk peer lama dengan rencana pensiun bertanggal. Batasi pada layanan yang membutuhkannya alih-alih seluruh host: berkas konfigurasi per layanan atau konfigurasi OpenSSL khusus memiliki radius dampak lebih kecil daripada ekspor di profil global.

Tuliskan empat hal bersama pengecualian: pengaturan persisnya, pemilik yang menyetujuinya, klien yang terpengaruh, dan kondisi saat pengecualian itu dicabut. Pengecualian tanpa syarat pensiun adalah pelemahan permanen dengan pembenaran sementara yang menempel.

Pengembalian harus berupa satu langkah yang sudah Anda uji. Simpan konfigurasi sebelumnya, terapkan perubahan, pastikan layanan mulai, dan ketahui persis berkas mana yang dipulihkan jika koneksi berikutnya berperilaku berbeda dari yang diharapkan.

Verifikasi identitas dan perlindungan setelahnya

Koneksi yang berhasil hanya membuktikan bahwa kondisi yang direvisi menerimanya. Pastikan verifikasi nama host dan peer masih menjalankan tugasnya, sertifikat yang dipakai adalah yang Anda maksudkan untuk diterapkan, dan kanal data yang dinegosiasikan cocok dengan kebijakan yang Anda kira miliki.

openssl x509 -in /etc/openvpn/client.crt -noout -subject -dates -text | grep -E 'Signature Algorithm|Public-Key'
openvpn --show-tls | head -20

Referensi tingkat keamanan OpenSSL menyatakan dengan jelas bahwa kerangka kerja menerapkan batas pada kunci, tanda tangan, grup, dan rangkaian sekaligus, dan bahwa level nol mengizinkan semua yang diperiksa callback. Itulah cakupan perubahan Anda, dan itulah kalimat yang dikutip ketika seseorang bertanya apakah perbaikannya sempit.

Serah terima yang lolos audit menyebutkan kebijakan mana yang menolak input mana, apa yang diubah, dan apa yang tetap diterima sebagai hasilnya. „Ini berfungsi dengan SECLEVEL=0“ adalah pengamatan tentang satu koneksi, bukan penilaian keamanan penerapan.

Artikel terkait