Tingkat script-security OpenVPN dari 0 hingga 3, dan apa yang dibuka masing-masing
Setiap tingkat script-security memperluas apa yang boleh dijalankan profil: mula-mula pembantu administrasi, lalu skrip pengguna, lalu kata sandi di lingkungan. Bacalah direktifnya.
Impor profil ke klien desktop dan kegagalan pertama sering kali berupa baris yang menolak dipatuhi klien: kait skrip yang tidak akan dijalankannya, atau nilai script-security yang dianggapnya terlalu permisif. Menaikkan angkanya membuat dialog itu hilang. Namun itu juga memperluas apa yang boleh dijalankan profil tersebut di mesin Anda, sesuatu yang aneh untuk diberikan hanya demi menutup peringatan. Ikuti impor hingga ke direktifnya dan keputusannya menjadi konkret.
Dari dialog impor ke direktif
Profil adalah berkas teks berisi direktif, dan klien membacanya sebelum ada terowongan. Direktif seperti up, down, atau tls-verify menyebut program eksternal yang harus dijalankan OpenVPN pada saat tertentu. Apakah OpenVPN bersedia menjalankannya adalah pengaturan terpisah bernama script-security, dan profil biasanya juga menetapkannya.
Jadi peringatan itu bukan soal kriptografi atau sertifikat. Ini soal berkas konfigurasi yang meminta klien menjalankan sesuatu di host, dan soal klien yang memeriksa apakah tingkat izinnya saat ini membolehkan permintaan itu.
Dua kegagalan berbeda tampak serupa pada tahap ini. Profil yang meminta tingkat yang tidak akan diberikan klien menghasilkan penolakan. Profil yang meminta tingkat yang diberikan klien tetapi skripnya hilang menghasilkan kegagalan saat dijalankan, dan keduanya tertukar di utas dukungan. Yang satu soal izin dan yang lain soal pengemasan.
Apa yang sebenarnya dibuka tiap tingkat
Tingkat 0 melarang sepenuhnya pemanggilan program eksternal, yang koheren bagi klien yang mengonfigurasi antarmukanya sendiri tanpa bantuan dan tidak koheren bagi klien yang memanggil sistem operasi. Tingkat 1, bawaan, mengizinkan berkas eksekusi bawaan yang dibutuhkan konfigurasi antarmuka dan rute. Tak satu pun dari kedua tingkat itu menjalankan apa pun yang disediakan pengguna.
| Level | What OpenVPN may execute | What it exposes |
|---|---|---|
| 0 | No external programs at all | Interface and route setup must not depend on helpers |
| 1 (default) | Built-in helpers such as ip, ifconfig, route or netsh | Privileged commands the platform already ships |
| 2 | Built-in helpers plus user-defined scripts | Whatever the named script does with the client's privileges |
| 3 | Everything above, plus passwords in environment variables | Credentials visible to child processes and their logs |
Tingkat 2 adalah batas yang menarik, karena mengizinkan skrip yang ditentukan pengguna. Sejak titik itu hak istimewa klien berlaku pada kode yang mungkin belum pernah Anda baca, dipanggil pada saat yang tidak Anda pilih, dengan lingkungan yang memuat detail koneksi. Tingkat 3 melangkah lebih jauh dan mengizinkan kata sandi diteruskan melalui variabel lingkungan, karena itu panduan menyebutnya berpotensi tidak aman.
Tidak satu pun dari angka-angka ini adalah pengaturan kekuatan. Profil pada tingkat 3 tidak memiliki enkripsi yang lebih baik daripada profil pada tingkat 1; ia hanya punya permukaan eksekusi yang lebih besar, dan terowongannya identik.
Putuskan apa yang pantas didapat profil
Tanyakan untuk apa skrip itu sebelum menanyakan tingkat mana yang dibutuhkannya. Kait yang mendorong pengaturan DNS atau memperbaiki rute setelah terhubung adalah alasan sah untuk menjalankan sesuatu. Kait yang memanggil biner asing di direktori sementara adalah alasan untuk berhenti.
Jalur skrip sama pentingnya dengan skripnya. Jalur relatif diselesaikan terhadap direktori mana pun yang dipakai klien, dan direktori yang bisa ditulisi mengubah impor sekali jalan menjadi slot eksekusi permanen. Jalur absolut di direktori yang tidak bisa diubah pengguna adalah bentuk yang sebaiknya dipilih.
Skrip juga mewarisi lingkungan klien, tempat kredensial dan metadata koneksi berada. Warisan itulah yang membuat tingkat 3 berbahaya bila dipadukan dengan skrip yang mencatat lingkungannya, dan itulah sebabnya buangan diagnostik dari klien dengan skrip aktif layak dilihat dua kali sebelum ditempel ke tiket. Bersihkan lingkungan sebelum membagikannya.
grep -nE 'script-security|^up |^down |tls-verify' client.ovpnUbah satu hal, lalu perhatikan juga pembongkarannya
Jika profil benar-benar membutuhkan skrip, ubah hanya tingkatnya dan hanya untuk profil itu. Jalankan klien di latar depan dengan keluaran rinci agar kesalahan skrip itu sendiri terlihat, bukan ditelan manajer layanan.
openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default
Uji seluruh daur hidup, bukan hanya koneksi. Kait bawah yang gagal meninggalkan rute yang menunjuk ke terowongan mati, yang menghasilkan mesin yang tampak terhubung dan tidak bisa mencapai apa pun. Hubungkan ulang sekali dan putuskan sekali sebelum menyatakan perubahan selesai, lalu periksa tabel perutean setelah masing-masing.
Simpan salinan profil asli. Jika klien platform tidak menerapkan model skrip yang sama, menghapus direktif sampai impor berhasil dapat menghapus integrasi DNS atau rute yang dibutuhkan terowongan, dan koneksi yang dihasilkan akan mengautentikasi dengan sempurna sambil tidak menyelesaikan apa pun.
Keputusan yang perlu dicatat itu sempit: skrip mana, pada jalur mana, diberikan pada tingkat mana, untuk profil mana. Semua hal lain dalam profil tidak berubah, dan itu kalimat yang bisa diperiksa peninjau.