Dva adresáre, ktoré v návode vyzerajú rovnako, robia úplne odlišnú prácu. Jeden drží certifikačnú autoritu: jej súkromný kľúč, počítadlo sériových čísel a záznam o všetkom, čo podpísala. Druhý drží to, čo daemon potrebuje na spustenie a obsluhu klientov. Umiestniť oba na rovnaký host pod rovnakým účtom je pohodlné na jedno popoludnie a drahé po zvyšok života nasadenia, pretože daemon potom beží vedľa jediného kľúča, ktorý dokáže vytvoriť akúkoľvek identitu, akú chce.

Čo pracovný priestor CA obsahuje

Adresár PKI je stav vydavateľa, nie konfigurácia. Obsahuje súkromný kľúč a certifikát CA, súbor so sériovým číslom, index vydaných certifikátov a materiál pre jednotlivé identity, ktorý z nich bol vytvorený.

Podpísanie žiadosti mení tento stav, a preto pracovný priestor patrí účtu spravovanému administrátorom na hoste, kde služba VPN nebeží. Ktokoľvek, kto môže čítať súkromný kľúč CA, môže vydať certifikát, ktorému bude server dôverovať, takže ochrana kľúča je celý model dôvery v jednom súbore. Skopírovať ho na druhé miesto, aby sme ušetrili krok, vytvára druhú vec na ochranu a druhú vec na zabudnutie. Každý podpis tiež zvyšuje sériové číslo a pripája záznam do indexu, a preto je pracovný priestor jednou kópiou stavu, nie priečinkom súborov.

Verejný certifikát CA je iný. Je určený na distribúciu a klienti a servery ho používajú na vzájomné overenie.

Čo daemon číta pri spustení

Bežiaci server spotrebúva malú sadu: vlastný certifikát, vlastný súkromný kľúč, certifikát CA na overovanie partnerov a akýkoľvek kľúčový materiál, ktorý vyžaduje zvolený režim. Tieto cesty číta pri štarte a znova pri opätovnom načítaní.

Vlastníctvo sa musí vyhodnocovať voči jednotke, ktorá skutočne štartuje, nie voči interaktívnemu root shellu. Deklarované sandboxovanie môže časť súborového systému nastaviť ako iba na čítanie alebo neviditeľnú, aj keď manuálny test ako root uspeje.

systemctl show -p User -p Group -p ReadOnlyPaths [email protected]
stat -c '%a %U:%G' /etc/openvpn/server/server.key
runuser -u openvpn -- test -r /etc/openvpn/server/server.key; echo $?

Ten tretí riadok ľudia preskakujú. Pýta sa vlastného účtu daemona, či dokáže čítať kľúč, a to je jediná verzia otázky, ktorá po odobratí oprávnení záleží. Nulový návratový kód ako root nehovorí nič o tom, čo sa stane po odobratí.

Obe cesty zlyhania stojí za to oddeliť, než zmeníte akékoľvek oprávnenie. Zlyhanie podpisu ukazuje na adresár PKI, oprávnenie prehľadávať jeho nadradené adresáre a účet, ktorý spúšťa vydavateľa. Zlyhanie štartu ukazuje na jednotku, jej pracovný adresár a cesty uvedené v konfigurácii servera. Sprístupnenie celého stromu všetkým neopraví ani jedno z nich a odstráni hranicu, na ktorej obe závisia.

Prečo kopírovanie kľúča CA na server neskôr zlyhá

Kópia zvyčajne začína ako ladiaci krok: niekto chce obnoviť klienta na hoste VPN, takže kľúč CA skončí v /etc/openvpn a obnova funguje. Okamžitá úloha uspeje a hranica je preč.

Potom sa server zálohuje a podpisová autorita sa pripojí k zálohám. Snímka, diagnostický balík alebo kópia konfiguračného adresára teraz nesie schopnosť vydávať dôveryhodné identity, pokiaľ je CA platná. Ktokoľvek má tú kópiu, môže vytvoriť certifikát pre akékoľvek meno, ktoré server prijme, vrátane mien, ktoré nikdy neboli vydané. Jediný záznam o tomto vydaní je ten, ktorý sa rozhodnú uchovať.

Zotavenie z tohto stavu nie je otázkou vymazania súboru. Musíte rozhodnúť, či bol kľúč vystavený, ak áno, rotovať CA, a redistribuovať dôveru každému partnerovi. Oddelený pracovný priestor celej konverzácii predchádza.

Účty, adresáre, zálohy

Dajte vydavateľovi vlastný účet a domovský adresár, mimo hosta VPN, kde je to praktické. Dajte daemonovi iný účet s prístupom na čítanie k nasadenému materiálu a bez prístupu na zápis k čomukoľvek, čo vydáva certifikáty. Nasadzujte kopírovaním verejných certifikátov von a nikdy sťahovaním súkromného stavu vydavateľa dnu. Zálohujte obe role oddelene, pretože ich citlivosť a ich scenáre obnovy sa líšia.

Po odvolaní aktualizujte súbor CRL, ktorý uvádza konfigurácia servera, a potom službu znova načítajte, aby ho nové pripojenia prečítali. Dokumentácia Easy-RSA pokrýva usporiadanie pracovného priestoru a postup podpisovania; pravidlá vlastníctva okolo neho zostávajú rozhodnutím o vašom hoste. Overte, čo služba načítala, pomocou openssl crl -in /etc/openvpn/crl.pem -noout -lastupdate -nextupdate namiesto predpokladu, že to opätovné načítanie prevzalo.

Test, ktorý dokazuje oddelenie

Overte negatívny prípad, nielen ten funkčný. Podpíšte certifikát z účtu vydavateľa podľa návrhu a potom potvrďte, že ten istý účet nemôže spustiť službu ani prečítať súkromný kľúč servera. Potom potvrďte, že účet daemona nemôže prečítať súkromný kľúč CA.

Tieto tri kontroly trvajú niekoľko minút a prežijú zmeny personálu, pretože sú tvrdeniami o oprávneniach, nie o zvyku. Zapíšte výsledok s cestami a účtami, ktoré pokryl, plus dátum, kedy ste ich vykonali. Ďalší človek, ktorý toto nasadenie zdedí, si inak hranicu znova odvodí z návodu, ktorý ju nikdy nemal. Datovaný záznam je aj to, vďaka čomu ďalšia revízia trvá minúty namiesto popoludnia.

Súvisiace články