OpenVPN klienta nodrošināšana ar posmiem, kas apstājas kļūdas gadījumā
Pieci posmi neļauj nodrošināšanas skriptam atstāt pusgatavu instalāciju: pārbaudi ievadi, sagatavo kopumu, nomaini atomiski, aktivizē vienu īpašnieku, plāno izņemšanu.
Nodrošināšanas skripti, kas ziņo par kļūdu un turpina, ir sliktāki par skriptiem, kas nekad netiek palaisti. Klienta iestatīšana aizskar aizsargātas atslēgas, identitāti pie vārtejas un pakalpojumu, kas varbūt jau apkalpo datu plūsmu. Katram no tiem vajag apstāšanās nosacījumu, un skriptam jāzina, kuru posmu tas sasniedza, kad apstājās.
Uztver visu kā vienu transakciju ar pieciem kontroles punktiem un liec katram kontroles punktam pašam atteikties turpināt.
Izlabo ievadi pirms failu sistēmas aizskaršanas
Sāc ar skaidru līgumu: viena identitāte, viens profila avots, viens paredzētais pakalpojuma īpašnieks. Pārbaudi, ka profils pastāv, ka sertifikāts un atslēga, uz ko tas norāda, ir lasāmi, un ka mērķa direktorija pieder gaidītajai pakotnei. Ceļš, kas atrisinās, nav pierādījums, ka materiāls aiz tā ir pilnīgs.
Noraidi tukšus mainīgos agri. Neiestatīts $DEVICE, kas izvēršas nekur, pārvērš install -m 400 $KEY /etc/openvpn/client/ par kopiju, kas vērsta uz direktoriju, un kļūme pienāk vēlāk kā pakalpojums, kas nevar nolasīt savu atslēgu.
Saliec profila kopumu sagatavošanas direktorijā
Vispirms izveido pilnu kopumu privātā vietā: profils, CA, klienta sertifikāts, atslēga un jebkurš palīgs, ko profils izsauc. Kopē ar install -m 400 -o root -g root, lai atļaujas tiktu noteiktas izveides brīdī, nevis pēc tam. Pēc tam pārbaudi atsauces profila iekšienē, jo relatīva ca vai key rinda tiek atrisināta pret vienības darba direktoriju, tiklīdz pakalpojums startē. Nekas nav jāraksta aktīvajā direktorijā, kamēr viss kopums nav validēts.
Reģistrē ne-slepenu nospiedumu tam, ko šī palaišana radīja, piemēram, sha256sum office.conf, kas glabājas blakus versijas marķierim. Tieši šī vienīgā vērtība ļauj atkārtotai palaišanai atšķirt atjauninājumu no nekas nedarīšanas.
Nomaini atomiski un saglabā iepriekšējo kopumu
Pārvieto sagatavoto kopumu uz tā vietu vienā operācijā, kur failu sistēma to atļauj, un saglabā pārskatīto iepriekšējo kopumu zem laika zīmoga nosaukuma. Daļēja kopija, kas atstāj jaunu profilu blakus vecai atslēgai, rada pakalpojumu, kas autentificējas ar nepareizo identitāti un nefiksē neko lietderīgu par iemeslu. Ja nomaiņa nevar būt atomiska, sakārto pārvietošanas tā, lai profils nonāk pēdējais.
Kad mērķis jau pastāv, skaidri izlem, vai šī palaišana ir atjauninājums, identiska atkārtota palaišana vai konflikts ar citas ierīces profilu. Klusu profila, kas pieder citai identitātei, pārrakstīšanu ir ceļš, kā divas mašīnas sāk dalīt vienu sertifikātu. Tā vietā atsakies no palaišanas un nosauc konfliktējošo īpašnieku.
Aktivizē vienu īpašnieku un pierādi to
Izvēlies vienu aktivizācijas ceļu — vai nu systemd instanci, vai NetworkManager — un izmanto to konsekventi. Neapkalpota openvpn procesa palaišana blakus iespējotai vienībai dod divus tuneļus, konkurējošus DNS atjauninājumus un nekādu skaidru atbildi, uz kuru no tiem vēršas apturēšanas komanda. Pēc aktivizācijas pārbaudi systemctl is-active openvpn-client@office, tad maršrutu uz attālo prefiksu, tad resolvectl status tuneļa uzstādītajam risinātājam. Pabeidz, sasniedzot vienu resursu, kura dēļ tunelis pastāv.
Darbojošs process un zaļa teknējuma ikona ir procesa fakti, nevis pierādījums, ka identitāte un datu plūsmas politika pārdzīvoja nodošanu.
Atkārtota palaišana un izņemšana ir atsevišķas darbplūsmas
Otrai palaišanai vajadzētu saplūst ar tiem pašiem pārskatītajiem failiem un to pašu īpašnieku, nevis radīt otru kontu vai otru dēmonu. Izņemšana ir sava procedūra: apturi precīzo īpašnieku, arhivē vai dzēs vietējo profilu atbilstoši politikai un atsauc identitāti pie vārtejas. Vietējās atslēgas faila dzēšana neatsauc kopiju, kas jau ir atstājusi mašīnu.
Saglabā atkopšanas ceļu, kas nav atkarīgs no tuneļa, piemēram, piekļuvi konsolei vai otru pārvaldības maršrutu. Nodrošināšanas izmaiņas, kas tevi ieslēdz ārpus mašīnas, ir neizdevušās izmaiņas pat tad, ja katrs posms ziņoja par panākumiem.
Skripts, ko ir vērts paturēt, ir transakcija ap īpašumtiesībām un pierādījumiem. Īss priviliģētu kopēšanas komandu saraksts nav tas pats.