Socket manajemen OpenVPN: kanal kendali, bukan metrik
Klien manajemen yang diterima memegang perintah kendali, bukan tampilan hanya-baca. Miliki socket Unix, lewati sesi untuk snapshot, dan jauhkan TCP.
Minta status sekali ke antarmuka manajemen dan ia mulai tampak seperti port status. Ia bukan. Begitu klien diterima, ia dapat mengeluarkan perintah kendali protokol, dan akun yang menjalankan klien itu mewarisi apa pun yang dapat dilakukan perintah tersebut terhadap daemon. Memperlakukannya sebagai umpan hanya-baca adalah kesalahan yang mengubah integrasi pemantauan menjadi konsol tanpa autentikasi.
Keyakinan itu, dan biayanya
Keyakinannya adalah bahwa pendengar manajemen setara dengan titik akhir metrik: pasang kolektor, baca penghitung, lanjutkan. Yang sebenarnya terjadi adalah kolektor membuka sesi dengan kemampuan kendali, dan setiap asumsi lain yang Anda buat tentang penerapan kini bergantung pada kolektor itu berperilaku baik.
Tidak ada apa pun di antarmuka yang mengiklankan mode hanya-baca. Tidak ada peran pengamat untuk dipilih, dan nama pengguna dalam konfigurasi tidak membuatnya.
Apa yang sebenarnya dipegang klien yang diterima
Daemon komunitas menerima hanya satu klien manajemen aktif pada satu waktu. Satu slot itu berarti GUI, skrip, dan agen pemantauan tidak dapat semuanya terhubung; yang kedua menunggu atau gagal saat yang pertama memegang sesi. Jika desain Anda menganggap pembaca bersamaan, itu sudah salah.
Bila snapshot berkala sudah cukup, keluaran berkas status memberi Anda angka yang sama tanpa sesi langsung. Menulis berkas itu secara berkala dan membacanya dengan izin berkas biasa menjauhkan kolektor sepenuhnya dari bidang kendali, dan itulah pengaturan yang sebenarnya dibutuhkan sebagian besar pemantauan.
Socket milik sendiri, bukan yang terbuka
Socket domain Unix menjauhkan jalur kendali dari jaringan, yang menghapus alamat tunnel yang berubah dari masalah. Itu tidak menghapus pertanyaan izin. Direktori induk harus dapat ditulis oleh akun layanan dan dapat dijangkau oleh akun pengendali, dan itu dua izin terpisah:
management /run/openvpn/office-management.sock unix /etc/openvpn/management.password
management-client-user vpn-observer
management-client-group vpn-observerBerkas kata sandi membawa rahasia manajemen pada baris pertamanya. Lindungi berkas itu seperti kredensial lain, dan jauhkan isinya dari log dan tiket dukungan. Pembatasan pengguna dan grup adalah pemeriksaan rekan pada socket Unix, bukan izin sistem berkas, jadi proses yang dimaksud memerlukan akses berkas dan identitas yang cocok.
Membuat socket dapat diakses semua orang untuk menghapus kesalahan izin adalah satu-satunya perbaikan yang harus dihindari. Itu mengubah kanal kendali lokal menjadi sesuatu yang dapat dikendalikan oleh proses apa pun di host.
Menerbitkannya lewat TCP bukan desain yang sama
Memindahkan pendengar ke port TCP tidak membuatnya lebih aman atau lebih nyaman. Kata sandi manajemen dikirim dalam teks polos, jadi pendengar TCP mengekspos kredensial dan sesi kepada siapa pun yang dapat mengamati jalur itu. Menjangkaunya dari host lain memerlukan kanal administrasi yang diotorisasi, atau agen lokal kecil yang hanya mengekspos pengamatan yang Anda butuhkan.
Kata sandi pada transportasi teks polos adalah autentikasi tanpa kerahasiaan, dan kombinasi itu lebih buruk dari kelihatannya karena terasa terlindungi.
Ketergantungan startup yang tidak Anda minta
Beberapa opsi manajemen mengubah siklus hidup daemon. Menahan startup sampai pengendali terhubung, atau menghentikan saat pengendali menghilang, mengubah pengamat opsional menjadi ketergantungan keras. Agen pemantauan yang mogok kemudian akan menjatuhkan tunnel bersamanya.
Tinjau opsi itu sebelum mengaktifkan apa pun di luar socket itu sendiri. Pengamatan opsional harus tetap opsional, dan kebijakan mulai ulang tidak boleh digabungkan dengan kolektor yang ditambahkan untuk grafik.
Berkas socket yang tertinggal setelah proses gagal bukan bukti bahwa pendengar ada. Identifikasi instans mana yang memiliki jalur itu sebelum menghapusnya, dan gunakan alur pemulihan milik layanan alih-alih menghapus berkas di bawah daemon yang berjalan.
Seperti apa penerimaan itu
Empat pemeriksaan mencakup desain: identitas pengendali yang dimaksud terhubung, proses tanpa identitas itu ditolak, daemon bertahan terhadap pengendali yang terputus tanpa peringatan, dan tunnel tetap membawa lalu lintas melalui mulai ulang yang terkendali. Koneksi manajemen yang berhasil hanya membuktikan bidang kendali. Itu tidak mengatakan apa pun tentang apakah lalu lintas aplikasi privat berfungsi, jadi ujilah secara terpisah. Tuliskan keempat hasil itu di tempat operator berikutnya dapat menemukannya.
Dokumentasi antarmuka manajemen menjelaskan model satu klien dan sifat istimewa protokol, dan itulah bagian yang layak dibaca sebelum Anda mengarahkan dasbor ke sana.