Sebaiknya lepaskan chroot atau salin iproute2 ke dalam penjara?
Penjara yang tidak lengkap gagal setelah mulai, bukan saat boot. Pilih antara melonggarkan pengerasan dan menyalin biner beserta pustaka ke akar baru.
Layanan mulai, klien terhubung, dan tidak pernah ada rute yang muncul di sisi server. Atau daemon menolak mulai dan menyebutkan perintah yang tidak bisa dijalankannya. Kedua hasil mengikuti tiga baris yang sama, yang biasanya disalin bersama dari panduan pengerasan: beralih ke akun tanpa hak istimewa, melepaskan grup, dan mengubah akar sistem file. Hanya satu dari tiga yang menyembunyikan berkas, dan hanya satu di antaranya mencabut hak untuk mengubah tabel perutean. Memisahkannya adalah cara Anda mempelajari baris mana yang sebenarnya Anda inginkan.
Apa yang penjara hilangkan yang masih dibutuhkan daemon
Perubahan akar terjadi setelah mulai, jadi daemon menyimpan semua yang sudah dibukanya dan kehilangan semua yang akan dibukanya nanti. Setiap pembantu yang dijalankan koneksi setelah titik itu harus ada di dalam akar baru, bersama pustaka bersama yang dimuatnya. Penjara yang dibangun dari berkas konfigurasi dan sertifikat tidak punya keduanya.
Beralih ke akun tanpa hak istimewa adalah batasan terpisah. Proses yang sudah melepaskan root mungkin tidak dapat mengubah rute atau menaikkan antarmuka bahkan ketika biner ada tepat di sana, jadi kedua kegagalan harus didiagnosis secara terpisah.
Tiga kondisi menentukan perbaikan mana yang Anda butuhkan
Kondisi pertama adalah bagaimana build Anda memasang rute. Rilis OpenVPN terbaru mengonfigurasi antarmuka dan tabel perutean di dalam proses, sementara paket lama dan penyiapan khusus bergantung pada alat eksternal atau pada skrip up dan down. Jika log menyebutkan perintah, ada alat eksternal yang terlibat dan penjara menyembunyikannya. Jika log justru menampilkan kesalahan izin, masalahnya ada pada akun.
Yang kedua adalah pemeliharaan. Penjara dengan biner yang disalin harus disegarkan setiap kali paket yang menyediakannya diperbarui, jika tidak pembaruan pertama akan meninggalkan terowongan rusak. Yang ketiga adalah apakah kontrol tertentu benar-benar memerlukan chroot; jika persyaratannya sebenarnya tentang pemisahan hak istimewa, perubahan akun saja mungkin sudah cukup.
| 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 harus dimuat penjara yang berfungsi
Penjara yang menjalankan perintah memerlukan biner, setiap pustaka yang ditautkannya, dan setiap simpul perangkat yang dibuka daemon terlambat. Salin bagian-bagiannya 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
Perintah pertama mencantumkan dependensi, dan itulah yang dilewatkan orang. Biner tersalin yang tidak menemukan pustaka gagal dengan pesan berbeda dari biner yang hilang, dan keduanya tampak seperti kerusakan OpenVPN saat dibaca dari sisi klien. Menjalankan perintah dengan tangan di dalam penjara mereproduksi kegagalan tanpa memulai ulang layanan.
Salin juga konfigurasi, sertifikat, dan CRL apa pun ke dalam penjara, karena berkas yang diharapkan daemon dibaca ulang setelah mulai tidak akan ditemukan setelah akar berubah. Catat apa yang Anda salin, karena pembaruan paket jaringan berikutnya mengganti yang asli dan meninggalkan penjara pada salinan lama.
Kecilkan pengerasannya saja
Jika penjara hanya ada karena panduan mengatakannya, menghapus satu baris itu sambil mempertahankan batasan akun adalah hasil yang bisa dipertahankan. Daemon mempertahankan pandangannya atas sistem file dan kehilangan masalahnya, dan penurunan hak istimewa tetap menghapus root dari proses berumur panjang.
Tuliskan apa yang tersisa, dan mengapa. Konfigurasi yang diam-diam kehilangan kontrol tanpa catatan adalah cara pengerasan menyimpang, dan audit berikutnya akan bertanya mengapa baris itu menghilang.
Bagi tiga baris itu sebelum memilih
Salin konfigurasi, nonaktifkan ketiga direktif, dan pastikan klien terhubung serta rute yang diharapkan muncul. Lalu aktifkan kembali hanya baris akun, kemudian chroot saja. Langkah saat terowongan putus menunjukkan batasnya, dan Anda menghindari membangun ulang penjara yang tidak pernah menjadi penyebabnya.
Ketika sudah merutekan lagi, jalankan satu sesi klien dengan verbositas lebih tinggi dan baca baris yang menyebutkan perintah atau izin yang gagal. Baris itu lebih berharga daripada batas waktu yang akhirnya dilaporkan klien.