Pēc privilēģiju samazināšanas: kuri OpenVPN faili joprojām darbojas?
Apraksti, kas atvērti pirms samazināšanas, turpina darboties; ceļi, kas tiek atvērti vēlāk no jauna, nē. Izlemiet, kuru no trim izpildlaika failiem jūsu konfigurācijai jāatver no jauna.
Ilgs darbības laiks pierāda tikai to, ka palaišana izdevās ar tām privilēģijām, kas dēmonam bija tajā brīdī. Šeit svarīgās atteices nāk vēlāk: pievienojas jauns klients, tiek aizstāts atsaukšanas saraksts, palīgskriptam jāieraksta fails. Katrs no tiem ir jauna atvēršana, ko veic konts bez privilēģijām, ar savu atļauju jautājumu un savu kļūdas ziņojumu. Trīs lēmumi šķir konfigurāciju, kas turpina darboties, no tās, kas neizdodas nākamajā notikumā.
Atdaliet to, kas ielādēts agri, no tā, kas atveras vēlāk
Apraksts ir rokturis uz atvērtu faila aprakstu, un piekļuves režīms tika fiksēts, kad šis apraksts tika izveidots. Vēlāka procesa lietotāja maiņa rokturi neaizver, tāpēc atslēgas fails, kas nolasīts kā root, darbojas arī pēc samazināšanas. Arī režīms nemainās: lasīšanai atvērts rokturis nekļūst rakstāms, un rakstāms rokturis netiek atsaukts tikai tāpēc, ka konts zaudēja tiesības uz ceļu. Šie divi fakti izskaidro lielāko daļu pārsteidzošās uzvedības šajos ziņojumos.
Otra puse ir atmiņa. Dēmons var parsēt sertifikātu, paturēt parsēto materiālu un aizvērt failu; lietošanā paliek dati, nevis atvērts fails. Tāpēc turpināta satiksme nepierāda ne to, ka apraksts ir atvērts, ne to, ka ceļa nosaukums ir sasniedzams. Tā pierāda tikai to, ka pašreizējai sesijai nepieciešamais materiāls tika iegūts agrāk.
Vēlāka atvēršana ir cits darījums. Tā notiek ar pašreizējiem akreditācijas datiem, pašreizējo drošības kontekstu un pašreizējo montēšanas skatu, tāpēc ceļš, kas bija lasāms palaišanas laikā, var tikt noraidīts nākamajā savienojumā. Rotācija pievieno slazdu: jauna faila rakstīšana uz tā paša ceļa nosaukuma atstāj esošo aprakstu piesaistītu vecajam objektam, tāpēc pārlāde var izskatīties veiksmīga, kamēr dēmons joprojām izmanto iepriekšējo saturu. Salīdziniet procesa turēto inode ar to, kas ir diskā, pirms ticat, ka rotācija stājās spēkā.
Nosauciet trīs izpildlaika nolasījumus un kad katrs notiek
Trīs resursi parasti tiek atvērti krietni pēc inicializācijas, un tie neizdodas dažādos brīžos. Konkrēta klienta konfigurācijas fails tiek nolasīts, kad šis klients pievienojas, tāpēc tas var salūzt vienam lietotājam, kamēr pārējie turpina. Atsaukšanas dati tiek pārbaudīti partnera autentifikācijas laikā un vēlreiz, kad fails tiek aizstāts. Pagaidu direktorijai pieskaras tikai tad, kad skripts vai spraudnis kaut ko ieraksta.
Neviens no trim nepieder palaišanas ceļam, tāpēc serveris, kas nedēļām bijis vesels, var neizdoties nākamajā savienojumā. Kategorija nosauc arī labojuma īpašnieku: pirmie divi ir lasīšanas tiesības uz konfigurāciju dēmona konta ietvaros, bet trešais ir rakstāma vieta ar šauru mērķi.
| Path reopened later | What triggers the open | First sign when it fails |
|---|---|---|
| Client configuration file | A connection for that client identity | One client rejected while others connect |
| Revocation data | Peer authentication, including after replacement | Revoked and valid peers both refused |
| Script or plugin temporary directory | A helper needs to create a file | The helper exits with a path error |
persist-key atbild uz šaurāku jautājumu, nekā vairums pieņem. Tas tur atslēgas failu atvērtu dokumentēto SIGUSR1 un ping-restart atiestatīšanu laikā, un tas neko nedara CCD failiem, atsaukšanas datiem, palīgizpildfailiem vai pilnīgai procesa pārstartēšanai. Tie joprojām iet savus atvēršanas ceļus, tā konta ietvaros, kas tajā brīdī darbojas.
Apstipriniet kontu un skatu, kāds tam patiešām ir
Pajautājiet darbojošamies dēmonam, kuru kontu tas izmanto, nevis uzticieties unit failam, un pēc tam salīdziniet atbildi ar to, ko unit nosaka. Neatbilstība ir pirmā lieta, kas jāatrisina, jo katra vēlākā atļauju pārbaude notiek kā tas, kas process patiešām ir. Tad ejiet pa ceļu komponentu pēc komponenta; šķērsošana tiek vērtēta katrā līmenī, tāpēc lasāms fails direktorijā, kuru nevar šķērsot, paliek nolasāms. Galīgais faila režīms ir pēdējais jautājums, nevis pirmais.
Nosaukumtelpas un servisa smilškastes pievieno robežas, ko īpašumtiesības un režīma biti neapraksta. Ceļš, kas redzams jūsu čaulā, var būt neesošs vai tikai lasāms chroot, montēšanas nosaukumtelpā vai unit, kas slēpj mājas direktorijas. Drošības moduļi pievieno vēl vienu slāni, tāpēc fails, kas izskatās lasāms, atverot tomēr var tikt noraidīts.
ps -o user:12,pid,args -C openvpn
systemctl show -p User -p Group -p ProtectHome -p RootDirectory [email protected]
sudo -u openvpn namei -l /etc/openvpn/ccd/aliceVeiksmīga nolasīšana administratora čaulā nepārbauda nevienu no šiem apvienotajiem nosacījumiem. Palaidiet pārbaudi ar dēmona kontu, ar to pašu nosaukumtelpu un smilškasti, vai pieņemiet, ka rezultāts apraksta jūsu čaulu, nevis serveri. Trešā komanda ir lētā šī testa versija: tā izdrukā katra komponenta režīmu un neizdodas pirmajā, kuru dēmona konts nevar šķērsot.
Dodiet izpildlaika rakstīšanai savu direktoriju
Lasīšana ir tikai puse no saraksta. Palīgskriptam var būt nepieciešams izveidot statusa failu, spraudnim var būt nepieciešams ierakstīt stāvokli blakus savai konfigurācijai, un šos ierakstus neaptver konfigurācijas koka padarīšana rakstāmu. Dodiet konkrētajai direktorijai rakstīšanas atļauju, kas nepieciešama tās funkcijai, ar īpašnieku un režīmu, ko varat izskaidrot. Dodiet priekšroku tikai lasīšanas piekļuvei visam, kas tiek tikai lasīts.
Turiet privātās atslēgas atļaujas atsevišķi no politikas failiem. Atslēgai, kas pēc atiestatīšanas jānolasa no jauna, ir citas prasības nekā klienta failam, kas tiek lasīts katrā savienojumā, un viens atļaujošs režīms abiem dod vairāk piekļuves, nekā prasa problēma. Īpašs dēmona konts ar šaurām īpašumtiesībām ir vieglāk auditējams nekā plaša grupa. Kad atslēgai jāpārdzīvo atiestatīšanas, persist-key noņem atkārtotu nolasīšanu, nevis paplašina direktoriju.
Izlemiet pēc notikuma, ko varat atkārtot
Dzīvs tunelis pierāda vienu ceļu kodā. Notikums, kuram nepieciešams fails, ir vienīgais tests, kas aptver jums svarīgo atvēršanu, vai tas būtu jauns klienta savienojums, aizstāts atsaukšanas fails, atļauta maiga atiestatīšana vai plānota pārstartēšana. Izvēlieties notikumu, izpildiet to un paturiet pirmo kļūdu, nevis pēdējo.
Maigai atiestatīšanai viens signāls un unit žurnāls parāda, vai atslēga tika nolasīta no jauna. Nosūtiet signālu, pēc tam nolasiet pēdējās rindas, ko unit ierakstīja:
systemctl kill -s SIGUSR1 [email protected]
journalctl -u [email protected] -n 40 --no-pagerNeseciniet, ka kompromitēts dēmons vairs nevar mainīt failus tikai tāpēc, ka privilēģijas tika samazinātas. To, ko tas vēl var, nosaka atlikušie akreditācijas dati, tā spējas, direktorijas, kurās tas var rakstīt, un jebkurš vēl turētais rakstāmais apraksts. Privilēģiju samazināšana sašaurina pilnvaras, un izpildlaika atvēršanu saraksts parāda, cik ļoti. Pierakstiet šo robežu blakus konfigurācijai, lai nākamajam cilvēkam tā nav jāatklāj no jauna.