تعارف
سرور سیکیورٹی کی اضافی سطح فراہم کرنے کے لیے، آپ استعمال کر سکتے ہیں۔
ٹریننگ
یہ طریقہ صرف ufs فائل سسٹم کے لیے موزوں ہے؛ اس مثال میں، zfs کو مین سسٹم میں اور ufs کو جیل میں بالترتیب استعمال کیا جائے گا۔ پہلا قدم دانا کو دوبارہ بنانا ہے؛ فری بی ایس ڈی انسٹال کرتے وقت سورس کوڈ انسٹال کریں۔
سسٹم انسٹال ہونے کے بعد، فائل میں ترمیم کریں:
/usr/src/sys/amd64/conf/GENERIC
آپ کو اس فائل میں صرف ایک لائن شامل کرنے کی ضرورت ہے:
options MAC_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
اس کے بعد، آپ محفوظ طریقے سے سسٹم کو ریبوٹ کر سکتے ہیں۔ تخلیق کرنے کا طریقہ
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/low لیبل سیٹ کریں اور بعد میں انسٹال کردہ پیکجز (مثال کے طور پر، php کے لیے اضافی ایکسٹینشنز) تک رسائی حاصل کر سکیں گے۔ اس ڈائریکٹری میں موجود لائبریریاں ہیں، لیکن یہ میرے لیے بہتر لگتا ہے کہ صرف ان فائلوں تک رسائی فراہم کریں جو ضروری ہیں۔ جیل بند کریں اور تمام فائلوں پر ایم ایل ایس / ہائی لیبل لگائیں:
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
لیبل سیٹ ہونے کے بعد، آپ کو اپاچی کے لیے ایم ایل ایس/لو لیبل سیٹ کرنے ہوں گے، سب سے پہلے آپ کو یہ معلوم کرنا ہوگا کہ اپاچی شروع کرنے کے لیے کن فائلوں کی ضرورت ہے:
ldd /usr/local/sbin/httpd
اس کمانڈ پر عمل کرنے کے بعد، انحصار اسکرین پر ظاہر ہوگا، لیکن ان فائلوں پر ضروری لیبل لگانا کافی نہیں ہوگا، کیونکہ جن ڈائریکٹریوں میں یہ فائلیں موجود ہیں ان میں ایم ایل ایس/ہائی لیبل موجود ہے، اس لیے ان ڈائریکٹریوں کو بھی لیبل لگانا ضروری ہے۔ ملی لیٹر/کم شروع کرنے پر، اپاچی ان فائلوں کو بھی آؤٹ پٹ کرے گا جو اسے چلانے کے لیے ضروری ہیں، اور 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 کے امتزاج کے درست آپریشن کے لیے ضروری ہیں (ان پیکجوں کے لیے جو میری مثال میں انسٹال ہیں)۔
آخری ٹچ جیل کو ایم ایل ایس/مساوی سطح پر چلانے کے لیے اور اپاچی کو ایم ایل ایس/کم سطح پر ترتیب دینا ہوگا۔ جیل شروع کرنے کے لیے، آپ کو /etc/rc.d/jail اسکرپٹ میں تبدیلیاں کرنے کی ضرورت ہے، اس اسکرپٹ میں jail_start فنکشنز تلاش کریں، کمانڈ متغیر کو فارم میں تبدیل کریں:
command="setpmac mls/equal $jail_program"
setpmac کمانڈ قابل عمل فائل کو مطلوبہ صلاحیت کی سطح پر چلاتی ہے، اس معاملے میں mls/equal، تمام لیبلز تک رسائی حاصل کرنے کے لیے۔ اپاچی میں آپ کو اسٹارٹ اپ اسکرپٹ /usr/local/etc/rc.d/apache24 میں ترمیم کرنے کی ضرورت ہے۔ apache24_prestart فنکشن کو تبدیل کریں:
apache24_prestart() {
apache24_checkfib
apache24_precmd
eval "setpmac mls/low" ${command} ${apache24_flags}
}
В
آؤٹ پٹ
رسائی کی تقسیم کا یہ طریقہ اپاچی میں سیکیورٹی کی ایک اضافی سطح کا اضافہ کرے گا (حالانکہ یہ طریقہ کسی دوسرے اسٹیک کے لیے موزوں ہے)، جو کہ جیل میں بھی چلتا ہے، اسی وقت، منتظم کے لیے یہ سب کچھ شفاف اور غیر توجہ کے ساتھ ہوگا۔
ان ذرائع کی فہرست جنہوں نے اس اشاعت کو لکھنے میں میری مدد کی:
ماخذ: www.habr.com