Кіріспе
Сервер қауіпсіздігінің қосымша деңгейін қамтамасыз ету үшін пайдалануға болады
Дайындау
Бұл әдіс тек 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 - млs/төмен деңгейде жұмыс істейтін етіп конфигурациялау болады. Түрмені бастау үшін /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}
}
В
қорытынды
Қол жеткізуді таратудың бұл әдісі apache-ге қосымша қауіпсіздік деңгейін қосады (бірақ бұл әдіс кез келген басқа стекке жарамды), ол қосымша түрмеде жұмыс істейді, сонымен бірге әкімші үшін мұның бәрі ашық және байқалмайтын болады.
Маған осы жарияланымды жазуға көмектескен дереккөздердің тізімі:
Ақпарат көзі: www.habr.com