Pribilegioen jaitsieraren ondoren: zein OpenVPN fitxategik dihardute oraindik?
Jaitsiera aurretik irekitako deskriptoreek funtzionatzen jarraitzen dute; geroago berriz irekitako bideek ez. Erabaki zure konfigurazioak hiru exekuzio-fitxategietatik zein berrireki behar duen.
Iraupen luzeak soilik frogatzen du abiaraztea une hartan daemonak zituen pribilegioekin lortu zela. Hemen garrantzitsuak diren hutsegiteak geroago etortzen dira: bezero berri bat konektatzen da, errebokazio-zerrenda bat ordezkatzen da, laguntza-script batek fitxategi bat idatzi behar du. Horietako bakoitza pribilegiorik gabeko kontuak egindako irekitze berria da, bere baimen-galderarekin eta bere errore-mezuarekin. Hiru erabakik bereizten dute funtzionatzen jarraitzen duen konfigurazioa hurrengo gertaeran huts egiten duenetik.
Bereizi goiz kargatutakoa geroago irekitzen denetik
Deskriptorea fitxategi-deskribapen ireki baten gaineko heldulekua da, eta sarbide-modua deskribapen hura sortzean finkatu zen. Prozesuaren erabiltzailea geroago aldatzeak ez du heldulekua ixten, horregatik root gisa irakurritako gako-fitxategiak funtzionatzen jarraitzen du jaitsieraren ondoren. Modua ere ez da aldatzen: irakurtzeko irekitako heldulekua ez da idazgarri bihurtzen, eta idazgarri den heldulekua ez da kentzen kontuak bidean zituen eskubideak galdu izanagatik soilik. Bi gertaera horiek azaltzen dute txosten hauetan ageri den portaera harrigarriaren zatirik handiena.
Beste erdia memoria da. Daemonak ziurtagiria analiza dezake, analizatutako materiala gorde eta fitxategia itxi; erabileran geratzen dena datuak dira, ez fitxategi ireki bat. Beraz, trafiko jarraituak ez du frogatzen deskriptore bat irekita dagoenik ezta bidearen izena irisgarria denik ere. Soilik frogatzen du uneko saiorako behar den materiala lehenago lortu zela.
Geroagoko irekitzea beste transakzio bat da. Uneko kredentzialekin, uneko segurtasun-testuinguruarekin eta uneko muntaketa-ikuspegiarekin exekutatzen da, beraz abiaraztean irakurgarri zen bide bat hurrengo konexioan uka daiteke. Errotazioak tranpa gehitzen du: fitxategi berri bat bide-izen beraren gainean idazteak lehendik dagoen deskriptorea objektu zaharrean itsatsita uzten du, beraz birkarga arrakastatsua dirudi daemonak aurreko edukia erabiltzen jarraitzen duen bitartean. Alderatu prozesuak duen inode-a diskoan dagoenarekin errotazioa gertatu dela sinetsi aurretik.
Izenda itzazu hiru exekuzio-irakurketa eta bakoitza noiz abiarazten den
Hiru baliabide hasieratzearen askoz geroago irekitzen dira normalean, eta une desberdinetan huts egiten dute. Bezero jakin baten konfigurazio-fitxategia bezero hori konektatzen denean irakurtzen da, beraz erabiltzaile batentzat hautsi daiteke besteek jarraitzen duten bitartean. Errebokazio-datuak bikotearen autentifikazioan eta fitxategia ordezkatzean berriz aztertzen dira. Aldi baterako direktorioa script edo plugin batek zerbait idazten duenean ukituz da soilik.
Hiru horietako bat ere ez da abiarazte-bidekoa, horregatik asteak osasuntsu egondako zerbitzari bat hurrengo konexioan huts egin dezake. Kategoriak konponketaren jabea ere izendatzen du: lehenengo biak daemonaren kontuaren peko konfigurazioan irakurtzeko baimenak dira, eta hirugarrena helburu estuko idazgune bat.
| 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 gehienek uste dutena baino galdera estuagoari erantzuten dio. Fitxategia gako-fitxategia irekita mantentzen du SIGUSR1 eta ping-restart berrabiarazte dokumentatuetan zehar, eta ez du ezer egiten CCD fitxategientzat, errebokazio-datuentzat, laguntza-exekutagarrientzat edo prozesuaren berrabiarazte osoarentzat. Horiek beren irekitze-bideak jarraitzen dituzte oraindik, une horretan dabilen kontuaren pean.
Egiaztatu kontua eta benetan duen ikuspegia
Galdetu dabiltzan daemonari zein kontu erabiltzen duen, unit fitxategian fidatu beharrean, eta gero alderatu erantzuna unitateak ezartzen duenarekin. Desadostasuna da lehen konpondu beharreko gauza, geroagoko baimen-egiaztapen bakoitza prozesua benetan den horren gisa exekutatzen delako. Gero ibili bidea osagai batetik bestera; zeharkatzea maila bakoitzean ebaluatzen da, beraz zeharka ez daitekeen direktorio baten barruko fitxategi irakurgarria irakurtezina izaten jarraitzen du. Azken fitxategi-modua azken galdera da, ez lehena.
Izen-espazioek eta zerbitzuen harea-eremuek jabetzak eta modu-biteek deskribatzen ez dituzten mugak gehitzen dituzte. Zure shell-ean ikusgai den bide bat falta daiteke edo irakurtzeko soilik izan daiteke chroot batean, muntaketa-izen-espazio batean edo etxeko direktorioak ezkutatzen dituen unitate batean. Segurtasun-moduluek beste geruza bat gehitzen dute, beraz irakurgarri dirudien fitxategi bat ukatu egin daiteke irekitzean.
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/aliceAdministratzailearen shell-ean irakurketa arrakastatsuak ez du baldintza konbinatu horietako bat ere probatzen. Exekutatu egiaztapena daemonaren kontuarekin, izen-espazio eta harea-eremu berarekin, edo onartu emaitzak zure shell-a deskribatzen duela eta ez zerbitzaria. Hirugarren komandoa proba horren bertsio merkea da: osagai bakoitzaren modua inprimatzen du eta daemonaren kontuak zeharkatu ezin duen lehenengoan huts egiten du.
Eman exekuzio-idazketari bere direktorioa
Irakurketa inbentarioaren erdia baino ez da. Laguntza-script batek egoera-fitxategi bat sortu behar izan dezake, plugin batek bere konfigurazioaren ondoan egoera idatzi behar izan dezake, eta idazketa horiek ez daude estalita konfigurazio-zuhaitza idazgarri egitearekin. Eman direktorio zehatzari bere funtzioak behar duen idazketa-baimena, azaldu dezakezun jabe eta moduarekin. Hobetsi irakurtzeko soilik den sarbidea soilik irakurtzen den guztiarentzat.
Eduki gako pribatuaren baimenak politika-fitxategietatik bereizita. Berrabiarazte baten ondoren berriro irakurri behar den gakoak beste baldintza bat du konexio bakoitzean irakurtzen den bezero-fitxategi batek baino, eta bien arteko modu permisibo bakarrak problemak eskatzen duena baino sarbide gehiago ematen du. Jabetza estuko daemon-kontu dedikatu bat errazago auditatzeko da talde zabal bat baino. Gakoak berrabiarazteak gainditu behar dituenean, persist-key berrirakurketa kentzen du direktorioa zabaltzen duen ordez.
Erabaki erreproduzi dezakezun gertaeratik
Tunel bizirik dagoenak kodearen bide bakarra frogatzen du. Fitxategia behar duen gertaera da ardura zaizun irekitzea estaltzen duen proba bakarra, dela bezero-konexio berri bat, dela ordezkatutako errebokazio-fitxategi bat, dela baimendutako berrabiarazte bigun bat edo dela aurreikusitako berrabiarazte bat. Aukera ezazu gertaera, exekutatu eta gorde lehen errorea azkena beharrean.
Berrabiarazte bigun baterako, seinale batek eta unitatearen erregistroak erakusten dute gakoa berriro irakurri zen ala ez. Bidali seinalea eta gero irakurri unitateak idatzitako azken lerroak:
systemctl kill -s SIGUSR1 [email protected]
journalctl -u [email protected] -n 40 --no-pagerEz ondorioztatu konprometitutako daemon batek fitxategiak aldatzeko gaitasuna galdu duenik pribilegioak jaitsi zirelako soilik. Oraindik zer egin dezakeen geratzen zaizkion kredentzialen, gaitasunen, idatz ditzakeen direktorioen eta oraindik dituen deskriptore idazgarrien mende dago. Pribilegioen murrizketak autoritatea estutzen du, eta exekuzio-irekitzen inbentarioak erakusten du noraino. Idatzi muga hori konfigurazioaren ondoan, hurrengo pertsonak berriro aurkitu behar ez dezan.