Dua resipi keistimewaan minimum yang ditampal bersama tidak menghasilkan penggunaan yang lebih ketat. Satu model membiarkan daemon bermula dengan keistimewaan dan turun ke akaun tanpa keistimewaan selepas permulaan; yang lain membiarkan pengurus perkhidmatan melancarkannya dengan identiti terhad sejak arahan pertama. Setiap satu berfungsi sendiri, dan gabungannya sering menghasilkan perkhidmatan yang tidak dapat melakukan kedua-dua tugas dengan bersih. Selebihnya menelusuri keputusan itu mengikut urutan.

Dua model, satu pemilik pertukaran

Model pertama milik daemon. Pilihan OpenVPN komuniti user dan group menukar identiti selepas terowong dan kunci disediakan, dan persist-key serta persist-tun mengekalkan sumber itu boleh digunakan selepas itu.

Model kedua milik pengurus perkhidmatan. Tetapan systemd User= atau Group= menentukan identiti yang proses mula di bawahnya, dan arahan keupayaan menentukan apa yang boleh dipegangnya. Memilih antara model ialah soal pembungkusan sebelum menjadi soal keselamatan, dan penyelenggara pakej sudah menjawabnya. Tugas anda ialah mencari jawapan itu, bukan mencipta pilihan ketiga.

Kedua-duanya sah. Kesilapannya ialah menganggapnya sebagai lapisan satu reka bentuk, kerana model kedua boleh menjadikan pertukaran identiti model pertama sebagai operasi yang proses tidak lagi dibenarkan lakukan.

Tentukan di mana identiti berubah

Jika unit sudah bermula sebagai akaun khusus, menambah arahan daemon untuk menjadi akaun lain memerlukan peralihan setuid yang perkhidmatan diperkukuh tidak pernah sepatutnya lakukan. Kegagalan muncul sebagai ralat kebenaran semasa permulaan, bukan mesej dasar yang jelas. Ia terbaca seperti keupayaan yang hilang, yang menolak orang ke arah set had yang lebih luas dan bukan ke arah persoalan identiti.

Baca apa yang sebenarnya dibekalkan oleh pakej yang dipasang sebelum menyunting apa-apa, termasuk direktori drop-in-nya. Sesetengah unit sengaja meninggalkan penurunan daemon itu sendiri kerana pengurus sudah mengendalikannya, dan sesetengahnya bergantung pada pilihan itu untuk pertukaran selepas permulaan. Membuang salah satu daripadanya tanpa mengetahui model mana yang anda warisi ialah cara perkhidmatan yang berfungsi berhenti bermula.

Tulis model yang dipilih dalam satu baris: milik pengurus atau milik daemon. Setiap arahan kemudiannya mesti konsisten dengan ayat itu, dan unit bercampur harus dianggap sebagai pepijat dan bukan kompromi.

Keupayaan ialah had, bukan pemberian

Set had keupayaan menyatakan apa yang boleh dipegang oleh proses paling banyak. Ia ialah siling, dan menyenaraikan keupayaan di situ tidak memberi apa-apa dengan sendirinya, sebab itu unit dengan set had yang longgar masih boleh gagal mencipta terowong.

Yang benar-benar meletakkan keupayaan ke dalam set ambien sesebuah perkhidmatan ialah AmbientCapabilities=. rujukan pelaksanaan systemd mendokumenkan kedua-dua arahan secara berasingan, dan perbezaan itulah yang menjelaskan sebahagian besar nasihat keupayaan yang mengelirukan dalam talian.

Tambah keupayaan hanya selepas operasi yang gagal mengenal pastinya. Set had yang lebih luas menyembunyikan punca sebenar dan membiarkan perkhidmatan lebih berkeistimewaan daripada yang dimaksudkan reka bentuk. Ia juga menjadikan unit lebih sukar disemak, kerana siling itu tidak lagi menggambarkan tugas. Buang keupayaan tambahan setelah kerosakan sebenar diperbaiki.

Petakan kuasa sepanjang kitaran hayat

Senaraikan apa yang perlu dilakukan proses pada setiap peringkat: permulaan, keadaan mantap, pengesahan semula dan pembongkaran. Pembuatan antara muka, perubahan laluan, pembacaan kunci terlindung dan pemanggilan pembantu tidak semuanya berlaku pada masa yang sama atau dengan keperluan yang sama. Susun senarai mengikut peringkat sebelum menyusunnya mengikut keupayaan.

Pilihan ketahanan mengekalkan sumber merentas rundingan semula, dan ia tidak memberikan kebenaran yang tidak pernah dipegang. Kunci yang tidak dapat dibaca oleh proses semasa permulaan akan kekal tidak terbaca kemudian, apa pun kata bendera ketahanan. Bendera mengekalkan apa yang sudah berfungsi.

Gunakan akaun khusus, bukan akaun dikongsi. Pembangun OpenVPN memberi amaran terhadap tabiat menggunakan nobody sebagai contoh umum, kerana perkhidmatan lain pada hos mungkin sudah berjalan dengan akaun itu dan pengasingan yang anda sangka anda miliki tidak ada di sana.

Ciri yang mengubah beban kerja tempatan, seperti pemunggahan saluran data atau binaan yang memaut secara berbeza, boleh mengubah operasi yang diperlukan. Semak semula peta apabila pakej berubah, bukan hanya apabila sesuatu rosak.

Tuliskan pelan dan kekalkan akses pemulihan

Rekod penggunaan harus menamakan pengurus, identiti permulaan, identiti mantap yang dimaksudkan dan setiap pemberian bersama operasi yang memerlukannya. Rekod itulah yang menjadikan perubahan seterusnya boleh disemak dan bukan eksperimen.

Kekalkan akses konsol tersedia semasa menyunting, kerana unit yang gagal semasa permulaan sukar dibaiki dari jauh. Uji mula semula dan but semula penuh sebelum mengisytiharkan perubahan itu selesai. Unit yang bertahan melalui mula semula masih boleh gagal sebelum rangkaian siap.

Kejayaan ialah kitaran hayat kuasa minimum yang difahami, bukan proses yang kebetulan berjalan dengan nama bukan root.

Artikel berkaitan