client-config-dir injorohet pasi OpenVPN u bë shërbim
Një client-config-dir relativ zgjidhet kundrejt drejtorisë së punës të demonit. Lexoni unit-in, kaloni lejet e shtegut dhe më pas konfirmoni kërkimin në regjistër.
Tunesi juaj ngrihet dhe klienti lidhet, por adresa fikse dhe rrugët e shtyra që përcaktuat për atë përdorues të vetëm mungojnë. Regjistri nuk thotë “file not found”, dhe pikërisht kjo i dërgon njerëzit të rigjenerojnë certifikatat. Në shumicën e këtyre rasteve demoni punon nga një drejtori tjetër nga ajo e shell-it ku testuat, dhe client-config-dir nuk u zgjidh kurrë siç supozuat. Rregullimi është korrigjim shtegu, jo rivendosje kredencialesh.
Lexoni unit-in përpara se të prekni konfigurimin
Filloni me procesin që punon vërtet, jo me skedarin që redaktuat. Pyetni systemd për rreshtin e ekzekutimit, drejtorinë e punës dhe llogarinë ku zbret. Këto tre përgjigje shpjegojnë shumicën e dështimeve të kësaj klase:
systemctl show openvpn-server@server -p ExecStart -p WorkingDirectory -p User -p RootDirectoryNjë WorkingDirectory bosh do të thotë që unit-i nis në /, prandaj një client-config-dir ccd relativ kërkohet në /ccd. Ajo drejtori pothuajse nuk ekziston kurrë, dhe demoni nuk e konsideron mungesën e saj fatale.
Krahasojeni me nisjen interaktive që përdorët gjatë testimit, ku drejtoria aktuale e shell-it tuaj ishte me gjasë ajo e konfigurimit. I njëjti skedar, të njëjtat fjalë kyçe, dy rezultate të ndryshme.
Kundrejt çfarë zgjidhet një shteg relativ
Fjala kyçe zgjidhet kundrejt drejtorisë së punës të procesit në momentin kur përdoret opsioni. Nuk do të thotë “pranë skedarit të konfigurimit që dhashë me --config”. OpenVPN lexon me kënaqësi një konfigurim nga një shteg absolut dhe prapëseprapë zgjidh vlerat relative diku tjetër, dhe pikërisht kjo është kurthi këtu. Manuali i OpenVPN 2.6 e shpreh rregullin te --client-config-dir dhe përsëri te --cd.
Fjala kyçe cd e ndryshon atë kontekst përpara se të lexohen skedarë të tjerë, kështu që një unit që vendos cd /etc/openvpn/server dhe pastaj client-config-dir ccd zgjidhet në /etc/openvpn/server/ccd. Nëse shtoni cd, kontrolloni rendin e direktivave dhe mbani mend se ndikon në çdo referencë tjetër relative në të njëjtin skedar.
Kaloni shtegun si llogaria e demonit
Një shteg mund të jetë i saktë dhe prapëseprapë i palexueshëm. Pas heqjes së privilegjeve demoni nuk është më root, prandaj çdo drejtori prind kërkon leje kërkimi për atë llogari, dhe vetë skedari i klientit kërkon leje leximi. Një bit ekzekutimi që mungon në një prind mjafton për të fshehur skedarin, dhe gabimi shfaqet vetëm si një klient që merr në heshtje grupin e parazgjedhur.
namei printon lejen e secilit komponent sipas rendit, gjë që është më e shpejtë se kontrolli i drejtorive një nga një:
namei -l /etc/openvpn/server/ccd/client1Pastaj provoni leximin si llogaria e shërbimit dhe jo si ju vetë:
runuser -u openvpn -- test -r /etc/openvpn/server/ccd/client1 && echo readableNëse unit-i përdor chroot, drejtoria duhet të ekzistojë brenda burgut, dhe shtegu në konfigurim interpretohet pasi të zbatohet chroot. Një skedar që është në host jashtë burgut është i padukshëm nga brenda.
Konfirmoni kërkimin në vend që të hamendësoni
Ngrini nivelin e regjistrit për një rinisje dhe lexoni çfarë thotë serveri për opsionet specifike të klientit. Te verb 4 demoni raporton konfigurimin për klient që importoi, prandaj një rresht që mungon është provë e drejtpërdrejtë se nuk u lexua asnjë skedar për atë lidhje.
openvpn --config /etc/openvpn/server.conf --verb 4 --client-config-dir /etc/openvpn/server/ccdEkzekutoni atë në plan të parë në një port të lirë dhe lidhni një klient. Kjo e heq systemd plotësisht nga fotografia: nëse anashkalimet shfaqen këtu dhe jo nën shërbim, ndryshimi është konteksti i unit-it, jo skedari.
Vendosni çfarë duhet të ndodhë kur asnjë skedar nuk përputhet. Pa ccd-exclusive klienti pranohet vetëm me cilësimet globale të grupit, dhe ky është dështimi i heshtur i përshkruar më sipër. Me të, një skedar që mungon bëhet lidhje e refuzuar, dhe ai refuzim është më i lehtë për t'u vënë re, por më i vështirë për t'u korrigjuar nën ngarkesë.
Rregulloni, rinisni, verifikoni
Bëni drejtorinë absolute në konfigurim dhe lëreni ashtu. Shtigjet relative janë të sigurta vetëm kur unit-i fikson drejtorinë e punës, dhe fiksimi është një pjesë lëvizëse shtesë që dikush do ta heqë më vonë.
client-config-dir /etc/openvpn/server/ccd
ccd-exclusiveRinisni instancën, rilidhni një klient të njohur dhe lexoni adresën që mori së bashku me rrugët e shtyra drejt tij. Nëse adresa përputhet me rreshtin ifconfig-push në skedarin e atij klienti, kërkimi funksionoi. Nëse klienti përsëri bie në grupin e përgjithshëm, kthehuni te numri i rreshtave të regjistrit: zero importime do të thotë që shtegu ose identiteti janë të gabuara, një importim me përmbajtje të gabuar do të thotë që po redaktoni një skedar tjetër nga ai që lexon demoni.
Kthehuni duke rivendosur unit-in dhe konfigurimin e mëparshëm së bashku, pastaj rinisni. Certifikatat nuk kanë nevojë të rishpërndahen për asgjë nga kjo, dhe trajtimi i një problemi drejtorie si problem kredencialesh është mënyra se si një rregullim pesëminutësh bëhet dritare mirëmbajtjeje.