Kernel Oops marka VPN-ku bilaabo: caddayn mudan in la kaydiyo
Jab ku yimaada bilowga VPN-ka wuxuu u baahan yahay build kernel-ka u dhigma iyo raadka koowaad, ma aha sawirka safka ugu dambeeya. Go'aanso waxa la kaydiyo ka hor intaadan dib u bilaabin.
Bilaabista macmiilka VPN waa calaamad waqti ku habboon, ma aha sabab, iyo farqigaas ayaa go'aamiya waxa xiga. Marka Kernel Oops yimaado meel u dhow waqtigaas, doorashadu waa inta u dhaxaysa ururinta warbixin cilad la isticmaali karo iyo kicinta isla jabkaas shan jeer oo dheeraad ah mishiin wax soo saar ah. Kaydi afar shay ka hor dib u bilaabista: build kernel-ka saxda ah, raadka koowaad ee ciladda, xaaladda taint iyo sharraxaad gaaban oo ku saabsan wax kasta oo kale oo isbeddelay isla daqiiqaddaas. Inta kale waa fasiraad, fasiraadduna waxay sugayn kartaa ilaa caddaynta ay ku sugan tahay meel ammaan ah.
Qabso ciladda koowaad, ma aha safka ugu dambeeya
Oops-ka koowaad ee log-ga ayaa ah kan muhiimka ah, sababtoo ah cilad kasta oo dambe waxay noqon kartaa waxyeello dhinac ah oo ka timaadda kernel aan hore u caafimaad qabin. Koobi shaashadda oo ay la socoto raadka wicitaanka, sababtoo ah shaashaddu waxay sidataa amarka ciladdu keenay iyo xaaladda diiwaannada ee tilmaamaya jidka koodka. Warbixin ka bilaabmata safka ugu dambeeya ayaa qiimo aad u yar u leh qofka todobaad ka dib akhrin doona.
Haddii mishiinku hore u dib u bilaabmay, buffer-ka kernel-ka bilowgii hore ayaa badanaa wali ku jira joornaalka, haddii kaydka joogtada ah uu markaas shaqaynayay. Ka akhri faylka la kaydiyay halkii aad dib u abuuri lahayd culayska shaqada, sababtoo ah soo saaristii labaad waxay tirtiri kartaa waxa aad u baahan tahay. Meelaha mishiinku awoodin inuu joornaal ku hayo inta u dhaxaysa dib u bilaabista, konsolka taxanaha ah ama netconsole ayaa ah habka keliya ee ciladdu waligeed muuqan karto.
Go'aami build-ka ka hor intaadan akhrin calaamad kasta
Magacyada hawlaha iyo offsets waxay macne leeyihiin oo kaliya marka la eego faylka binary-ga soo saaray, sidaas darteed qor string-ga sii deynta kernel-ka iyo aqoonsiga build-ka qaybinta wada. Fayl calaamado ka yimid build kale wuxuu si kalsooni buuxda u tilmaamayaa safka qaldan, taas oo ka xun inaad calaamad haba yeelato. Hayso nooca xirmada kernel-ka, ma aha oo kaliya lambarka upstream, sababtoo ah qaybintu wax badan ayay dib u celisaa.
Modules-ka ka baxsan geedka waxay mudan yihiin saf u gaar ah diiwaanka, sababtoo ah kernel taint leh wuxuu xaddidaa waxa ilaaliyuhu xaq u leeyahay inuu soo gabagabeeyo. Akhri qiimaha taint halkii aad ka malayn lahayd liiska modules-ka.
Taint aan eber ahayn ma aha eedayn mana ka dhigto warbixinta mid aan qiimo lahayn. Waxay u sheegtaa akhristaha qaybaha la rakibay markii ciladdu dhacday, calamadaha qaarna waxay keenaan in warbixinta lagu hoosaysiiyo mudnaanta siyaasad ahaan halkii la qiimayn lahaa. Qor qiimaha, magacyada modules-ka iyo in isla qalabka iyo culayska shaqadu waligood kernel ku shaqeeyeen iyaga la'aan. Isbarbardhigga ugu dambeeya ayaa kala sooca dib u noqosho cusub iyo khalad soo jireen ah.
Kala sooc kicinta iyo cilladda
Bilaabista tunnel-ka badanaa waxay isticmaashaa jid hore u jiray: darawalka shabakadda, anshaxa safka, sifo offload ama xaalad tamar. Kicintu waxay sharraxdaa goorta ciladdu muuqato, ma aha koodka khaldan, iyo u qaadashada kicinta sabab ahaan waxay horseedaa isbeddelo habayn oo taxane ah oo aan waxba hagaajin.
Sawirkii hore ee shaqeeyay waa caddayn, ma aha caddayn buuxda. Markaad isbarbardhigayso beddel hal qayb boot kasta, natiijooyinkana ku hayso meel ka baxda mishiinka.
Hubi waxa ilaaliyuhu dhab ahaan isticmaali karo
Akhri warbixinta sidii qof qalaad u akhrin lahaa ka hor intaadan dirin. Haddii habaynta, taxanaha saxda ah iyo aqoonsiga build-ka ay jiraan, oo aqoonsiga la tirtiray, warbixintu waa mid la isticmaali karo. Haddii ay tahay sawir raad stack ah, waxay ku soo noqon doontaa codsi isla macluumaadkaas. Hagaha raadinta cilladaha kernel-ka wuxuu sharraxaa sida raad faa'iido leh iyo calaamado u dhigma ay u eg yihiin.
uname -r
cat /proc/sys/kernel/tainted
journalctl -k -b -1 --no-pager | sed -n '/BUG:/,/Call Trace/p'
dmesg -T | grep -A 40 'RIP:'
Amar kasta oo kor ku yaal wuxuu akhriyaa xaalad oo kaliya, labada horena waa in la shaqeeyo ka hor dib u bilaabista xigta haddii mishiinku wali ka jawaabi karo. Meelaha joornaalku joogto ahayn, labadaas oo kaliya ayaa waligood mar kale shaqayn doona.
Tirtir furayaasha, passwords-ka iyo taraafikada aan la xiriirin, laakiin hayso magacyada hawlaha iyo offsets-ka uu qof u baahan yahay inuu akhriyo raadka. U dir maadooyinka marinka warbixinta ee khuseeya qaybinta ama kernel-ka, ma aha paste dadweyne oo magaca host lagu daray. Kadib sug su'aal halkii aad ka ururin lahayd jabyo dheeraad ah, sababtoo ah cilad la helay oo ka soo horjeeda build u dhigma ayaa ah natiijada kaliya ee warbixinta horay u qaada. Haddii waxba soo noqon, beddelka waa soo saaris xakameysan oo ku saabsan qalab dheeraad ah, weligeed ma aha mishiinka dadka kale ku tiirsan yihiin.