په FreeBSD کې د لازمي حقونو توزیع ماډل

پېژندنه

د سرور امنیت اضافي کچې چمتو کولو لپاره ، تاسو کارولی شئ د امر ماډل د لاسرسي ویش. دا خپرونه به تشریح کړي چې تاسو څنګه کولی شئ په جیل کې اپاچي چل کړئ یوازې هغه برخو ته لاسرسی ومومئ چې د سم کار کولو لپاره اپاچي او پی ایچ پی ته لاسرسی ته اړتیا لري. د دې اصولو په کارولو سره، تاسو کولی شئ نه یوازې اپاچي محدود کړئ، بلکې کوم بل سټیک هم.

د چمتو کولو لپاره

دا طریقه یوازې د ufs فایل سیسټم لپاره مناسبه ده؛ پدې مثال کې، zfs به په ترتیب سره په اصلي سیسټم کې کارول کیږي، او په جیل کې ufs. لومړی ګام د کرنل بیا رغول دي؛ کله چې د FreeBSD نصب کول، د سرچینې کوډ نصب کړئ.
د سیسټم نصبولو وروسته، فایل سم کړئ:

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

تاسو دې فایل ته یوازې یوه کرښه اضافه کولو ته اړتیا لرئ:

options     MAC_MLS

mls/لوړ لیبل به د mls/ټيټ لیبل په پرتله غالب دریځ ولري، هغه غوښتنلیکونه چې د mls/ټيټ لیبل سره به پیل شي هغه فایلونو ته د لاسرسي وړ نه وي چې mls/لوړ لیبل ولري. په 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

له دې وروسته، تاسو کولی شئ په خوندي ډول سیسټم ریبوټ کړئ. څنګه جوړ کړئ زندان تاسو کولی شئ دا زما په یوه خپرونه کې ولولئ. مګر د جیل رامینځته کولو دمخه ، تاسو اړتیا لرئ یو هارډ ډرایو اضافه کړئ او په هغې کې د فایل سیسټم رامینځته کړئ او په هغې کې ملټي لیبل فعال کړئ ، د 2kb کلستر اندازې سره د ufs64 فایل سیسټم رامینځته کړئ:

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

د فایل سیسټم رامینځته کولو او ملټي لیبل اضافه کولو وروسته ، تاسو اړتیا لرئ هارډ ډرایو /etc/fstab ته اضافه کړئ ، دې فایل ته لاین اضافه کړئ:

/dev/ada1               /jail  ufs     rw              0       1

په ماونټ پوینټ کې ، هغه لارښود مشخص کړئ چیرې چې تاسو به هارډ ډرایو نصب کړئ؛ په پاس کې ، ډاډ ترلاسه کړئ چې 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/لوړ لیبلونه تنظیم کړئ:

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 / ټیټ لیبلونه تنظیم کړئ ، لومړی شی چې تاسو یې کولو ته اړتیا لرئ دا ومومئ چې د اپاچي پیل کولو لپاره کوم فایلونو ته اړتیا ده:

ldd /usr/local/sbin/httpd

د دې کمانډ پلي کولو وروسته ، انحصار به په سکرین کې ښکاره شي ، مګر پدې فایلونو کې د اړین لیبلونو تنظیم کول به کافي نه وي ، ځکه چې هغه لارښودونه چې دا فایلونه پکې موقعیت لري د mls/لوړ لیبل لري ، نو دا لارښودونه هم باید لیبل شي. mls/ټيټ. کله چې پیل کیږي، اپاچي به هغه فایلونه هم تولید کړي چې د دې چلولو لپاره اړین دي، او د 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

دا لیست د ټولو فایلونو لپاره mls / ټیټ ټاګونه لري چې د اپاچي او پی ایچ پی ترکیب سم عملیاتو لپاره اړین دي (د هغه کڅوړو لپاره چې زما په مثال کې نصب شوي دي).

وروستی تماس به د جیل تنظیم کول وي چې په mls/مساوي کچه چلیږي، او اپاچي په mls/ټيټه کچه. د جیل پیل کولو لپاره، تاسو اړتیا لرئ چې په /etc/rc.d/jail سکریپټ کې بدلونونه رامینځته کړئ، په دې سکریپټ کې د jail_start افعال ومومئ، د کمانډ تغیر په فورمه کې بدل کړئ:

command="setpmac mls/equal $jail_program"

د setpmac کمانډ د اړتیا وړ وړتیا کچه کې د اجرا وړ فایل پرمخ وړي، پدې حالت کې mls / مساوي، د دې لپاره چې ټولو لیبلونو ته لاسرسی ولري. په اپاچي کې تاسو اړتیا لرئ د پیل سکریپټ ترمیم کړئ /usr/local/etc/rc.d/apache24. د apache24_prestart فعالیت بدل کړئ:

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

В رسمي لارښود یو بل مثال لري ، مګر زه نشم کولی دا وکاروم ځکه چې ما د setpmac کمانډ کارولو وړتیا په اړه پیغام ترلاسه کولو ته دوام ورکړ.

پایلې

د لاسرسي توزیع کولو دا طریقه به اپاچي ته د امنیت اضافي کچې اضافه کړي (که څه هم دا میتود د کوم بل سټیک لپاره مناسب دی) ، کوم چې سربیره پردې په جیل کې پرمخ ځي ، په ورته وخت کې ، د مدیر لپاره دا ټول به په شفاف او غیر د پام وړ پیښ شي.

د هغو سرچینو لیست چې ما سره یې د دې خپرونې په لیکلو کې مرسته کړې:

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

سرچینه: www.habr.com

Add a comment