ለ SELinux የጀማሪ መመሪያ

ለ SELinux የጀማሪ መመሪያ

ለትምህርቱ ተማሪዎች የተዘጋጀውን ጽሑፍ ትርጉም "ሊኑክስ ደህንነት"

ሴሊኑክስ ወይም ሴኪዩሪቲ የተሻሻለ ሊኑክስ ተንኮል-አዘል ጥቃቶችን ለመከላከል በዩኤስ ብሄራዊ ደህንነት ኤጀንሲ (NSA) የተገነባ የተሻሻለ የመዳረሻ መቆጣጠሪያ ዘዴ ነው። የግዳጅ (ወይም የግዴታ) የመዳረሻ መቆጣጠሪያ ሞዴል (የእንግሊዘኛ የግዴታ መቆጣጠሪያ፣ ማክ) አሁን ባለው የግዴታ (ወይም መራጭ) ሞዴል (የእንግሊዘኛ ዲክሪሽናል መዳረሻ መቆጣጠሪያ፣ DAC)፣ ማለትም የማንበብ፣ የመጻፍ፣ የማስፈጸም ፍቃዶችን ይተገብራል።

SELinux ሶስት ሁነታዎች አሉት

  1. ማስፈጸም - በመመሪያ ደንቦች ላይ በመመስረት የመዳረሻ መከልከል.
  2. ፈቀደ - ፖሊሲውን የሚጥሱ ድርጊቶችን መዝገብ መያዝ፣ ይህም በአፈፃፀሙ ሁኔታ የተከለከለ ነው።
  3. ተሰናክሏል - የ SELinuxን ሙሉ በሙሉ ማሰናከል።

በነባሪ ቅንጅቶቹ ገብተዋል። /etc/selinux/config

የSELinux ሁነታዎችን በመቀየር ላይ

የአሁኑን ሁነታ ለማወቅ፣ ያሂዱ

$ getenforce

ሁነታውን ወደ ፍቃድ ለመቀየር የሚከተለውን ትዕዛዝ ያሂዱ

$ setenforce 0

ወይም፣ ሁነታን ከ ለመቀየር ፍቃደኛ ላይ ማስገደድ፣ አፈጻጸም

$ setenforce 1

SELinuxን ሙሉ በሙሉ ማሰናከል ከፈለጉ, ይህ በውቅረት ፋይል በኩል ብቻ ሊከናወን ይችላል

$ vi /etc/selinux/config

ለማሰናከል የ SELINUX ግቤትን በሚከተለው መልኩ ይለውጡ።

SELINUX=disabled

SELinuxን በማዋቀር ላይ

እያንዳንዱ ፋይል እና ሂደት በSELinux አውድ ምልክት ተደርጎበታል፣ እሱም እንደ ተጠቃሚ፣ ሚና፣ አይነት፣ ወዘተ ያሉ ተጨማሪ መረጃዎችን ይዟል። SELinuxን ሲያነቁ ይህ የመጀመሪያ ጊዜዎ ከሆነ በመጀመሪያ አውድ እና መለያዎችን ማዋቀር ያስፈልግዎታል። መለያዎችን እና አውድ የመመደብ ሂደት መለያ መስጠት በመባል ይታወቃል። ምልክት ማድረግ ለመጀመር በማዋቀሪያው ፋይል ውስጥ ሁነታውን ወደሚለውጥ እንለውጣለን ፍቃደኛ.

$ vi /etc/selinux/config
SELINUX=permissive

ሁነታውን ካቀናበሩ በኋላ ፍቃደኛ, በስሩ ውስጥ ባዶ የተደበቀ ፋይል ይፍጠሩ በስሙ autorelabel

$ touch /.autorelabel

እና ኮምፒተርውን እንደገና ያስጀምሩ

$ init 6

ማስታወሻ: ሁነታውን እንጠቀማለን ፍቃደኛ ሁነታውን ከተጠቀሙበት ጊዜ ጀምሮ ምልክት ለማድረግ ማስገደድ ዳግም በሚነሳበት ጊዜ ስርዓቱ እንዲበላሽ ሊያደርግ ይችላል።

ማውረዱ በአንዳንድ ፋይል ላይ ከተጣበቀ አይጨነቁ፣ ምልክት ማድረግ ትንሽ ጊዜ ይወስዳል። ምልክት ማድረጊያው እንደተጠናቀቀ እና ስርዓትዎ ከተነሳ, ወደ የማዋቀሪያው ፋይል ይሂዱ እና ሁነታውን ማዘጋጀት ይችላሉ ማስገደድእና ደግሞ አሂድ:

$ setenforce 1

አሁን SELinuxን በኮምፒውተርዎ ላይ በተሳካ ሁኔታ አንቅተዋል።

የምዝግብ ማስታወሻዎችን መከታተል

ምልክት በሚደረግበት ጊዜ ወይም ስርዓቱ እየሰራ ሳለ አንዳንድ ስህተቶች አጋጥመውዎት ሊሆን ይችላል። የእርስዎ SELinux በትክክል እየሰራ መሆኑን እና ወደ የትኛውም ወደብ፣ አፕሊኬሽን፣ ወዘተ መዳረሻን ካልከለከለው ምዝግብ ማስታወሻዎቹን መመልከት ያስፈልግዎታል። የ SELinux ምዝግብ ማስታወሻ በ ውስጥ ይገኛል። /var/log/audit/audit.log, ነገር ግን ስህተቶችን ለማግኘት ሙሉውን ማንበብ አያስፈልግዎትም. ስህተቶችን ለማግኘት የኦዲት2why መገልገያን መጠቀም ይችላሉ። የሚከተለውን ትዕዛዝ ያሂዱ:

$ audit2why < /var/log/audit/audit.log

በውጤቱም, የስህተቶች ዝርዝር ይደርስዎታል. በምዝግብ ማስታወሻው ውስጥ ምንም ስህተቶች ከሌሉ ምንም መልዕክቶች አይታዩም.

SELinux ፖሊሲን በማዋቀር ላይ

የSELinux ፖሊሲ የSELinux ደህንነት ዘዴን የሚቆጣጠሩ ህጎች ስብስብ ነው። ፖሊሲ ለአንድ የተወሰነ አካባቢ ደንቦችን ይገልፃል። አሁን የተከለከሉ አገልግሎቶችን ለማግኘት ፖሊሲዎችን እንዴት ማዋቀር እንደምንችል እንማራለን።

1. ምክንያታዊ እሴቶች (መቀየሪያዎች)

ስዊችስ (ቡሊያንስ) አዲስ ፖሊሲዎችን መፍጠር ሳያስፈልግዎ የመመሪያውን ክፍሎች በሂደት እንዲቀይሩ ያስችሉዎታል። የSELinux ፖሊሲዎችን ዳግም ሳይነሱ ወይም ሳያጠናቅቁ ለውጦችን እንዲያደርጉ ያስችሉዎታል።

ለምሳሌ:
የተጠቃሚውን የቤት ማውጫ በኤፍቲፒ ማንበብ/መፃፍ ማጋራት እንፈልጋለን እንበል፣ እና አስቀድመን አጋርተናል፣ ነገር ግን እሱን ለማግኘት ስንሞክር ምንም አናይም። ይህ የሆነበት ምክንያት የSELinux ፖሊሲ የኤፍቲፒ አገልጋይ የተጠቃሚውን የቤት ማውጫ እንዳያነብ እና እንዳይፃፍ ስለሚከለክለው ነው። የኤፍቲፒ አገልጋይ የቤት ማውጫዎችን ማግኘት እንዲችል ፖሊሲውን መቀየር አለብን። በማድረግ ለዚህ ማንኛቸውም መቀየሪያዎች ካሉ እንይ

$ semanage boolean -l

ይህ ትእዛዝ የሚገኙትን ማብሪያና ማጥፊያዎች አሁን ባሉበት ሁኔታ (ማብራት ወይም ማጥፋት) እና መግለጫ ይዘረዝራል። የftp-ብቻ ውጤቶችን ለማግኘት grep በማከል ፍለጋዎን ማጥራት ይችላሉ።

$ semanage boolean -l | grep ftp

እና የሚከተለውን ያገኛሉ

ftp_home_dir        -> off       Allow ftp to read & write file in user home directory

ይህ ማብሪያ / ማጥፊያ ተሰናክሏል ፣ ስለዚህ እሱን እናነቃዋለን setsebool $ setsebool ftp_home_dir on

አሁን የእኛ ftp daemon የተጠቃሚውን የቤት ማውጫ መድረስ ይችላል።
ማሳሰቢያ፡ እንዲሁም ያለ መግለጫ በማዘጋጀት የሚገኙ ማብሪያና ማጥፊያዎችን ዝርዝር ማግኘት ይችላሉ። getsebool -a

2. መለያዎች እና አውድ

ይህ የ SELinux ፖሊሲን ለመተግበር በጣም የተለመደው መንገድ ነው. እያንዳንዱ ፋይል፣ አቃፊ፣ ሂደት እና ወደብ በSELinux አውድ ምልክት ተደርጎበታል።

  • ለፋይሎች እና አቃፊዎች፣ መለያዎች በፋይል ስርዓቱ ላይ እንደ የተራዘሙ ባህሪያት ይቀመጣሉ እና በሚከተለው ትእዛዝ ሊታዩ ይችላሉ።
    $ ls -Z /etc/httpd
  • ለሂደቶች እና ወደቦች፣ መለያው የሚተዳደረው በከርነል ነው፣ እና እነዚህን መለያዎች በሚከተለው መልኩ ማየት ይችላሉ።

ሂደት

$ ps –auxZ | grep httpd

ወደብ

$ netstat -anpZ | grep httpd

ለምሳሌ:
አሁን መለያዎችን እና አውድ የበለጠ ለመረዳት አንድ ምሳሌ እንመልከት። ከማውጫ ይልቅ የድር አገልጋይ አለን እንበል /var/www/html/ использует /home/dan/html/. SELinux ይህ የመመሪያ ጥሰት እንደሆነ ይቆጥረዋል እና የእርስዎን ድረ-ገጾች ማየት አይችሉም። ይህ የሆነበት ምክንያት ከኤችቲኤምኤል ፋይሎች ጋር የተገናኘውን የደህንነት አውድ ስላላዘጋጀን ነው። ነባሪውን የደህንነት አውድ ለማየት የሚከተለውን ትዕዛዝ ተጠቀም፡

$ ls –lz /var/www/html
 -rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

እዚህ ደርሰናል። httpd_sys_content_t እንደ ኤችቲኤምኤል ፋይሎች አውድ። ይህንን የደህንነት አውድ ለአሁኑ ማውጫችን ማዘጋጀት አለብን፣ እሱም በአሁኑ ጊዜ የሚከተለው አውድ አለው፡

-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/

የፋይል ወይም ማውጫውን የደህንነት አውድ ለመፈተሽ አማራጭ ትእዛዝ፡-

$ semanage fcontext -l | grep '/var/www'

ትክክለኛውን የደህንነት አውድ ካገኘን በኋላ አውዱን ለመቀየር ሴማኔጅን እንጠቀማለን። የ /home/dan/html አውድ ለመቀየር የሚከተሉትን ትዕዛዞችን ያሂዱ፡-

$ semanage fcontext -a -t httpd_sys_content_t ‘/home/dan/html(/.*)?’
$ semanage fcontext -l | grep ‘/home/dan/html’
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/html

ሴሚናጅን በመጠቀም አውድ ከተቀየረ በኋላ፣የመልሶ ማግኛ ኮን ትዕዛዝ ለፋይሎች እና ማውጫዎች ነባሪ አውድ ይጭናል። የእኛ የድር አገልጋይ አሁን ፋይሎችን ከአቃፊው ማንበብ ይችላል። /home/dan/htmlምክንያቱም የዚህ አቃፊ የደህንነት አውድ ወደ ተቀይሯል። httpd_sys_content_t.

3. የአካባቢ ፖሊሲዎችን ይፍጠሩ

ከላይ ያሉት ዘዴዎች ለእርስዎ የማይጠቅሙ እና ስህተቶች (avc/denial) በ audit.log ውስጥ የሚያገኙበት ሁኔታዎች ሊኖሩ ይችላሉ። ይህ በሚሆንበት ጊዜ የአካባቢ ፖሊሲ መፍጠር ያስፈልግዎታል። ከላይ እንደተገለጸው ኦዲት2whyን በመጠቀም ሁሉንም ስህተቶች ማግኘት ይችላሉ።

ስህተቶችን ለመፍታት የአካባቢ ፖሊሲ መፍጠር ይችላሉ። ለምሳሌ ከ httpd (apache) ወይም smbd (samba) ጋር የተያያዘ ስህተት አጋጥሞናል፣ ስህተቶቹን ወስደን ፖሊሲ እንፈጥራለን፡

apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy

ይህ ነው http_policy и smb_policy እኛ የፈጠርናቸው የአካባቢ ፖሊሲዎች ስሞች ናቸው። አሁን እነዚህን የተፈጠሩ የአካባቢ ፖሊሲዎች አሁን ባለው የSELinux ፖሊሲ ውስጥ መጫን አለብን። ይህ እንደሚከተለው ሊከናወን ይችላል.

$ semodule –I http_policy.pp
$ semodule –I smb_policy.pp

የአካባቢያችን ፖሊሲዎች ወርደዋል እና ከአሁን በኋላ ምንም avc ወይም denail በ audit.log መቀበል የለብንም ።

ይህ SELinuxን እንድትረዱ ለማገዝ ያደረኩት ሙከራ ነበር። ይህን ጽሑፍ ካነበቡ በኋላ በ SELinux የበለጠ ምቾት እንደሚሰማዎት ተስፋ አደርጋለሁ.

ምንጭ: hab.com

አስተያየት ያክሉ