OpenVPN ma jsibx ca.crt għalkemm il-profil jitgħabba
Il-passaġġ tal-profil mhuwiex il-bażi għall-fajls ġo fih. Ara għaliex --config assolut xorta jonqos fuq ca.crt u kif it-tnedija tiddeċiedi t-tweġiba.
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.