Patutkah anda lepaskan chroot atau salin iproute2 ke dalam penjara?
Penjara yang tidak lengkap gagal selepas bermula, bukan semasa boot. Pilih antara melonggarkan pengerasan dan menyalin binari bersama pustaka ke akar baharu.
Perkhidmatan bermula, klien menyertai, dan tiada laluan pernah muncul di sebelah pelayan. Atau daemon enggan bermula dan menamakan arahan yang tidak dapat dilaksanakannya. Kedua-dua hasil mengikut tiga baris yang sama, yang biasanya disalin bersama daripada panduan pengerasan: bertukar ke akaun tanpa keistimewaan, melepaskan kumpulan, dan menukar akar sistem fail. Hanya satu daripada tiga menyembunyikan fail, dan hanya satu daripadanya menarik balik hak untuk menukar jadual penghalaan. Memisahkannya ialah cara anda mempelajari baris mana yang sebenarnya anda mahu.
Apa yang penjara buang yang daemon masih perlukan
Perubahan akar berlaku selepas bermula, jadi daemon menyimpan semua yang telah dibukanya dan kehilangan semua yang akan dibukanya kemudian. Setiap pembantu yang dijalankan sambungan selepas titik itu mesti wujud di dalam akar baharu, bersama pustaka kongsi yang dimuatkannya. Penjara yang dibina daripada fail konfigurasi dan sijil tidak mempunyai kedua-duanya.
Bertukar ke akaun tanpa keistimewaan ialah sekatan berasingan. Proses yang telah melepaskan root mungkin tidak dapat mengubah laluan atau menaikkan antara muka walaupun binari berada tepat di situ, jadi kedua-dua kegagalan mesti didiagnosis secara berasingan.
Tiga syarat menentukan pembaikan mana yang anda perlukan
Syarat pertama ialah bagaimana binaan anda memasang laluan. Keluaran OpenVPN terbaharu mengkonfigurasi antara muka dan jadual penghalaan di dalam proses, manakala pakej lama dan persediaan tersuai bergantung pada alat luaran atau skrip up dan down. Jika log menamakan arahan, ada alat luaran terlibat dan penjara menyembunyikannya. Jika log sebaliknya menunjukkan ralat kebenaran, masalahnya ialah akaun.
Yang kedua ialah penyelenggaraan. Penjara dengan binari yang disalin mesti disegarkan setiap kali pakej yang menyediakannya dinaik taraf, jika tidak naik taraf pertama akan meninggalkan terowong rosak. Yang ketiga ialah sama ada kawalan tertentu benar-benar memerlukan chroot; jika keperluannya sebenarnya tentang pemisahan keistimewaan, pertukaran akaun sahaja mungkin memadai.
| Signal in the log | Other side of the boundary | Repair direction |
|---|---|---|
| Command not found after startup | Binary and its libraries absent inside the new root | Populate the jail, or drop the chroot line |
| Operation not permitted | Account lost the privilege to edit routes | Keep the account privileged, or pre-create routes elsewhere |
| No such device | Jail lacks the tun device node | Create the node inside, or open it before the root change |
Apa yang mesti ada pada penjara yang berfungsi
Penjara yang menjalankan arahan memerlukan binari, setiap pustaka yang dipautkannya, dan setiap nod peranti yang dibuka daemon lewat. Salin bahagian-bahagiannya dan uji tanpa VPN dalam gambaran:
ldd /usr/sbin/ip
chroot /etc/openvpn/jail /sbin/ip route show
chroot /etc/openvpn/jail /sbin/ip link set tun0 up
Arahan pertama menyenaraikan kebergantungan, dan itulah yang orang langkau. Binari tersalin yang tidak menemui pustaka gagal dengan mesej berbeza daripada binari yang hilang, dan kedua-duanya kelihatan seperti kerosakan OpenVPN apabila dibaca dari sebelah klien. Menjalankan arahan dengan tangan di dalam penjara menghasilkan semula kegagalan tanpa memulakan semula perkhidmatan.
Salin juga konfigurasi, sijil, dan mana-mana CRL ke dalam penjara, kerana fail yang daemon jangkakan untuk dibaca semula selepas bermula tidak akan ditemui selepas akar berubah. Catat apa yang anda salin, kerana naik taraf pakej rangkaian seterusnya menggantikan yang asal dan meninggalkan penjara pada salinan lama.
Kecilkan pengerasan sebaliknya
Jika penjara wujud hanya kerana panduan berkata begitu, membuang satu baris itu sambil mengekalkan sekatan akaun ialah hasil yang boleh dipertahankan. Daemon mengekalkan pandangannya terhadap sistem fail dan kehilangan masalahnya, dan penurunan keistimewaan masih membuang root daripada proses panjang hayat.
Tuliskan apa yang tinggal, dan mengapa. Konfigurasi yang senyap kehilangan kawalan tanpa nota ialah cara pengerasan hanyut, dan audit seterusnya akan bertanya mengapa baris itu hilang.
Bahagikan tiga baris itu sebelum memilih
Salin konfigurasi, lumpuhkan ketiga-tiga direktif, dan pastikan klien bersambung serta laluan yang dijangka muncul. Kemudian hidupkan semula hanya baris akaun, kemudian chroot sahaja. Langkah apabila terowong putus menunjukkan sempadannya, dan anda mengelakkan membina semula penjara yang tidak pernah menjadi puncanya.
Apabila ia menghala semula, jalankan satu sesi klien dengan verbositi lebih tinggi dan baca baris yang menamakan arahan atau kebenaran yang gagal. Baris itu lebih bernilai daripada tamat masa yang akhirnya dilaporkan klien.