FreeBSD இல் கட்டாய உரிமைகள் விநியோக மாதிரி

அறிமுகம்

கூடுதல் அளவிலான சேவையக பாதுகாப்பை வழங்க, நீங்கள் பயன்படுத்தலாம் ஆணை மாதிரி அணுகல் விநியோகம். apache மற்றும் php சரியாக வேலை செய்வதற்கு அணுகல் தேவைப்படும் கூறுகளை மட்டும் அணுகுவதன் மூலம் சிறையில் அப்பாச்சியை எவ்வாறு இயக்கலாம் என்பதை இந்த வெளியீடு விவரிக்கும். இந்த கொள்கையைப் பயன்படுத்தி, நீங்கள் அப்பாச்சியை மட்டுமல்ல, வேறு எந்த அடுக்கையும் கட்டுப்படுத்தலாம்.

பயிற்சி

இந்த முறை ufs கோப்பு முறைமைக்கு மட்டுமே பொருத்தமானது; இந்த எடுத்துக்காட்டில், zfs பிரதான அமைப்பிலும், ufs சிறையில் முறையே பயன்படுத்தப்படும். முதல் படி கர்னலை மீண்டும் உருவாக்க வேண்டும்; FreeBSD ஐ நிறுவும் போது, ​​மூலக் குறியீட்டை நிறுவவும்.
கணினி நிறுவப்பட்ட பிறகு, கோப்பைத் திருத்தவும்:

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

இந்த கோப்பில் நீங்கள் ஒரு வரியை மட்டுமே சேர்க்க வேண்டும்:

options     MAC_MLS

mls/high label, mls/low label ஐ விட மேலாதிக்க நிலையைக் கொண்டிருக்கும், mls/low label உடன் தொடங்கப்படும் பயன்பாடுகள் mls/high label உள்ள கோப்புகளை அணுக முடியாது. 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 தொகுதியையும் autorunக்கு சேர்க்க வேண்டும்:

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/low லேபிள்களை அமைக்கவும், பின்னர் நிறுவப்பட்ட தொகுப்புகள் (எடுத்துக்காட்டாக, 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 லேபிள் உள்ளது, எனவே இந்த கோப்பகங்களும் பெயரிடப்பட வேண்டும். மில்லி/குறைவு. தொடங்கும் போது, ​​அப்பாச்சி அதை இயக்க தேவையான கோப்புகளை வெளியிடும், மேலும் 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/சம நிலையிலும், அப்பாச்சியை mls/குறைந்த அளவிலும் இயக்குவதற்கான இறுதித் தொடுதல் இருக்கும். சிறையைத் தொடங்க, நீங்கள் /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}
}

В அதிகாரி கையேட்டில் மற்றொரு எடுத்துக்காட்டு உள்ளது, ஆனால் என்னால் அதை பயன்படுத்த முடியவில்லை, ஏனெனில் setpmac கட்டளையைப் பயன்படுத்த இயலாமை பற்றிய செய்தியை நான் தொடர்ந்து பெறுகிறேன்.

முடிவுக்கு

அணுகலை விநியோகிக்கும் இந்த முறை அப்பாச்சிக்கு கூடுதல் பாதுகாப்பைச் சேர்க்கும் (இந்த முறை வேறு எந்த அடுக்கிற்கும் ஏற்றது என்றாலும்), இது கூடுதலாக சிறையில் இயங்கும், அதே நேரத்தில், நிர்வாகிக்கு இவை அனைத்தும் வெளிப்படையாகவும் கவனிக்கப்படாமலும் நடக்கும்.

இந்த வெளியீட்டை எழுத எனக்கு உதவிய ஆதாரங்களின் பட்டியல்:

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

ஆதாரம்: www.habr.com

கருத்தைச் சேர்