Модели тақсимоти ҳуқуқҳои ҳатмӣ дар FreeBSD

Муқаддима

Барои таъмини сатҳи иловагии амнияти сервер, шумо метавонед истифода баред модели мандат тақсимоти дастрасӣ. Ин нашрия тасвир мекунад, ки чӣ гуна шумо метавонед apache-ро дар зиндон бо дастрасӣ танҳо ба он ҷузъҳое, ки барои дуруст кор кардани apache ва php дастрасӣ талаб мекунанд, иҷро кунед. Бо истифода аз ин принсип, шумо метавонед на танҳо Apache, балки ҳама гуна стекро маҳдуд кунед.

Омодагӣ

Ин усул танҳо барои системаи файлии ufs мувофиқ аст; дар ин мисол, мутаносибан zfs дар системаи асосӣ ва ufs дар зиндон истифода мешаванд. Қадами аввал ин аз нав сохтани ядро ​​мебошад; ҳангоми насб кардани FreeBSD, рамзи сарчашмаро насб кунед.
Пас аз насб кардани система, файлро таҳрир кунед:

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

Шумо бояд ба ин файл танҳо як сатр илова кунед:

options     MAC_MLS

Нишони mls/баланд дар болои тамғаи mls/паст мавқеъи бартаридошта хоҳад дошт, барномаҳое, ки бо нишони mls/past оғоз мешаванд, наметавонанд ба файлҳое, ки тамғаи 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/past, 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

Пас аз ин, шумо метавонед системаро бехатар бозоғоз намоед. Чӣ тавр эҷод кардан маҳбас Шумо метавонед онро дар яке аз нашрияҳои ман хонед. Аммо пеш аз сохтани зиндон, шумо бояд як диски сахтро илова кунед ва дар он системаи файлӣ созед ва дар он multilabel-ро фаъол созед, системаи файлии ufs2-ро бо андозаи кластери 64 кб созед:

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

Пас аз сохтани системаи файлӣ ва илова кардани multilabel, шумо бояд диски сахтро ба /etc/fstab илова кунед, сатрро ба ин файл илова кунед:

/dev/ada1               /jail  ufs     rw              0       1

Дар Mountpoint, феҳристеро, ки шумо диски сахтро дар он васл мекунед, муайян кунед; дар Pass, ҳатман 1-ро нишон диҳед (бо кадом пайдарпаии ин диски сахт тафтиш карда мешавад) - ин зарур аст, зеро системаи файлии ufs ба қатъи ногаҳонии барқ ​​ҳассос аст. . Пас аз ин амалҳо, дискро насб кунед:

mount /dev/ada1 /jail

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/low-ро барои apache насб кунед, аввалин чизе, ки шумо бояд анҷом диҳед, фаҳмед, ки барои оғоз кардани apache кадом файлҳо лозиманд:

ldd /usr/local/sbin/httpd

Пас аз иҷрои ин фармон вобастагӣ дар экран намоиш дода мешавад, аммо гузоштани тамғакоғазҳои зарурӣ дар ин файлҳо кофӣ нахоҳад буд, зеро директорияҳое, ки дар онҳо ин файлҳо ҷойгир шудаанд, тамғаи mls/high доранд, бинобар ин, ин директорияҳо низ бояд тамғагузорӣ карда шаванд. млс/паст. Ҳангоми оғоз кардан, 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ро барои ҳама файлҳое дар бар мегирад, ки барои кори дурусти комбинатсияи apache ва php заруранд (барои он бастаҳое, ки дар мисоли ман насб шудаанд).

Ламоси ниҳоӣ ин аст, ки зиндонро дар сатҳи mls/баробар ва apache дар сатҳи mls/паст кор кунад. Барои оғози зиндон, шумо бояд ба скрипти /etc/rc.d/jail тағирот ворид кунед, функсияҳои jail_start-ро дар ин скрипт пайдо кунед, тағирёбандаи фармонро ба шакл тағир диҳед:

command="setpmac mls/equal $jail_program"

Фармони setpmac файли иҷрошавандаро дар сатҳи зарурии қобилият, дар ин ҳолат mls/баробар иҷро мекунад, то ба ҳама нишонаҳо дастрасӣ дошта бошад. Дар apache шумо бояд скрипти оғозёбиро таҳрир кунед /usr/local/etc/rc.d/apache24. Функсияи apache24_prestart-ро тағир диҳед:

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

В мансабдор Дастур як мисоли дигареро дар бар мегирад, аммо ман натавонистам онро истифода барам, зеро ман пайваста дар бораи имконнопазирии истифодаи фармони setpmac хабар мегирам.

хулоса

Ин усули паҳнкунии дастрасӣ ба apache сатҳи иловагии амниятро илова мекунад (гарчанде ки ин усул барои ҳама стекҳои дигар мувофиқ аст), ки илова бар ин, дар зиндон кор мекунад, дар айни замон, барои администратор ҳамаи ин шаффоф ва ноаён сурат мегирад.

Рӯйхати манбаъҳое, ки дар навиштани ин нашрия ба ман кӯмак карданд:

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

Манбаъ: will.com

Илова Эзоҳ