тааныштыруу
Сервер коопсуздугунун кошумча деңгээлин камсыз кылуу үчүн, сиз колдоно аласыз
үйрөтүү
Бул ыкма 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
Ошондой эле autorun үчүн 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
Mountpoint'те, Pass'та катуу дискти орното турган каталогду көрсөтүңүз, 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
Энбелгилер коюлгандан кийин, сиз apache үчүн mls/low энбелгилерин коюшуңуз керек, биринчи кезекте apache баштоо үчүн кандай файлдар керек экенин билүү керек:
ldd /usr/local/sbin/httpd
Бул буйрукту аткаргандан кийин, экранда көз карандылыктар пайда болот, бирок бул файлдарга керектүү энбелгилерди коюу жетишсиз болот, анткени бул файлдар жайгашкан каталогдор 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
Бул тизмеде apache жана PHP айкалышынын туура иштеши үчүн зарыл болгон бардык файлдар үчүн mls/low теги бар (менин мисалымда орнотулган пакеттер үчүн).
Акыркы тийүү түрмөнү mls/бардык деңгээлде, ал эми apacheди mls/төмөн деңгээлде иштетүү үчүн конфигурациялоо болот. Түрмөнү баштоо үчүн, сиз /etc/rc.d/jail скриптине өзгөртүүлөрдү киргизишиңиз керек, бул скрипттен jail_start функцияларын таап, буйрук өзгөрмөсүн формага өзгөртүшүңүз керек:
command="setpmac mls/equal $jail_program"
setpmac буйругу аткарылуучу файлды талап кылынган мүмкүнчүлүк деңгээлинде иштетет, бул учурда бардык энбелгилерге жетүү үчүн mls/equal. Apacheде сиз /usr/local/etc/rc.d/apache24 баштоо скриптин түзөтүшүңүз керек. apache24_prestart функциясын өзгөртүү:
apache24_prestart() {
apache24_checkfib
apache24_precmd
eval "setpmac mls/low" ${command} ${apache24_flags}
}
В
жыйынтыктоо
Кирүүнү бөлүштүрүүнүн бул ыкмасы apache үчүн коопсуздуктун кошумча деңгээлин кошот (бирок бул ыкма башка стекке ылайыктуу), ал кошумча турмеде иштейт, ошол эле учурда администратор үчүн мунун баары ачык-айкын жана байкалбагандай болот.
Бул басылманы жазууга жардам берген булактардын тизмеси:
Source: www.habr.com