تعارف
سرور سيڪيورٽي جي اضافي سطح مهيا ڪرڻ لاء، توهان استعمال ڪري سگهو ٿا
جي تياري
اهو طريقو صرف ufs فائل سسٽم لاءِ موزون آهي؛ هن مثال ۾، zfs استعمال ڪيو ويندو مکيه سسٽم ۾، ۽ ufs ترتيب سان جيل ۾. پهريون قدم ڪرنل کي ٻيهر تعمير ڪرڻ آهي؛ جڏهن FreeBSD انسٽال ڪريو، سورس ڪوڊ انسٽال ڪريو.
سسٽم نصب ٿيڻ کان پوء، فائل کي تبديل ڪريو:
/usr/src/sys/amd64/conf/GENERIC
توھان کي صرف ھڪڙي لائن شامل ڪرڻ جي ضرورت آھي ھن فائل ۾:
options MAC_MLS
mls/High ليبل کي mls/low label تي غالب پوزيشن حاصل هوندي، ايپليڪيشنون جيڪي mls/low label سان شروع ڪيون وينديون فائلن تائين رسائي نه ڪنديون جن وٽ mls/high ليبل هوندو. FreeBSD سسٽم ۾ موجود سڀني ٽيگ بابت وڌيڪ تفصيل هن ۾ ڳولهي سگهجن ٿا
اڳيون، وڃو /usr/src ڊاريڪٽري:
cd /usr/src
ڪنيبل ٺاهڻ شروع ڪرڻ لاءِ، هلو (j key ۾، سسٽم ۾ cores جو تعداد بيان ڪريو):
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 ماڊل autorun ۾:
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
مائونٽ پوائنٽ ۾، ڊاريڪٽري بيان ڪريو جنهن ۾ توهان هارڊ ڊرائيو کي نصب ڪندا؛ پاس ۾، 1 جي وضاحت ڪرڻ جي پڪ ڪريو (ڪهڙي ترتيب ۾ هي هارڊ ڊرائيو چيڪ ڪيو ويندو) - اهو ضروري آهي، ڇو ته ufs فائل سسٽم اوچتو پاور ڪٽ جي حساس آهي. . انهن قدمن کان پوء، ڊسڪ کي نصب ڪريو:
mount /dev/ada1 /jail
هن ڊاريڪٽري ۾ جيل نصب ڪريو. جيل ھلڻ کان پوءِ، توھان کي ان ۾ ساڳيون ئي ڦيرڦار ڪرڻ جي ضرورت آھي جيئن بنيادي سسٽم ۾ صارفين ۽ فائلن سان /etc/login.conf، /etc/mac.conf.
adjustment
ضروري ٽيگ انسٽال ڪرڻ کان اڳ، مان سڀ ضروري پيڪيجز کي انسٽال ڪرڻ جي صلاح ڏيان ٿو؛ منهنجي صورت ۾، ٽيگ انهن پيڪيجز کي مدنظر رکندي سيٽ ڪيا ويندا:
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 labels ۽ بعد ۾ نصب ٿيل پيڪيجز (مثال طور، 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/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
ھن لسٽ ۾ سڀني فائلن لاءِ mls/low tags آھن جيڪي ضروري آھن apache ۽ php جي ميلاپ جي صحيح آپريشن لاءِ (اھي پيڪيجز لاءِ جيڪي منھنجي مثال ۾ نصب ٿيل آھن).
حتمي رابطي جيل کي ترتيب ڏيڻ لاءِ هوندو mls/برابر سطح تي، ۽ apache کي 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}
}
В
ٿڪل
رسائي کي ورهائڻ جو هي طريقو اپاچي ۾ سيڪيورٽي جي اضافي سطح کي شامل ڪندو (جيتوڻيڪ اهو طريقو ڪنهن ٻئي اسٽيڪ لاء مناسب آهي)، جيڪو اضافي طور تي جيل ۾ هلندو آهي، ساڳئي وقت، منتظم لاء اهو سڀ ڪجهه شفاف ۽ غير معمولي طور تي ٿيندو.
ذريعن جي فهرست جن مون کي هن اشاعت لکڻ ۾ مدد ڪئي:
جو ذريعو: www.habr.com