መግቢያ
ተጨማሪ የአገልጋይ ደህንነት ደረጃ ለመስጠት፣ መጠቀም ይችላሉ።
ዝግጅት
ይህ ዘዴ ለ 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
ከዚህ በኋላ ስርዓቱን ደህንነቱ በተጠበቀ ሁኔታ እንደገና ማስጀመር ይችላሉ. እንዴት መፍጠር እንደሚቻል
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 ላይ ተጨማሪ የደህንነት ደረጃን ይጨምራል (ምንም እንኳን ይህ ዘዴ ለማንኛውም ሌላ ቁልል ተስማሚ ቢሆንም) በተጨማሪም በእስር ቤት ውስጥ ይሠራል, በተመሳሳይ ጊዜ, ለአስተዳዳሪው ይህ ሁሉ በግልጽ እና በማይታወቅ ሁኔታ ይከሰታል.
ይህንን ጽሑፍ እንድጽፍ የረዱኝ ምንጮች ዝርዝር፡-
ምንጭ: hab.com