Adeeggu wuu bilaabmaa, profile-ka wuu akhriyaa isagoo aan caban, kadibna wuu ku dhintaa sadar aan xiriir la lahayn u muuqda: ma furi karo ca.crt. Wax shahaadada ka mid ah ma aan beddelin, iyo wadada profile-ka ee faylka unit waa mid buuxa. Isku darkaas ayaa calaamadda ah. Wadada aad bixisay waxay tilmaantaa hal fayl, magacyada gudaha faylkaasna meel kale gebi ahaan ayaa lagu xalliyaa, sidaas darteed bilaabis u muuqata mid si buuxda u qalma weli waxay ka akhrin kartaa furahaheeda galka qofna aan ula jeedin.

Guuldarradu waxay leedahay sababo yar, waana in loo kala saaro si taxane ah: galka saldhigga ah ee ay dhab ahaan lahayd habsocodku, macnaha bilaabista adeegga, iyo oggolaanshaha ama sandbox-ka ku wareegsan faylka marka wadadu saxan tahay. Mid kastaa wuxuu ka tagaasign gooni ah — unit-ka, habsocodka iyo nidaamka faylasha.

Wadada profile-ku ma aha galka saldhigga

Qiyaas habsocod ka bilaabma /tmp oo la siiyo /etc/vpn/prod/tenant-a.ovpn. Gudaha profile-kaas, sadarka ca ca.crt wuxuu magacaabaa waddo qaraabo. Wax ka mid ah doodda soo helay profile-ka ma dib u qoro magacaas, sidaas darteed habsocodku wuxuu raadiyaa /tmp/ca.crt oo wuxuu soo sheegaa fayl maqan.

Waxa jahawareerka leh waa nidaamka khaladaadka. OpenVPN wuxuu marka hore falanqeeyaa habaynta oo wuxuu furaa faylasha la tixraacay marka uu gaaro, sidaas darteed khalad qoraal ah oo profile-ka ku jira waa la soo sheegaa ka hor inta aan fure la taaban, halka shahaadada maqan ay soo baxdo oo kaliya marka falanqayntu halkaas gaarto. Sidaas darteed profile soo dega waa caddayn in hab-dhismeedku saxan yahay, ma aha in faylasha uu magacaabo la helay.

Waxa buugga hagaha kala soocaa: --config iyo --cd

Buugga hagaha OpenVPN 2.6 wuxuu sharraxayaa laba doorasho oo kala duwan. Mid wuxuu soo dejiyaa fayl habayn. Midda kale waxay beddelaa galka habsocodka ka hor inta aan la akhrin habaynta, furaha, skriptiga iyo faylasha kale, waxayna u baahan tahay gal buuxa oo aan tixraac ku lahayn kan hadda.

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

Wicitaankaas waa qaab, ma aha tilmaan lagu bilaabayo profile qof kale. Waxa uu ku siinayaa waa go'aan-qaadasho: saldhigga magac kasta oo qaraabo ah oo silsiladda ku jira waxaa lagu sheegaa amarka halkii laga dhaxli lahaa shell ama maamule kasta oo habsocodka bilaabay. Beddelka ayaa isna si la mid ah ansax ah oo inta badan ka wanaagsan adeeg: galka shaqada u daa oo ka dhig fayl kasta oo la tixraacay mid buuxa gudaha profile-ka.

Wax kasta oo aad dooratid, hubi silsiladda oo dhan ee ma aha guuldarradii ugu horreysay. Profile-ku wuxuu soo jiidan karaa fayl habayn kale, magacyada qaraabada ee faylka lagu darayna waxaa lagu xalliyaa isla galka habsocodka, ma aha galka faylka ku daray. Waddooyinka log-ka, faylasha xaqiijinta iyo skriptiyada caawinta waxay raacaan isla qaanuunka.

Adeeggu meel kale ayuu ka bilaabmaa

Shell is-dhexgal ah oo ku jira galka profile-ka waxba kama caddeeyo unit la xidhxidhay. Maamulayaashu waxay dejiyaan galka shaqadooda, skripti duubanna wuu mar kale beddeli karaa ka hor inta binary-gu socdo. Unit-ka guuldareysta ayaa ah bilaabista kaliya ee ay mudan tahay in laga fikiro.

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

Amarka labaad wuxuu muujinayaa galka ay habsocodka nool dhab ahaan haysto, taasna way ka lagu kalsoonaan karo faylka unit-ka marka duubis ku lug leedahay. Haddii labaduba aanay isku raacin, jawaabtu waa duubista unit-kuna waa calaamad marin-habiid ah.

Raadinta ka dib: oggolaansho, chroot iyo sandbox

Gal saldhig ah oo saxan weli wuxuu soo saari karaa fariin isku mid ah, sababtoo ah xallinta iyo gelitaanku waa tallaabooyin gooni ah. Habsocodku wuxuu u baahan yahay oggolaansho fulin galka waalid kasta iyo oggolaansho akhris faylka, unit adeeg oo qariya qayb ka mid ah nidaamka faylashana wuxuu beddelaa waxa habsocodku gebi ahaan arki karo.

Saddex nooc oo caadi ah ayaa soo saara khalad isku mid ah. Faylku wuxuu u akhmi karaa oo kaliya root, halka adeeggu uu ka tanaasulo mudnaanta ka hor inta uusan furin. Unit-ku wuxuu dejiyaa muuqaal ilaalin ah oo nidaamka faylasha oo aan ku darin galka profile-ka. Daemon-ku wuxuu ku shaqeeyaa chroot, sidaas darteed wadada ku jirta martigeliyaha kama jirto muuqaalkaas.

Ku baar milkiilaha faylka iyo aqoonsiga habsocodka, ma aha inaad dabacsayso oggolaanshaha. Ka dhigista fure gaar ah mid qof walba akhmi karo si khaladkan loo aamusiyo waxay beddelaa guuldarro qaylo leh mid aamusan, furahana waa qaybta galka ee aad ugu yar rabto inaad muujiso.

Ku caddee sixitaanka bilaabistaada

Dib u bilow unit-ka dhabta ah gal aan xiriir la lahayn profile-ka oo fiiri isla sadarka bilaabista. Kadib xaqiiji in habsocodku uu haysto galka loogu talagalay inta uu socdo, iyo in shahaadada uu soo dejiyay ay tahay tii aad filaysay.

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

Marka soo dejinta waddooyinku guulaysto, xaqiijinta iyo jiheyntu weli waa tallaabooyin gooni ah oo leh guuldarrooyinkooda, xiriirka soo kaca laakiin aan taraafik gudbin waa baaritaan kale. Sixitaanka halkan wuxuu ku saabsan yahay oo kaliya galka ay faylashu ka yimaadeen, waana inuu ka muuqdaa wicitaanka halkii uu xasuusan lahaa qofkii ugu dambeeyay gacanta ku shaqeeyay.

Haddii profile-ka lagu geynayo maamule habayn, halkaas ku dar gal saldhigga ama magacyada faylasha buuxa. Sixitaan gacan lagu sameeyay hal martigeliye waa nooca dhibaatadan ee soo noqda dib u dhista xiga ka dib.

Maqaallo la xiriira