በ FreeBSD ውስጥ የግዴታ መብቶች ስርጭት ሞዴል

መግቢያ

ተጨማሪ የአገልጋይ ደህንነት ደረጃ ለመስጠት፣ መጠቀም ይችላሉ። አስገዳጅ ሞዴል የመዳረሻ ስርጭት. ይህ ህትመት apache እና php በትክክል እንዲሰሩ መዳረሻ የሚያስፈልጋቸው አካላት ብቻ በሚደርሱበት እስር ቤት ውስጥ apacheን እንዴት ማሄድ እንደሚችሉ ይገልፃል። ይህንን መርህ በመጠቀም Apache ብቻ ሳይሆን ሌላ ማንኛውንም ቁልል መገደብ ይችላሉ።

ዝግጅት

ይህ ዘዴ ለ ufs ፋይል ስርዓት ብቻ ተስማሚ ነው, በዚህ ምሳሌ, zfs በዋናው ስርዓት ውስጥ እና ufs በእስር ቤት ውስጥ ጥቅም ላይ ይውላሉ. የመጀመሪያው እርምጃ ከርነል እንደገና መገንባት ነው, FreeBSD ሲጭኑ, የምንጭ ኮዱን ይጫኑ.
ስርዓቱ ከተጫነ በኋላ ፋይሉን ያርትዑ

/usr/src/sys/amd64/conf/GENERIC

ወደዚህ ፋይል አንድ መስመር ብቻ ማከል ያስፈልግዎታል፡-

options     MAC_MLS

mls/high መለያ በ mls/ዝቅተኛ መለያ ላይ የበላይ ቦታ ይኖረዋል፣በሚልስ/ዝቅተኛ መለያ የሚጀመሩ መተግበሪያዎች mls/high መለያ ያላቸውን ፋይሎች መድረስ አይችሉም። በ FreeBSD ስርዓት ውስጥ ስላሉት ሁሉም መለያዎች ተጨማሪ ዝርዝሮች በዚህ ውስጥ ይገኛሉ አመራር.
በመቀጠል ወደ / usr/src ማውጫ ይሂዱ፡-

cd /usr/src

ኮርነሉን መገንባት ለመጀመር ያሂዱ (በ j ቁልፍ ውስጥ በስርዓቱ ውስጥ ያሉትን የኮርሎች ብዛት ይጥቀሱ)

make -j 4 buildkernel KERNCONF=GENERIC

ኮርነሉ ከተጠናቀረ በኋላ መጫን አለበት፡-

make installkernel KERNCONF=GENERIC

ከርነሉን ከጫኑ በኋላ ስርዓቱን እንደገና ለማስጀመር አይጣደፉ ፣ ምክንያቱም ቀደም ሲል አዋቅረው ተጠቃሚዎችን ወደ የመግቢያ ክፍል ማስተላለፍ አስፈላጊ ስለሆነ። /etc/login.conf ፋይል ያርትዑ፣ በዚህ ፋይል ውስጥ ነባሪውን የመግቢያ ክፍል ማርትዕ ያስፈልግዎታል፣ ወደ ቅጹ ያቅርቡ፡

default:
        :passwd_format=sha512:
        :copyright=/etc/COPYRIGHT:
        :welcome=/etc/motd:
        :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:
        :path=/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin ~/bin:
        :nologin=/var/run/nologin:
        :cputime=unlimited:
        :datasize=unlimited:
        :stacksize=unlimited:
        :memorylocked=64K:
        :memoryuse=unlimited:
        :filesize=unlimited:
        :coredumpsize=unlimited:
        :openfiles=unlimited:
        :maxproc=unlimited:
        :sbsize=unlimited:
        :vmemoryuse=unlimited:
        :swapuse=unlimited:
        :pseudoterminals=unlimited:
        :kqueues=unlimited:
        :umtxp=unlimited:
        :priority=0:
        :ignoretime@:
        :umask=022:
        :label=mls/equal:

መስመሩ :label=mls/equal የዚህ ክፍል አባላት የሆኑ ተጠቃሚዎች በማንኛውም መለያ ምልክት የተደረገባቸውን ፋይሎች እንዲደርሱ ያስችላቸዋል (mls/low, mls/high)። ከእነዚህ ማጭበርበሮች በኋላ የውሂብ ጎታውን እንደገና መገንባት እና የስር ተጠቃሚውን (እንዲሁም የሚያስፈልጋቸውን) በዚህ የመግቢያ ክፍል ውስጥ ማስቀመጥ ያስፈልግዎታል:

cap_mkdb /etc/login.conf
pw usermod root -L default

መመሪያው በፋይሎች ላይ ብቻ እንዲተገበር የ/etc/mac.conf ፋይሉን አንድ መስመር ብቻ በመተው ማስተካከል ያስፈልግዎታል፡-

default_labels file ?mls

እንዲሁም የ mac_mls.ko ሞጁሉን በራስ-አሂድ ላይ ማከል ያስፈልግዎታል፡-

echo 'mac_mls_load="YES"' >> /boot/loader.conf

ከዚህ በኋላ ስርዓቱን ደህንነቱ በተጠበቀ ሁኔታ እንደገና ማስጀመር ይችላሉ. እንዴት መፍጠር እንደሚቻል እስር ቤት በአንዱ ጽሑፎቼ ውስጥ ሊያነቡት ይችላሉ። ግን እስር ቤት ከመፍጠርዎ በፊት ሃርድ ድራይቭን ማከል እና በላዩ ላይ የፋይል ስርዓት መፍጠር እና በላዩ ላይ ብዙ መለያዎችን ማንቃት ያስፈልግዎታል ፣ የ ufs2 ፋይል ስርዓት በ 64kb ክላስተር መጠን ይፍጠሩ።

newfs -O 2 -b 64kb /dev/ada1
tunefs -l enable /dev/ada1

የፋይል ስርዓቱን ከፈጠሩ እና ብዙ መለያዎችን ካከሉ ​​በኋላ ሃርድ ድራይቭን ወደ /etc/fstab ማከል አለብዎት ፣ መስመሩን ወደዚህ ፋይል ያክሉ።

/dev/ada1               /jail  ufs     rw              0       1

በ Mountpoint ውስጥ ሃርድ ድራይቭን የሚጭኑበትን ማውጫ ይግለጹ ፣ በፓስ ውስጥ 1 ን መግለጽዎን ያረጋግጡ (ይህ ሃርድ ድራይቭ በየትኛው ቅደም ተከተል ነው የሚመረመረው) - ይህ አስፈላጊ ነው ፣ የ ufs ፋይል ስርዓቱ ለድንገተኛ የኃይል መቆራረጥ ስሜት ቀስቃሽ ስለሆነ ይህ አስፈላጊ ነው ። . ከነዚህ እርምጃዎች በኋላ ዲስኩን ይጫኑ:

mount /dev/ada1 /jail

በዚህ ማውጫ ውስጥ እስር ቤትን ጫን። እስር ቤቱ ከተሰራ በኋላ በዋና ስርዓቱ ውስጥ በተጠቃሚዎች እና በፋይሎች /etc/login.conf, /etc/mac.conf ውስጥ እንደነበረው በእሱ ውስጥ ተመሳሳይ ማጭበርበሮችን ማድረግ ያስፈልግዎታል.

በደንብ ማድረግ

አስፈላጊዎቹን መለያዎች ከመጫንዎ በፊት ሁሉንም አስፈላጊ ፓኬጆችን እንዲጭኑ እመክራለሁ ፣ በእኔ ሁኔታ ፣ መለያዎቹ እነዚህን ጥቅሎች ከግምት ውስጥ በማስገባት ይዘጋጃሉ ።

mod_php73-7.3.4_1              PHP Scripting Language
php73-7.3.4_1                  PHP Scripting Language
php73-ctype-7.3.4_1            The ctype shared extension for php
php73-curl-7.3.4_1             The curl shared extension for php
php73-dom-7.3.4_1              The dom shared extension for php
php73-extensions-1.0           "meta-port" to install PHP extensions
php73-filter-7.3.4_1           The filter shared extension for php
php73-gd-7.3.4_1               The gd shared extension for php
php73-gettext-7.3.4_1          The gettext shared extension for php
php73-hash-7.3.4_1             The hash shared extension for php
php73-iconv-7.3.4_1            The iconv shared extension for php
php73-json-7.3.4_1             The json shared extension for php
php73-mysqli-7.3.4_1           The mysqli shared extension for php
php73-opcache-7.3.4_1          The opcache shared extension for php
php73-openssl-7.3.4_1          The openssl shared extension for php
php73-pdo-7.3.4_1              The pdo shared extension for php
php73-pdo_sqlite-7.3.4_1       The pdo_sqlite shared extension for php
php73-phar-7.3.4_1             The phar shared extension for php
php73-posix-7.3.4_1            The posix shared extension for php
php73-session-7.3.4_1          The session shared extension for php
php73-simplexml-7.3.4_1        The simplexml shared extension for php
php73-sqlite3-7.3.4_1          The sqlite3 shared extension for php
php73-tokenizer-7.3.4_1        The tokenizer shared extension for php
php73-xml-7.3.4_1              The xml shared extension for php
php73-xmlreader-7.3.4_1        The xmlreader shared extension for php
php73-xmlrpc-7.3.4_1           The xmlrpc shared extension for php
php73-xmlwriter-7.3.4_1        The xmlwriter shared extension for php
php73-xsl-7.3.4_1              The xsl shared extension for php
php73-zip-7.3.4_1              The zip shared extension for php
php73-zlib-7.3.4_1             The zlib shared extension for php
apache24-2.4.39 

በዚህ ምሳሌ ውስጥ የእነዚህን ፓኬጆች ጥገኝነት ግምት ውስጥ በማስገባት መለያዎች ይዘጋጃሉ። እርግጥ ነው, ቀላል ማድረግ ይችላሉ ለ / usr / local / lib አቃፊ እና በዚህ ማውጫ ውስጥ የሚገኙት ፋይሎች, mls / ዝቅተኛ መለያዎችን ያዘጋጁ እና ተከታይ የተጫኑ ጥቅሎች (ለምሳሌ, ለ php ተጨማሪ ቅጥያዎች) መድረስ ይችላሉ. በዚህ ማውጫ ውስጥ ያሉት ቤተ-መጻሕፍት ግን ለእኔ አስፈላጊ የሆኑትን ፋይሎች ብቻ መድረስ የተሻለ ይመስላል። እስርን አቁም እና በሁሉም ፋይሎች ላይ mls/high መለያዎችን አዘጋጅ፡-

setfmac -R mls/high /jail

ምልክቶችን ሲያቀናብሩ setfmac ሃርድ ሊንኮችን ካጋጠመው ሂደቱ ይቆማል፣በእኔ ምሳሌ በሚከተሉት ማውጫዎች ውስጥ ሃርድ ሊንኮችን ሰርዣለሁ፡

/var/db/etcupdate/current/
/var/db/etcupdate/current/etc
/var/db/etcupdate/current/usr/share/openssl/man/en.ISO8859-15
/var/db/etcupdate/current/usr/share/man/en.ISO8859-15
/var/db/etcupdate/current/usr/share/man/en.UTF-8
/var/db/etcupdate/current/usr/share/nls
/etc/ssl
/usr/local/etc
/usr/local/etc/fonts/conf.d
/usr/local/openssl

መለያዎቹ ከተዘጋጁ በኋላ, mls / ዝቅተኛ መለያዎችን ለ apache ማዘጋጀት ያስፈልግዎታል, መጀመሪያ ማድረግ ያለብዎት apache ለመጀመር ምን ፋይሎች እንደሚያስፈልጉ ማወቅ ነው.

ldd /usr/local/sbin/httpd

ይህንን ትእዛዝ ከፈጸሙ በኋላ ጥገኞች በስክሪኑ ላይ ይታያሉ ነገርግን አስፈላጊዎቹን መለያዎች በእነዚህ ፋይሎች ላይ ማዘጋጀት በቂ አይሆንም ምክንያቱም እነዚህ ፋይሎች የሚገኙባቸው ዳይሬክቶሬቶች mls/high መለያ ስላላቸው እነዚህ ማውጫዎች እንዲሁ መሰየም አለባቸው። mls / ዝቅተኛ. ሲጀመር apache እሱን ለማስኬድ አስፈላጊ የሆኑትን ፋይሎች ያወጣል እና ለ php እነዚህ ጥገኞች በ httpd-error.log ሎግ ውስጥ ይገኛሉ።

setfmac mls/low /
setfmac mls/low /usr/local/lib/libpcre.so.1
setfmac mls/low /usr/local/lib/libaprutil-1.so.0
setfmac mls/low /usr/local/lib/libdb-5.3.so.0
setfmac mls/low /usr/local/lib/libgdbm.so.6
setfmac mls/low /usr/local/lib/libexpat.so.1
setfmac mls/low /usr/local/lib/libapr-1.so.0
setfmac mls/low /lib/libcrypt.so.5
setfmac mls/low /lib/libthr.so.3
setfmac mls/low /lib/libc.so.7
setfmac mls/low /usr/local/lib/libintl.so.8
setfmac mls/low /var
setfmac mls/low /var/run
setfmac mls/low /var/log
setfmac mls/low /var/log/httpd-access.log
setfmac mls/low /var/log/httpd-error.log
setfmac mls/low /var/run/httpd.pid
setfmac mls/low /lib
setfmac mls/low /lib/libcrypt.so.5
setfmac mls/low /usr/local/lib/db5/libdb-5.3.so.0
setfmac mls/low /usr/local/lib/db5/libdb-5.3.so.0.0.0
setfmac mls/low /usr/local/lib/db5
setfmac mls/low /usr/local/lib
setfmac mls/low /libexec
setfmac mls/low /libexec/ld-elf.so.1
setfmac  mls/low /dev
setfmac  mls/low /dev/random
setfmac  mls/low /usr/local/libexec
setfmac  mls/low /usr/local/libexec/apache24
setfmac  mls/low /usr/local/libexec/apache24/*
setfmac  mls/low /etc/pwd.db
setfmac  mls/low /etc/passwd
setfmac  mls/low /etc/group
setfmac  mls/low /etc/
setfmac  mls/low /usr/local/etc
setfmac -R mls/low /usr/local/etc/apache24
setfmac mls/low /usr
setfmac mls/low /usr/local
setfmac mls/low /usr/local/sbin
setfmac mls/low /usr/local/sbin/*
setfmac -R mls/low /usr/local/etc/rc.d/
setfmac mls/low /usr/local/sbin/htcacheclean
setfmac mls/low /var/log/httpd-access.log
setfmac mls/low /var/log/httpd-error.log
setfmac -R mls/low /usr/local/www
setfmac mls/low /usr/lib
setfmac mls/low /tmp
setfmac -R mls/low /usr/local/lib/php
setfmac -R mls/low /usr/local/etc/php
setfmac mls/low /usr/local/etc/php.conf
setfmac mls/low /lib/libelf.so.2
setfmac mls/low /lib/libm.so.5
setfmac mls/low /usr/local/lib/libxml2.so.2
setfmac mls/low /lib/libz.so.6
setfmac mls/low /usr/lib/liblzma.so.5
setfmac mls/low /usr/local/lib/libiconv.so.2
setfmac mls/low /usr/lib/librt.so.1
setfmac mls/low /lib/libthr.so.3
setfmac mls/low /usr/local/lib/libpng16.so.16
setfmac mls/low /usr/lib/libbz2.so.4
setfmac mls/low /usr/local/lib/libargon2.so.0
setfmac mls/low /usr/local/lib/libpcre2-8.so.0
setfmac mls/low /usr/local/lib/libsqlite3.so.0
setfmac mls/low /usr/local/lib/libgd.so.6
setfmac mls/low /usr/local/lib/libjpeg.so.8
setfmac mls/low /usr/local/lib/libfreetype.so
setfmac mls/low /usr/local/lib/libfontconfig.so.1
setfmac mls/low /usr/local/lib/libtiff.so.5
setfmac mls/low /usr/local/lib/libwebp.so.7
setfmac mls/low /usr/local/lib/libjbig.so.2
setfmac mls/low /usr/lib/libssl.so.8
setfmac mls/low /lib/libcrypto.so.8
setfmac mls/low /usr/local/lib/libzip.so.5
setfmac mls/low /etc/resolv.conf

ይህ ዝርዝር የ apache እና php ጥምርን (በእኔ ምሳሌ ውስጥ ለተጫኑት ጥቅሎች) ለትክክለኛው አሠራር አስፈላጊ ለሆኑ ፋይሎች ሁሉ mls/ዝቅተኛ መለያዎችን ይዟል።

የመጨረሻው ንክኪ እስር ቤትን በ mls/እኩል ደረጃ፣ እና apache በ mls/ዝቅተኛ ደረጃ ማዋቀር ይሆናል። እስር ቤት ለመጀመር በ/etc/rc.d/jail script ላይ ለውጦችን ማድረግ፣ በዚህ ስክሪፕት ውስጥ የ jail_start ተግባራትን ፈልግ፣ የትዕዛዙን ተለዋዋጭ ወደ ቅጹ መቀየር አለብህ።

command="setpmac mls/equal $jail_program"

የ setpmac ትዕዛዝ ሁሉንም መለያዎች ለማግኘት እንዲቻል በዚህ አጋጣሚ mls/equal የሚፈፀመውን ፋይል በሚፈለገው የችሎታ ደረጃ ያንቀሳቅሰዋል። በ apache ውስጥ የጅምር ስክሪፕት /usr/local/etc/rc.d/apache24 ማረም ያስፈልግዎታል። የ apache24_prestart ተግባርን ይቀይሩ፡-

apache24_prestart() {
        apache24_checkfib
        apache24_precmd
        eval "setpmac mls/low" ${command} ${apache24_flags}
}

В ኦፊሴላዊ መመሪያው ሌላ ምሳሌ ይዟል፣ ግን መጠቀም አልቻልኩም ምክንያቱም የሴፕማክ ትዕዛዙን መጠቀም አለመቻልን የሚገልጽ መልእክት ስለማግኘቴ ነው።

መደምደሚያ

ይህ የመዳረሻ ስርጭት ዘዴ በ apache ላይ ተጨማሪ የደህንነት ደረጃን ይጨምራል (ምንም እንኳን ይህ ዘዴ ለማንኛውም ሌላ ቁልል ተስማሚ ቢሆንም) በተጨማሪም በእስር ቤት ውስጥ ይሠራል, በተመሳሳይ ጊዜ, ለአስተዳዳሪው ይህ ሁሉ በግልጽ እና በማይታወቅ ሁኔታ ይከሰታል.

ይህንን ጽሑፍ እንድጽፍ የረዱኝ ምንጮች ዝርዝር፡-

https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/mac.html

ምንጭ: hab.com

አስተያየት ያክሉ