Pärast õiguste langetamist: millised OpenVPN-failid veel töötavad?
Enne langetamist avatud kirjeldajad töötavad edasi; hiljem uuesti avatud teed mitte. Otsustage, millise kolmest käitusaegsest failist peab teie seadistus uuesti avama.
Pikk tööaeg tõestab ainult seda, et käivitamine õnnestus nende õigustega, mis deemonil sel hetkel olid. Siin olulised tõrked tulevad hiljem: uus klient ühendub, tühistamisnimekiri asendatakse, abiskript peab faili kirjutama. Igaüks neist on uus avamine, mille teeb õigusteta konto, oma õiguste küsimuse ja oma veateatega. Kolm otsust eraldavad seadistuse, mis töötab edasi, sellest, mis ebaõnnestub järgmisel sündmusel.
Eraldage vara laaditu hiljem avatavast
Kirjeldaja on käepide avatud failikirjeldusele ja juurdepääsurežiim fikseeriti selle kirjelduse loomisel. Protsessi kasutaja hilisem muutmine ei sulge käepidet, seepärast töötab rootina loetud võtmefail ka pärast langetamist edasi. Ka režiim ei muutu: lugemiseks avatud käepide ei muutu kirjutatavaks ja kirjutatav käepide ei tühistu ainult sellepärast, et konto kaotas õigused teele. Need kaks asjaolu selgitavad suuremat osa nende aruannete üllatavast käitumisest.
Teine pool on mälu. Deemon saab sertifikaadi parsida, parsitud materjali alles hoida ja faili sulgeda; kasutuses püsivad andmed, mitte avatud fail. Seepärast ei tõenda jätkuv liiklus ei seda, et kirjeldaja on avatud, ega seda, et tee nimi on kättesaadav. See tõendab ainult, et praeguse seansi jaoks vajalik materjal hangiti varem.
Hilisem avamine on teine tehing. See töötab praeguste volituste, praeguse turbekonteksti ja praeguse kinnitamisvaate all, seega käivitamisel loetav tee võidakse järgmisel ühendusel tagasi lükata. Rotatsioon lisab lõksu: uue faili kirjutamine sama teed nime peale jätab olemasoleva kirjeldaja vana objekti külge, seepärast võib uuestilaadimine näida õnnestuvat, samal ajal kui deemon kasutab veel eelmist sisu. Võrrelge protsessi hoitavat inode-t kettal olevaga enne, kui usute, et rotatsioon jõustus.
Nimetage kolm käitusaegset lugemist ja millal igaüks käivitub
Kolm ressurssi avatakse tavaliselt kaua pärast algatamist ja need ebaõnnestuvad erinevatel hetkedel. Konkreetse kliendi seadistusfail loetakse siis, kui see klient ühendub, seega võib see ühel kasutajal katki minna, samal ajal kui teised jätkavad. Tühistamisandmeid vaadatakse vastaspoole autentimise ajal ja uuesti faili asendamisel. Ajutist kataloogi puudutatakse ainult siis, kui skript või plugin midagi kirjutab.
Ükski kolmest ei kuulu käivitusrajasse, seepärast võib nädalaid terve server järgmisel ühendusel ebaõnnestuda. Kategooria nimetab ka paranduse omaniku: kaks esimest on lugemisõigused seadistusele deemonikonto all ja kolmas on kitsa otstarbega kirjutatav koht.
| 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 vastab kitsamale küsimusele, kui enamik eeldab. See hob avatud võtmefaili dokumenteeritud SIGUSR1 ja ping-restart lähtestamiste ajal, ja see ei tee midagi CCD-failidele, tühistamisandmetele, abiprogrammidele ega protsessi täielikule taaskäivitusele. Need järgivad endiselt oma avamisradu, mis tahes sel hetkel töötava konto all.
Kinnitage konto ja vaade, mis sellel tegelikult on
Küsige töötavalt deemonilt, millist kontot see kasutab, selle asemel et usaldada unit-faili, ja võrrelge vastust sellega, mida unit seab. Lahknevus on esimene lahendatav asi, sest iga hilisem õiguste kontroll töötab sellena, kes protsess tegelikult on. Seejärel käige tee läbi komponent komponendi haaval; läbiminekut hinnatakse igal tasandil, seega loetav fail läbimatavas kataloogis jääb loetamatuks. Lõplik failirežiim on viimane küsimus, mitte esimene.
Nimeruumid ja teenuse liivakastid lisavad piire, mida omand ja režiimibitid ei kirjelda. Sinu shellis nähtav tee võib chrooti, kinnitamise nimeruumi või kodukatalooge peitva uniti sees puududa või olla ainult lugemiseks. Turbemoodulid lisavad veel ühe kihi, seega loetavana näiv fail võidakse avamisel siiski tagasi lükata.
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/aliceEdukas lugemine administraatori shellis ei kontrolli ühtki neist kombineeritud tingimustest. Käivitage kontroll deemonikonto all, sama nimeruumi ja liivakastiga, või leppige sellega, et tulemus kirjeldab teie shelli, mitte serverit. Kolmas käsk on selle testi odav versioon: see trükib iga komponendi režiimi ja ebaõnnestub esimesel, millest deemonikonto läbi ei pääse.
Andke käitusaegsele kirjutamisele oma kataloog
Lugemine on ainult pool loendist. Abiskript võib vajada olekufaili loomist, plugin võib vajada oleku kirjutamist oma seadistuse kõrvale, ja neid kirjutusi ei kata see, kui seadistuspuu tehakse kirjutatavaks. Andke konkreetsele kataloogile selle funktsiooni jaoks vajalik kirjutusõigus, omaniku ja režiimiga, mida oskate selgitada. Eelistage ainult lugemise juurdepääsu kõigele, mida ainult loetakse.
Hoidke privaatvõtme õigusi poliitikafailidest eraldi. Võti, mida tuleb pärast lähtestamist uuesti lugeda, nõuab teistsugust kui kliendifail, mida loetakse igal ühendusel, ja üks lubav režiim mõlemale annab rohkem juurdepääsu, kui probleem palub. Kitsa omandiga pühendatud deemonikontot on kergem auditeerida kui laia gruppi. Kui võti peab lähtestamised üle elama, persist-key eemaldab see uuestilugemise, selle asemel et kataloogi laiendada.
Otsustage sündmuse järgi, mida saate korrata
Elav tunnel tõestab ühte rada koodis. Sündmus, mis faili vajab, on ainus test, mis katab teile olulise avamise, olgu selleks uus kliendiühendus, asendatud tühistamisfail, lubatud pehme lähtestamine või kavandatud taaskäivitus. Valige sündmus, käivitage see ja hoidke esimest viga, mitte viimast.
Pehme lähtestamise korral näitavad üks signaal ja uniti logi, kas võti loeti uuesti. Saatke signaal ja seejärel lugege viimased read, mille unit kirjutas:
systemctl kill -s SIGUSR1 [email protected]
journalctl -u [email protected] -n 40 --no-pagerÄrge järeldage, et kompromiteeritud deemon ei saa enam faile muuta ainult seetõttu, et õigusi langetati. Mida see veel suudab, sõltub allesjäänud volitustest, selle võimetest, kataloogidest, kuhu see saab kirjutada, ja igast veel hoitavast kirjutatavast kirjeldajast. Õiguste vähendamine kitsendab volitust ja käitusaegsete avamiste loend näitab, kui kaugele. Kirjutage see piir seadistuse kõrvale, et järgmine inimene ei peaks seda uuesti avastama.