Perintah VPN anda berjalan tanpa keistimewaan; perkhidmatannya tidak
Tiada gesaan kata laluan tidak memberitahu apa-apa tentang siapa yang menukar laluan. Cari perkhidmatan itu, antara muka yang didedahkannya dan dasar yang menentukan pemanggil mana boleh meminta.
Perintah VPN berjalan sebagai pengguna anda, tiada kata laluan muncul, dan terowong naik. Urutan itu terasa seperti operasi tanpa keistimewaan, dan biasanya ia bukan. Perkhidmatan berasingan melakukan perubahan rangkaian, dan soalan yang menarik ialah apa yang akan dilakukan perkhidmatan itu untuk pemanggil yang belum disahkannya. Mengira gesaan kata laluan tidak memberitahu anda apa-apa tentang sempadan itu.
Antara muka, mekanisme dan pemeriksaan
Antara muka menerima permintaan: sambung, putuskan, pilih profil. Mekanisme memiliki operasi rangkaian: mencipta antara muka, menukar laluan, menggunakan penapis. Pemeriksaan kebenaran memutuskan sama ada pemanggil ini boleh meminta tindakan ini. Ketiga-tiganya boleh tersebar merentas binari, pembantu dan perkhidmatan sistem, dan pengguna hanya melihat yang pertama.
Peranan boleh hidup dalam satu binari, dalam dua proses, atau dalam klien dan perkhidmatan sistem, dan perintah yang dilihat pengguna jarang mendedahkan yang mana. Ikon dulang dan daemon sistem boleh kelihatan seperti satu aplikasi walaupun berjalan dengan kuasa yang sangat berbeza. Keistimewaan semasa pemasangan dan keistimewaan semasa permintaan juga dua perkara berbeza. Pemasang yang berjalan sebagai root boleh meninggalkan perkhidmatan yang mendengar permintaan kemudian, lama selepas pengurus pakej selesai. Perkhidmatan itulah yang memegang kuasa, bukan perintah yang anda taip.
Pewakilan ialah reka bentuk biasa
Mewakilkan kerja rangkaian berkeistimewaan kepada perkhidmatan ialah seni bina yang wajar. Ia mengekalkan aplikasi biasa tanpa keistimewaan dan memusatkan operasi yang memerlukan kehati-hatian. Reka bentuk itu hanya berbaloi apabila perkhidmatan juga memeriksa siapa yang bertanya dan untuk apa. Tanpa pemeriksaan itu ia hanya pintu yang lebih lebar.
NetworkManager ialah contoh konkrit di Linux. Panduan konfigurasi-nya menerangkan bagaimana PolicyKit membenarkan permintaan bukan root dalam persediaan lalai. Itu menunjukkan kebenaran yang diwakilkan dalam produk sebenar. Ia tidak membuktikan bahawa setiap klien komersial menggunakan NetworkManager, dan ia tidak menerangkan laluan soket atau dasar mana-mana vendor tertentu.
Coraknya ialah pewakilan dengan dasar di belakangnya. Contohnya ialah satu pelaksanaan corak itu, bukan yang universal.
Baca sempadan, bukan permintaan
Cari perkhidmatan itu, pemilik konfigurasinya dan antara muka tempatan yang digunakan oleh hadapan. Kemudian tanya pengguna mana yang boleh meminta operasi mana. Boleh menaikkan dan menurunkan satu profil tersimpan bukan kebenaran yang sama dengan memuatkan konfigurasi yang tidak pernah disemak oleh pengendali. Perbezaannya ialah keseluruhan persoalan keselamatan.
Mulakan dengan pengurus perkhidmatan dan dengan pandangan klien sendiri tentang kebenarannya. Perintah di bawah menunjukkan sama ada daemon berjalan, apa yang boleh diminta oleh pemanggil daripadanya, dan apa yang didedahkan daemon di bawah direktori masa jalannya.
systemctl status NetworkManager
nmcli general permissions
ls -l /run/NetworkManager
Tanya juga apa yang dipengaruhi oleh operasi itu. Item menu yang kelihatan peribadi boleh menukar laluan dan DNS untuk seluruh mesin, yang bermaksud ia boleh mengganggu sesi pengguna lain. Jejari kesannya tergolong dalam semakan yang sama dengan kebenaran, dan biasanya itulah yang menentukan sama ada perkhidmatan memerlukan peranan yang lebih sempit.
Betulkan kebenaran dengan cara yang disokong
Menjadikan soket kawalan yang dilindungi boleh ditulis oleh semua, atau menambah akaun ke kumpulan pentadbiran yang luas, menghapuskan ralat kebenaran dan mencipta yang lebih besar. Ralat itu ialah satu-satunya yang memberitahu anda bahawa sempadan itu wujud. Gunakan proses keahlian atau kebenaran yang didokumenkan, termasuk penyegaran sesi yang diperlukan. Keahlian kumpulan selalunya hanya terpakai pada sesi log masuk baharu, sebab itulah perubahan boleh kelihatan tidak melakukan apa-apa sehingga log masuk seterusnya.
Jika produk mendedahkan peranan yang lebih sempit untuk operasi itu, utamakan ia berbanding pemberian menyeluruh. Tulis peranan yang dipilih dan pemiliknya di sebelah nama perkhidmatan.
Bagaimana pemisahan yang baik kelihatan
Aplikasi biasa kekal tanpa keistimewaan, perkhidmatan hanya melakukan persediaan yang direka untuknya, dan setiap pemanggil diperiksa terhadap dasar yang dimiliki oleh seseorang. Itu reka bentuk yang boleh dipertahankan. Ia juga boleh diaudit, kerana dasar itu mempunyai nama yang terikat padanya. Apa-apa yang lebih besar wajar mendapat pengecualian bertulis dan bukan perubahan kebenaran yang senyap.
Mod kegagalannya ialah perkhidmatan yang melaksanakan apa-apa permintaan daripada mana-mana pengguna tempatan kerana antara mukanya mudah. Dari sisi pengguna ia kelihatan sama, dan ia membawa kuasa yang jauh lebih besar. Uji satu permintaan yang ditolak, bukan hanya yang berjaya. Penolakan yang datang daripada dasar ialah bukti bahawa dasar itu wujud.