የፋይል ፈቃዶች በ ውስጥ Linux

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

የፋይል ፈቃዶች በ ውስጥ Linux

የፋይል ፈቃዶች ለ 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 ማግኘት ይችላሉ። ዌቢናር፣ ይህም በጥር 24 ይካሄዳል።

ምንጭ: hab.com

በDDoS ጥበቃ፣ VPS VDS አገልጋዮች ለጣቢያዎች አስተማማኝ ማስተናገጃ ይግዙ 🔥 አስተማማኝ የድር ጣቢያ ማስተናገጃ በዲዶኤስ ጥበቃ፣ በቪፒኤስ ቪዲኤስ አገልጋዮች ይግዙ | ProHoster