FreeBSD တွင် မဖြစ်မနေရပိုင်ခွင့်များ ဖြန့်ဖြူးမှုပုံစံ

နိဒါန်း

ဆာဗာလုံခြုံရေး၏ နောက်ထပ်အဆင့်တစ်ခုပေးရန်၊ သင်သည် အသုံးပြုနိုင်သည်။ လုပ်ပိုင်ခွင့်ပုံစံ ဝင်ရောက်ဖြန့်ဖြူးခြင်း။ ဤထုတ်ဝေမှုသည် apache နှင့် php တို့ကို မှန်ကန်စွာအလုပ်လုပ်နိုင်ရန် apache နှင့် php အတွက်ဝင်ရောက်ခွင့်လိုအပ်သော အစိတ်အပိုင်းများကိုသာဝင်ရောက်ခွင့်ဖြင့် ထောင်ထဲတွင် apache ကိုမည်သို့ဖွင့်နိုင်ပုံကို ဖော်ပြပါမည်။ ဤမူကိုအသုံးပြုခြင်းဖြင့် သင်သည် Apache တစ်ခုတည်းသာမက အခြားသော stack များကိုလည်း ကန့်သတ်နိုင်သည်။

လေ့ကျင့်ရေး

ဤနည်းလမ်းသည် ufs ဖိုင်စနစ်အတွက်သာ သင့်လျော်သည်၊ ဤဥပမာတွင်၊ zfs ကို ပင်မစနစ်တွင် အသုံးပြုမည်ဖြစ်ပြီး၊ ထောင်ထဲတွင် ufs အသီးသီးကို အသုံးပြုမည်ဖြစ်သည်။ ပထမအဆင့်သည် kernel ကိုပြန်လည်တည်ဆောက်ရန်ဖြစ်သည်၊ FreeBSD ကိုထည့်သွင်းသောအခါ၊ အရင်းအမြစ်ကုဒ်ကိုထည့်သွင်းပါ။
စနစ်ထည့်သွင်းပြီးနောက်၊ ဖိုင်ကိုတည်းဖြတ်ပါ။

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

ဤဖိုင်တွင် စာကြောင်းတစ်ကြောင်းသာ ထည့်ရန် လိုအပ်သည်-

options     MAC_MLS

mls/high label သည် mls/low တံဆိပ်အပေါ်တွင် အသာစီးရမည်ဖြစ်ပြီး၊ mls/low label ဖြင့် စတင်မည့် အပလီကေးရှင်းများသည် mls/high label ပါသည့်ဖိုင်များကို ဝင်ရောက်ကြည့်ရှုနိုင်မည်မဟုတ်ပေ။ FreeBSD စနစ်ရှိ ရရှိနိုင်သော tag များအားလုံးအကြောင်း အသေးစိတ်ကို ဤတွင် တွေ့နိုင်ပါသည်။ ခေါင်းဆောင်မှု.
ထို့နောက် /usr/src directory သို့သွားပါ။

cd /usr/src

kernel ကိုစတင်တည်ဆောက်ရန်၊ run (j key တွင်၊ စနစ်အတွင်းရှိ cores အရေအတွက်ကိုသတ်မှတ်ပါ) ။

make -j 4 buildkernel KERNCONF=GENERIC

kernel ကို စုစည်းပြီးပါက၊ ၎င်းကို ထည့်သွင်းရမည်-

make installkernel KERNCONF=GENERIC

kernel ကိုထည့်သွင်းပြီးနောက်၊ ၎င်းကိုယခင်က configure လုပ်ပြီးအသုံးပြုသူများကို login class သို့လွှဲပြောင်းရန်လိုအပ်သောကြောင့် system ကိုပြန်လည်စတင်ရန်အလျင်စလိုမလုပ်ပါနှင့်။ /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) ကို ဝင်ရောက်ကြည့်ရှုခွင့်ပေးမည်ဖြစ်သည်။ ဤအရာများကို ကိုင်တွယ်ပြီးနောက်၊ သင်သည် ဒေတာဘေ့စ်ကို ပြန်လည်တည်ဆောက်ရန်နှင့် ဤအကောင့်ဝင်အတန်းတွင် root အသုံးပြုသူ (အပြင် လိုအပ်သူများ) ကို နေရာချရန် လိုအပ်သည်-

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

မူဝါဒသည် ဖိုင်များနှင့်သာ သက်ဆိုင်စေရန်အတွက်၊ သင်သည် /etc/mac.conf ဖိုင်ကို တည်းဖြတ်ရန် လိုအပ်ပြီး ၎င်းတွင် စာကြောင်းတစ်ကြောင်းသာ ချန်ထားခဲ့သည်-

default_labels file ?mls

autorun ရန်အတွက် သင်သည် mac_mls.ko module ကို ထပ်ထည့်ရန် လိုအပ်ပါသည်။

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

၎င်းပြီးနောက်၊ သင်သည်လုံခြုံစွာစနစ်အားပြန်လည်စတင်နိုင်သည်။ ဖန်တီးနည်း ထောင် ကျွန်ုပ်၏ စာအုပ်စာတမ်းများထဲတွင် သင်ဖတ်နိုင်သည်။ ဒါပေမယ့် ထောင်တစ်ခုမဖန်တီးခင်မှာ hard drive တစ်ခုကိုထည့်ပြီး ဖိုင်စနစ်တစ်ခုဖန်တီးပြီး ၎င်းပေါ်မှာ multilabel ကိုဖွင့်ထားကာ၊ cluster size 2kb ရှိတဲ့ ufs64 ဖိုင်စနစ်ကို ဖန်တီးပါ။

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

ဖိုင်စနစ်ဖန်တီးပြီး တံဆိပ်မျိုးစုံထည့်ပြီးနောက်၊ သင်သည် /etc/fstab သို့ hard drive ကိုထည့်ရန် လိုအပ်ပြီး ဤဖိုင်တွင် စာကြောင်းထည့်ရန် လိုအပ်သည်-

/dev/ada1               /jail  ufs     rw              0       1

Mountpoint တွင်၊ သင် hard drive ကိုတပ်ဆင်မည့် directory ကိုသတ်မှတ်ပါ၊ Pass တွင်၊ 1 ကိုသတ်မှတ်ပါ (ဤ hard drive ကိုမည်သည့် sequence တွင်စစ်ဆေးပါမည်) - 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/low တံဆိပ်များကို သတ်မှတ်၍ နောက်ဆက်တွဲထည့်သွင်းထားသောပက်ကေ့ဂျ်များ (ဥပမာ၊ php အတွက် ထပ်လောင်းတိုးချဲ့မှုများ) ကို ဝင်ရောက်ကြည့်ရှုနိုင်မည်ဖြစ်သည်။ ဤလမ်းညွှန်ရှိ စာကြည့်တိုက်များသည် ကျွန်ုပ်အတွက် လိုအပ်သော ဖိုင်များကိုသာ ဝင်ရောက်ခွင့် ပေးသည်မှာ ပိုကောင်းပုံရသည်။ ထောင်ကိုရပ်လိုက်ပြီး ဖိုင်အားလုံးတွင် mls/high labels များသတ်မှတ်ပါ-

setfmac -R mls/high /jail

သတ်မှတ်ချက်များကို အမှတ်အသားပြုသည့်အခါ၊ setfmac သည် hard links များနှင့်တွေ့ပါက၊ ကျွန်ုပ်၏နမူနာတွင်၊ အောက်ပါလမ်းညွှန်များတွင် hard links များကို ကျွန်ုပ်ဖျက်လိုက်သည်-

/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

အညွှန်းများသတ်မှတ်ပြီးနောက်၊ သင်သည် apache အတွက် mls/low အညွှန်းများကို သတ်မှတ်ရန် လိုအပ်သည်၊ သင်လုပ်ဆောင်ရမည့်အရာမှာ 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/low tags များပါရှိသည်။

နောက်ဆုံးထိတွေ့မှုသည် mls/တူညီသောအဆင့်တွင်လည်ပတ်ရန်အကျဉ်းထောင်ကိုဖွဲ့စည်းရန်နှင့် mls/low အဆင့်တွင် apache တို့ကိုလုပ်ဆောင်ရန်ဖြစ်သည်။ jail စတင်ရန်၊ သင်သည် /etc/rc.d/jail script ကို အပြောင်းအလဲလုပ်ရန် လိုအပ်သည်၊ ဤ script ရှိ jail_start လုပ်ဆောင်ချက်များကို ရှာပါ၊ ကွန်မန်းကို ပုံစံပြောင်းရန်-

command="setpmac mls/equal $jail_program"

setpmac command သည် အညွှန်းများအားလုံးသို့ဝင်ရောက်ခွင့်ရရှိရန်အတွက် လိုအပ်သောစွမ်းရည်အဆင့်တွင်၊ ဤအခြေအနေတွင် mls/equal ဖြင့်လုပ်ဆောင်သည်။ apache တွင် သင်သည် startup script /usr/local/etc/rc.d/apache24 ကို တည်းဖြတ်ရန် လိုအပ်သည်။ apache24_prestart လုပ်ဆောင်ချက်ကို ပြောင်းလဲပါ။

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

В အရာရှိ လက်စွဲစာအုပ်တွင် အခြားဥပမာတစ်ခုပါရှိသည်၊ သို့သော် ကျွန်ုပ်သည် setpmac အမိန့်ကို အသုံးမပြုနိုင်ခြင်းနှင့်ပတ်သက်သည့် မက်ဆေ့ချ်ကို ဆက်လက်ရရှိသောကြောင့် ၎င်းကို ကျွန်ုပ်အသုံးပြု၍မရပါ။

ကောက်ချက်

သုံးစွဲခွင့်ကို ဖြန့်ဝေသည့်နည်းလမ်းသည် apache တွင် နောက်ထပ်လုံခြုံရေးအဆင့်တစ်ခုထပ်တိုးလာမည် (ဤနည်းလမ်းသည် အခြားသော stack များအတွက် သင့်လျော်သော်လည်း) ၎င်းအပြင် စီမံခန့်ခွဲသူအတွက် တစ်ချိန်တည်းမှာပင် ဤအရာအားလုံးသည် အကျဉ်းထောင်တစ်ခုအတွင်း လုပ်ဆောင်နေသည့်အတွက် ပွင့်လင်းမြင်သာစွာနှင့် သတိမထားမိဘဲ ဖြစ်သွားမည်ဖြစ်သည်။

ဤစာစောင်ကို ရေးသားရာတွင် ကျွန်ုပ်အား အထောက်အကူဖြစ်စေသော အရင်းအမြစ်များစာရင်း-

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

source: www.habr.com

မှတ်ချက် Add