Is-servizz jibda, jaqra l-profil mingħajr ebda ilment u mbagħad imut fuq linja li tidher mhux relatata: ma jistax jiftaħ ca.crt. Xejn ma nbidel fiċ-ċertifikat, u l-passaġġ tal-profil fil-fajl tal-unit huwa assolut. Dak it-taħlita hija l-ħjiel. Il-passaġġ li għaddejt jidentifika fajl wieħed, u l-ismijiet ġewwa dak il-fajl jiġu riżolti x’imkien ieħor għal kollox, għalhekk tnedija li tidher kompletament kwalifikata xorta tista’ tkun qed taqra ċ-ċwievet tagħha minn direttorju li ħadd ma kien beħsiebu.

Il-falliment għandu ftit kawżi, u jaqbel li jisseparaw fl-ordni: id-direttorju bażi li l-proċess fil-fatt kellu, il-kuntest tat-tnedija tas-servizz, u l-permessi jew is-sandbox madwar il-fajl ladarba l-passaġġ ikun tajjeb. Kull waħda tħalli traċċa differenti — fl-unit, fil-proċess u fis-sistema tal-fajls.

Il-passaġġ tal-profil mhuwiex direttorju bażi

Immaġina proċess li jibda f’/tmp u jingħata /etc/vpn/prod/tenant-a.ovpn. Ġewwa dak il-profil, il-linja ca ca.crt issemmi passaġġ relattiv. Xejn fl-argument li sab il-profil ma jerġa’ jikteb dak l-isem, għalhekk il-proċess ifittex /tmp/ca.crt u jirrapporta fajl nieqes.

Il-ħaġa konfuża hija l-ordni tal-iżbalji. OpenVPN janalizza l-konfigurazzjoni l-ewwel u jiftaħ il-fajls imsemmija hekk kif jilħaqhom, għalhekk żball tipografiku fil-profil jiġi rrappurtat qabel ma tinqabad xi ċavetta, filwaqt li ċertifikat nieqes jidher biss meta l-analiżi tasal hemm. Għalhekk profil li jitgħabba huwa prova li s-sintassi hija tajba, mhux li l-fajls li jsemmi nstabu.

X’jifred il-manwal: --config u --cd

Il-manwal ta’ OpenVPN 2.6 jiddeskrivi żewġ għażliet distinti. Waħda tgħabbi fajl tal-konfigurazzjoni. L-oħra tbiddel id-direttorju tal-proċess qabel ma jiġu mqarrba l-konfigurazzjoni, iċ-ċavetta, l-iskritt u fajls oħra, u teħtieġ direttorju assolut mingħajr ebda referenza għal dak attwali.

openvpn --cd /etc/vpn/prod --config tenant-a.ovpn

Dik is-sejħa hija forma, mhux struzzjoni biex tniedi l-profil ta’ ħaddieħor. Dak li tagħtik huwa determinazzjoni: il-bażi għal kull isem relattiv fil-katina hija ddikjarata fil-kmand minflok ma tiġi wirtiet mill-qoxra jew mill-maniġer li beda l-proċess. L-alternattiva hija valida bl-istess mod u spiss aħjar għal servizz: ħalli d-direttorju tax-xogħol u agħmel kull fajl imsemmi assolut ġewwa l-profil.

Tkun liema tkun l-għażla, awditja l-katina kollha u mhux l-ewwel falliment. Profil jista’ jġib fajl tal-konfigurazzjoni ieħor, u l-ismijiet relattivi tal-fajl inkluż jiġu riżolti kontra l-istess direttorju tal-proċess, mhux kontra d-direttorju tal-fajl li inkludiehom. Il-passaġġi tal-logs, il-fajls tal-awtentikazzjoni u l-iskripts awżiljari jsegwu l-istess regola.

Is-servizz jibda x’imkien ieħor

Qoxra interattiva fid-direttorju tal-profil ma tipprova xejn dwar unit ippakkjat. Il-maniġers jistabbilixxu d-direttorju tax-xogħol tagħhom, u skritt tal-ġewwa jista’ jerġa’ jbiddlu qabel ma jitħaddem il-binarju. L-unit li jonqos huwa l-unika tnedija li jaqbel li wieħed jirraġuna dwarha.

systemctl show -p WorkingDirectory -p ExecStart --value openvpn@tenant-a
ls -l /proc/$(pgrep -n openvpn)/cwd

It-tieni kmand juri d-direttorju li l-proċess ħaj fil-fatt iżomm, u dan huwa aktar affidabbli mill-fajl tal-unit meta jkun hemm involut il-ġewwa. Jekk it-tnejn ma jaqblux, il-ġewwa huwa t-tweġiba tiegħek u l-unit hija traċċa qarrieqa.

Wara t-tfittxija: permessi, chroot u sandbox

Direttorju bażi korrett xorta jista’ jagħti l-istess messaġġ, għax ir-riżoluzzjoni u l-aċċess huma passi separati. Il-proċess jeħtieġ permess ta’ eżekuzzjoni fuq kull direttorju ġenitur u permess ta’ qari fuq il-fajl, u unit tas-servizz li jaħbi parti mis-sistema tal-fajls ibiddel dak li l-proċess jista’ jara xejn inqas.

Tliet varjanti komuni jagħtu l-istess żball. Il-fajl jinqara biss mill-root filwaqt li s-servizz iwarrab il-privileġġi qabel ma jiftħu. L-unit jistabbilixxi veduta protettiva tas-sistema tal-fajls li ma tinkludix id-direttorju tal-profil. Id-daemon jaħdem b’chroot, għalhekk il-passaġġ li jeżisti fuq l-host ma jeżistix ġewwa dik il-veduta.

Iddijanjostika bil-propjetà tal-fajl u bl-identità tal-proċess, mhux billi tħoll il-permessi. Li tagħmel ċavetta privata tinqara minn kulħadd biex toqgħod kwieta dan l-iżball tbiddel falliment storbjuż ma’ wieħed sieket, u ċ-ċavetta hija eżatt dik il-parti tad-direttorju li l-inqas trid teskponi.

Ipprova l-korrezzjoni bit-tnedija tiegħek stess

Erġa’ ibda l-unit vera minn direttorju mhux relatat mal-profil u osservah l-istess linja tal-bidu. Imbagħad ikkonferma li l-proċess qed iżomm id-direttorju maħsub waqt li jaħdem, u li ċ-ċertifikat li tgħabba huwa dak li tistenna.

systemctl restart openvpn@tenant-a
systemctl status openvpn@tenant-a --no-pager
journalctl -u openvpn@tenant-a -n 20 --no-pager

Meta t-tagħbija tal-passaġġi tirnexxi, l-awtentikazzjoni u r-rotta jibqgħu stadji separati bil-fallimenti tagħhom, u konnessjoni li titla’ iżda ma tgħaddix traffiku hija investigazzjoni oħra. Il-korrezzjoni hawnhekk hija biss dwar minn liema direttorju ġew il-fajls, u għandha tidher fis-sejħa minflok tiftakar min ġieha fl-aħħar darba bl-idejn.

Jekk il-profil jiġi implimentat minn maniġer tal-konfigurazzjoni, qiegħed hemm ukoll id-direttorju bażi jew l-ismijiet assoluti tal-fajls. Korrezzjoni manwali fuq host wieħed hija l-verżjoni ta’ din il-problema li terġa’ lura wara l-bini mill-ġdid li jmiss.

Artikli relatati