Tahap script-security OpenVPN dari 0 hingga 3, dan apa yang dibuka oleh setiap satu
Setiap tahap script-security meluaskan perkara yang boleh dilaksanakan oleh profil: mula-mula pembantu pentadbiran, kemudian skrip pengguna, kemudian kata laluan dalam persekitaran. Baca arahan itu.
Import profil ke dalam klien desktop dan kegagalan pertama selalunya ialah baris yang enggan dipatuhi oleh klien: cangkuk skrip yang tidak akan dijalankannya, atau nilai script-security yang dianggapnya terlalu permisif. Menaikkan nombor itu menghilangkan dialog. Tetapi ia juga meluaskan apa yang profil itu dibenarkan laksanakan pada mesin anda, yang merupakan perkara pelik untuk diberikan hanya demi menutup amaran. Ikuti import hingga ke arahan dan keputusan menjadi konkrit.
Dari dialog import ke arahan
Profil ialah fail teks dengan arahan, dan klien membacanya sebelum wujud sebarang terowong. Arahan seperti up, down atau tls-verify menamakan program luaran yang perlu dilaksanakan oleh OpenVPN pada saat tertentu. Sama ada OpenVPN bersedia melaksanakannya ialah tetapan berasingan bernama script-security, dan profil biasanya menetapkannya juga.
Jadi amaran itu bukan tentang kriptografi atau sijil. Ia tentang fail konfigurasi yang meminta klien melaksanakan sesuatu pada hos, dan tentang klien yang menyemak sama ada tahap kebenarannya sekarang membenarkan permintaan itu.
Dua kegagalan berbeza kelihatan serupa pada peringkat ini. Profil yang meminta tahap yang klien tidak akan berikan menghasilkan penolakan. Profil yang meminta tahap yang klien berikan tetapi skrip itu tiada pula menghasilkan kegagalan semasa dijalankan, dan kedua-duanya dikelirukan dalam urutan sokongan. Satu soal kebenaran dan satu lagi soal pembungkusan.
Apa yang sebenarnya dibuka oleh setiap tahap
Tahap 0 melarang sepenuhnya panggilan program luaran, yang koheren bagi klien yang mengkonfigurasi antara mukanya sendiri tanpa bantuan dan tidak koheren bagi klien yang memanggil sistem pengendalian. Tahap 1, lalai, membenarkan fail boleh laku terbina dalam yang diperlukan oleh konfigurasi antara muka dan laluan. Kedua-dua tahap tidak menjalankan apa-apa yang dibekalkan oleh 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 |
Tahap 2 ialah sempadan yang menarik, kerana ia menerima skrip yang ditakrifkan oleh pengguna. Dari titik itu keistimewaan klien terpakai kepada kod yang mungkin tidak pernah anda baca, dipanggil pada saat yang tidak anda pilih, dalam persekitaran yang mengandungi butiran sambungan. Tahap 3 melangkah lebih jauh dan membenarkan kata laluan dihantar melalui pemboleh ubah persekitaran, sebab itulah manual menggambarkannya sebagai berpotensi tidak selamat.
Tiada satu pun nombor ini ialah tetapan kekuatan. Profil pada tahap 3 tidak mempunyai penyulitan yang lebih baik daripada profil pada tahap 1; ia hanya mempunyai permukaan pelaksanaan yang lebih besar, dan terowong itu sama.
Tentukan apa yang layak untuk profil itu
Tanya untuk apa skrip itu sebelum bertanya tahap mana yang diperlukannya. Cangkuk yang menolak tetapan DNS atau membaiki laluan selepas bersambung ialah sebab sah untuk menjalankan sesuatu. Cangkuk yang memanggil binari asing dalam direktori sementara ialah sebab untuk berhenti.
Laluan skrip sama pentingnya dengan skrip itu. Laluan relatif diselesaikan terhadap direktori yang digunakan oleh klien, dan direktori yang boleh ditulis menjadikan import sekali sahaja sebagai slot pelaksanaan kekal. Laluan mutlak dalam direktori yang tidak boleh diubah oleh pengguna ialah bentuk yang patut diutamakan.
Skrip juga mewarisi persekitaran klien, tempat kelayakan dan metadata sambungan berada. Pewarisan itulah yang menjadikan tahap 3 berbahaya apabila digabungkan dengan skrip yang merekodkan persekitarannya, dan itulah sebabnya pembuangan diagnostik daripada klien yang mengaktifkan skrip patut dilihat dua kali sebelum ditampal ke dalam tiket. Buang persekitaran itu sebelum berkongsinya.
grep -nE 'script-security|^up |^down |tls-verify' client.ovpnUbah satu perkara, kemudian perhatikan juga pembongkarannya
Jika profil benar-benar memerlukan skrip, ubah tahap itu sahaja dan hanya untuk profil itu. Jalankan klien di latar hadapan dengan output terperinci supaya kesilapan skrip itu sendiri kelihatan, bukan ditelan oleh pengurus perkhidmatan.
openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default
Uji seluruh kitaran hayat, bukan hanya sambungan. Cangkuk bawah yang gagal meninggalkan laluan menunjuk ke terowong mati, yang menghasilkan mesin yang kelihatan bersambung dan tidak sampai ke mana-mana. Sambung semula sekali dan putuskan sekali sebelum mengisytiharkan perubahan itu selesai, dan periksa jadual penghalaan selepas setiap satu.
Simpan salinan profil asal. Jika klien platform tidak melaksanakan model skrip yang sama, memadam arahan sehingga import berjaya boleh membuang integrasi DNS atau laluan yang diperlukan oleh terowong itu, dan sambungan yang terhasil akan mengesahkan identiti dengan sempurna sambil tidak menyelesaikan apa-apa.
Keputusan yang perlu direkodkan itu sempit: skrip mana, pada laluan mana, diberikan pada tahap mana, untuk profil mana. Segala-galanya dalam profil kekal tidak berubah, dan itu ialah ayat yang boleh disemak oleh penyemak.