ሰላም ለሁላችሁም። ወደ ሥራ እየተመለስን ሲሆን በጥር ወር ብዙ አስደሳች የምረቃ ፕሮግራሞችን አዘጋጅተናል። ከሌሎች ነገሮች በተጨማሪ፣ በጣም የምንወደውን ኮርሳችንን ለአዲሱ ቡድን መመዝገብን አስታውቀናል። ዝግጅቱን በጉጉት ስንጠባበቅ፣ በተለምዶ ጠቃሚ የሆኑ ቁሳቁሶችን ትርጉም እናካፍላለን።

የፋይል ፈቃዶች ለ SUID ተፈጻሚዎች ደህንነቱ የተጠበቀ አማራጭ ይሰጣሉ፣ ነገር ግን መጀመሪያ ላይ ትንሽ ግራ የሚያጋባ ሊመስል ይችላል።
ሁላችንም ሁለትዮሽ ፋይሎችን እናውቃለን ናቸው እንደ እድል ሆኖ፣ ማመልከቻዎ የተወሰኑ የተወሰኑ መብቶችን የሚፈልግ ከሆነ፣ የበለጠ ቀልጣፋ መንገድ አለ .
ከላይ ያለውን ጽሑፍ በዝርዝር ከማንበብ ለመቆጠብ ከፈለጉ የተወሰነ ጊዜ እቆጥብልዎታለሁ፡ በመሠረቱ፣ የፋይል ፈቃዶች እንደ ስር የሚሰሩ ሂደቶችን ይፈቅዳሉ፣ ስለዚህ ነገሮችን የማድረግ መብት አላቸው፣ የተወሰኑ ውስን ችሎታዎችን እንዲይዙ ያስችላቸዋል። መብቶችን ሲያጡ እና እንደ ያልተፈቀደ ተጠቃሚ ሲሰሩ። ይህ ማለት አንድ አጥቂ የቋት ፍሰትን ወይም ሌላ ብዝበዛን በመጠቀም ሂደቱን ለማበላሸት ከቻለ፣ ሂደቱ ከሚያስፈልገው ዝቅተኛ መብቶች በላይ ምንም ነገር ማግኘት አይችልም ማለት ነው።
ፈቃዶች በተለምዶ እንደ ስርወ ሆነው ለሚሰሩ አገልግሎቶች በጣም ጥሩ ናቸው፣ ግን ስለ ትዕዛዝ መስመር መገልገያዎችስ? እንደ እድል ሆኖ፣ ይህ የሚደገፈው ትክክለኛዎቹ መገልገያዎች ከተጫኑ ነው። የሚጠቀሙ ከሆነ Ubuntuለምሳሌ፣ ፓኬጅ ያስፈልግዎታል libcap2-binእንዲሁም ጥንታዊ ያልሆነ የከርነል (ከስሪት ጀምሮ) ማስኬድ ያስፈልግዎታል። 2.6.24).
እነዚህ ተግባራት የSUID ቢትን ከማቀናበር ጋር ተመሳሳይ የሆኑ ሊተገበሩ የሚችሉ ፋይሎችን ፈቃዶችን እንዲያገናኙ ያስችሉዎታል፣ ነገር ግን ለተወሰኑ የፈቃዶች ስብስብ ብቻ። setcap ከፋይል ፈቃዶችን ለመጨመር እና ለማስወገድ የሚያገለግል።
የመጀመሪያው እርምጃ የሚፈልጓቸውን ፈቃዶች መምረጥ ነው። ለዚህ ጽሑፍ፣ የኔትወርክ ምርመራ መሣሪያ የሚባል እንዳለ እገምታለሁ tracewalkመጠቀም መቻል አለበት፣ ይህ ብዙውን ጊዜ መተግበሪያው እንደ root እንዲሄድ ይጠይቃል፣ ነገር ግን ሲመለከቱ ፈቃድ ብቻ እንደሚያስፈልግ ታወቀ CAP_NET_RAW.
ሁለትዮሽ ባለበት ማውጫ ውስጥ እንዳሉ በማሰብ tracewalk, ይህንን ፈቃድ እንደሚከተለው ማከል ይችላሉ፡
sudo setcap cap_net_raw=eip tracewalk ለአሁኑ ድህረ ቅጥያውን ችላ ይበሉ =eip ለፈቃዶች፣ ስለዚህ ጉዳይ በጥቂት ሰከንዶች ውስጥ እናገራለሁ። የፈቃዱ ስም በትንሽ ፊደል መሆኑን ልብ ይበሉ። አሁን ፈቃዶቹን በትክክል ካዋቀሩት በሚከተለው ማረጋገጥ ይችላሉ፦
setcap -v cap_new_raw=eip tracewalkወይም ለተሰጠ ተፈፃሚነት የተዘጋጁትን ሁሉንም ፈቃዶች መዘርዘር ይችላሉ፡
getcap tracewalk
ለማጣቀሻ፣ የሚከተሉትን በመጠቀም ከሚተገበር ፋይል ላይ ያሉትን ሁሉንም ፈቃዶች ማስወገድ ይችላሉ፦
setcap -r tracewalkበዚህ ጊዜ፣ እንደ ያልተፈቀደ ተጠቃሚ ሊተገበር የሚችል መሆን አለብዎት፣ እና ጥሬ ሶኬቶችን ማስተናገድ የሚችል መሆን አለበት፣ ነገር ግን ከስር ተጠቃሚው ጋር ምንም አይነት ሌላ መብት ሊኖረው አይገባም።
ታዲያ ይህ እንግዳ ቅጥያ ምን ማለት ነው? =eipይህ የፈቃዶችን ባህሪ ትንሽ መረዳትን ይጠይቃል። እያንዳንዱ ሂደት ሶስት የፈቃዶች ስብስቦች አሉት፡ ውጤታማ፣ ሊተላለፍ የሚችል እና የተፈቀደ:
- ውጤታማ ፈቃዶች አንድ ሂደት በትክክል ምን ማድረግ እንደሚችል የሚወስኑ ናቸው። ለምሳሌ፣ ጥሬ ሶኬቶችን መቋቋም አይችልም
CAP_NET_RAWውጤታማ በሆነው ስብስብ ውስጥ የለም። - የተፈቀደ ፈቃዶች አንድ ሂደት ተገቢውን ጥሪ ሲጠይቅ ሊኖረው የሚፈቀድላቸው ናቸው። የተወሰነውን ፈቃድ ለመጠየቅ በተለየ ሁኔታ ካልተጻፈ በስተቀር ሂደቱ ምንም ነገር እንዲያደርግ አይፈቅዱም። ይህ ሂደቶች በተለይ አስፈላጊ ፈቃዶችን በተጨባጭ በሚያስፈልጉበት ጊዜ ብቻ በውጤታማው ስብስብ ላይ ለመጨመር እንዲጻፉ ያስችላቸዋል።
- የሚወረስ ፈቃዶች በተወለደው ልጅ ሂደት ውስጥ በፈቃዶች ስብስብ ውስጥ ሊወርሱ የሚችሉ ናቸው። በቀዶ ጥገናው ወቅት
fork()ወይምclone()የሕፃኑ ሂደት ሁልጊዜ የወላጅ ሂደቱን ፈቃዶች ቅጂ ይሰጠዋል፣ ምክንያቱም በዚያን ጊዜ ተመሳሳይ ሊተገበር የሚችል ነገር እያሄደ ስለሆነ። የሚወረሰው ስብስብ ጥቅም ላይ የሚውለውexec()(ወይም ተመጣጣኝ) የሚተገበር ፋይልን በሌላ ለመተካት ይጠራል። በዚህ ጊዜ፣ የሂደቱ ሊደረስበት የሚችል ስብስብ ለአዲሱ ሂደት ጥቅም ላይ የሚውለውን ሊደረስበት የሚችል ስብስብ ለማግኘት በውርስ ስብስብ ይሸፈናል።
ስለዚህ፣ ጥቅሙ setcap ለእነዚህ ሶስት ስብስቦች ለአንድ ተፈፃሚ ፋይል ለየብቻ ፈቃዶችን እንድናክል ያስችለናል። የቡድን እሴቱ ለፋይል ፈቃዶች በትንሹ በተለየ መንገድ እንደሚተረጎም ልብ ይበሉ፡
- ይገኛል የፋይል ፈቃዶች የሚባሉት ለተግባራዊ ፋይል ሁልጊዜ የሚገኙ ናቸው፣ ምንም እንኳን የጠራው የወላጅ ሂደት ባይኖረውም። እነዚህ ቀደም ሲል "የተተገበሩ" ፈቃዶች ይባሉ ነበር።
- የተወረሰ የፋይል ፈቃዶች ፈቃዶችን ከጥሪ ሂደቱ ስብስብ ለማስወገድ ጥቅም ላይ ሊውል የሚችል ተጨማሪ ጭንብል ይገልጻሉ። ከጥሪ ሂደቱ ከሚወረስ ስብስብ በተጨማሪ ይተገበራሉ፣ ስለዚህ ፈቃድ የሚወረሰው በሁለቱም ስብስቦች ውስጥ ካለ ብቻ ነው።
- ውጤታማ የፋይል ፈቃዶች በእውነቱ አንድ ነጠላ ቢት ብቻ ናቸው፣ ስብስብ አይደሉም፣ እና ከተዋቀረ፣ የሚገኘው ስብስብ በሙሉ ወደ አዲሱ ሂደት ውጤታማ ስብስብ ይገለበጣል ማለት ነው። ይህ በተለይ እነሱን እንዲጠይቁ ያልተጻፉ ሂደቶች ላይ ፈቃዶችን ለመጨመር ሊያገለግል ይችላል። አንድ ቢት ስለሆነ፣ ለማንኛውም ፈቃድ ካዋቀሩት፣ ለሁሉም ፈቃዶች መዋቀር አለበት። እንደ ውርስ ቢት አድርገው ሊያስቡት ይችላሉ፣ ምክንያቱም ፈቃዶችን የማይደግፉ መተግበሪያዎች እንዲጠቀሙባቸው ለማስቻል ጥቅም ላይ ይውላል።
ፈቃዶችን በሚገልጹበት ጊዜ በ setcap ሶስት ፊደላት e, i и p ጋር ይዛመዳል ውጤታማ፣ ውርስ የሚገኝ እና ተደራሽ የሆነ በቅደም ተከተል ያዘጋጃል። ስለዚህ፣ ቀደም ሲል የተጠቀሰው ዝርዝር መግለጫ፡
sudo setcap cap_net_raw=eip tracewalk … ውሳኔውን ያመለክታል CAP_NET_RAW ወደ ተደራሽ እና ሊወረሱ ወደሚችሉ ስብስቦች መታከል አለበት፣ እና ውጤታማው ቢትም መዋቀር አለበት። ይህ በፋይሉ ውስጥ ያሉትን ቀደም ሲል የተቀመጡ ፈቃዶችን ይተካል። በአንድ ጊዜ ብዙ ፈቃዶችን ለማዘጋጀት፣ በኮማ የተለዩ ዝርዝር ይጠቀሙ፦
sudo setcap cap_net_admin,cap_net_raw=eip tracewalkይህንን ሁሉ በዝርዝር ያብራራል፣ ነገር ግን ይህ ጽሑፍ ነገሮችን ትንሽ ግልጽ እንዳደረገ ተስፋ እናደርጋለን። ጥቂት ማስጠንቀቂያዎችና ማስጠንቀቂያዎች ብቻ ቀርተዋል።
በመጀመሪያ፣ የፋይል ችሎታዎች ከሲምሊንኮች ጋር አይሰሩም - እነሱን በሁለትዮሽ ራሱ (ማለትም የሲምሊንክ ኢላማ) ላይ መተግበር አለብዎት።
በሁለተኛ ደረጃ፣ ከተተረጎሙ ስክሪፕቶች ጋር አይሰሩም። ለምሳሌ፣ ፈቃዶችን ሊመድቡለት የሚፈልጉት የፓይዘን ስክሪፕት ካለዎት፣ ለፓይዘን ተርጓሚው ራሱ መመደብ አለብዎት። ይህ በግልጽ የደህንነት ችግር ሊሆን የሚችል ነው፣ ምክንያቱም ከዚያ አስተርጓሚ ጋር የሚከናወኑ ሁሉም ስክሪፕቶች የተገለጸውን ፈቃድ ይኖራቸዋል፣ ምንም እንኳን ወደ SUID ከማቀናበር በጣም የተሻለ ቢሆንም። በጣም የተለመደው መፍትሔ በC ወይም ተመሳሳይ ውስጥ አስፈላጊውን ስራዎች ማከናወን እና ከስክሪፕቱ ሊደውልለት የሚችል የተለየ ኤክስፐብልኪውተር መጻፍ ይመስላል። ይህ ሁለትዮሽ ፋይል የሚጠቀመው ዊሬሻርክ ከሚጠቀምበት አቀራረብ ጋር ተመሳሳይ ነው። /usr/bin/dumpcap ልዩ ተግባራትን ለማከናወን፡
$ getcap /usr/bin/dumpcap
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip ሶስተኛ፣ የአካባቢ ተለዋዋጭ የሚጠቀሙ ከሆነ የፋይል ፈቃዶች ይሰናከላሉ LD_LIBRARY_PATH በግልጽ የደህንነት ምክንያቶች(1)ተመሳሳይ ነገር ተፈጻሚ ይሆናል LD_PRELOADእኔ እስከማውቀው ድረስ።
1. አንድ አጥቂ ከመደበኛ ቤተ-መጻሕፍት ውስጥ አንዱን ሊተካ እና ሊጠቀምበት ስለሚችል LD_LIBRARY_PATHቤተ መፃህፍቱ ከስርዓቱ ይልቅ እንዲጠራ ለማስገደድ እና በዚህም የራሱ የዘፈቀደ ኮድ ከጥሪ አፕሊኬሽኑ ጋር ተመሳሳይ መብቶችን በመጠቀም እንዲተገበር።
ለጊዜው ያ ብቻ ነው። ስለ ኮርስ ፕሮግራሙ የበለጠ በ www.io.gov.uk/index.php ማግኘት ይችላሉ።
ምንጭ: hab.com
