Ynlieding
Om in ekstra nivo fan serverfeiligens te leverjen, kinne jo gebrûk meitsje
Tarieding fan
Dizze metoade is allinich geskikt foar it ufs-bestânsysteem; yn dit foarbyld sille zfs respektivelik wurde brûkt yn it haadsysteem, en ufs yn 'e finzenis. De earste stap is om de kernel opnij op te bouwen; by it ynstallearjen fan FreeBSD, ynstallearje de boarnekoade.
Nei it systeem is ynstalleare, bewurkje it bestân:
/usr/src/sys/amd64/conf/GENERIC
Jo hoege mar ien rigel ta te foegjen oan dit bestân:
options MAC_MLS
It mls/hege-label sil in dominante posysje hawwe oer it mls/low-label, applikaasjes dy't lansearre wurde mei it mls/low-label sille gjin tagong krije ta bestannen dy't it mls/hege label hawwe. Mear details oer alle beskikbere tags yn it FreeBSD-systeem binne hjir te finen
Gean dan nei de map /usr/src:
cd /usr/src
Om te begjinnen mei it bouwen fan de kernel, rinne (yn 'e j-kaai, spesifisearje it oantal kearnen yn it systeem):
make -j 4 buildkernel KERNCONF=GENERIC
Nei't de kernel kompilearre is, moat it ynstalleare wurde:
make installkernel KERNCONF=GENERIC
Nei it ynstallearjen fan de kernel, haast net om it systeem opnij te begjinnen, om't it nedich is om brûkers oer te setten nei de oanmeldklasse, nei't it earder konfigureare is. Bewurkje it bestân /etc/login.conf, yn dit bestân moatte jo de standert oanmeldklasse bewurkje, bring it nei it formulier:
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:
De rigel :label=mls/equal lit brûkers dy't lid binne fan dizze klasse tagong krije ta bestannen dy't markearre binne mei elk label (mls/low, mls/high). Nei dizze manipulaasjes moatte jo de databank opnij opbouwe en de root-brûker (lykas dejingen dy't it nedich hawwe) yn dizze oanmeldklasse pleatse:
cap_mkdb /etc/login.conf
pw usermod root -L default
Om it belied allinich foar bestannen fan tapassing te meitsjen, moatte jo it /etc/mac.conf-bestân bewurkje, wêrtroch mar ien rigel yn bliuwt:
default_labels file ?mls
Jo moatte ek de mac_mls.ko-module taheakje foar autorun:
echo 'mac_mls_load="YES"' >> /boot/loader.conf
Hjirnei kinne jo it systeem feilich opnij starte. Hoe te meitsjen
newfs -O 2 -b 64kb /dev/ada1
tunefs -l enable /dev/ada1
Nei it oanmeitsjen fan it bestânsysteem en it tafoegjen fan multilabel, moatte jo de hurde skiif tafoegje oan /etc/fstab, foegje de rigel ta oan dit bestân:
/dev/ada1 /jail ufs rw 0 1
Spesifisearje yn Mountpoint de map wêryn jo de hurde skiif sille montearje; yn Pass, wês wis dat jo 1 opjaan (yn hokker folchoarder dizze hurde skiif sil wurde kontrolearre) - dit is nedich, om't it ufs-bestânsysteem gefoelich is foar hommelse stroomûnderbrekkingen . Nei dizze stappen, montearje de skiif:
mount /dev/ada1 /jail
Ynstallearje finzenis yn dizze map. Neidat de finzenis rint, moatte jo deselde manipulaasjes dwaan as yn it haadsysteem mei brûkers en de triemmen /etc/login.conf, /etc/mac.conf.
oanpassing
Foardat jo de nedige tags ynstallearje, advisearje ik alle nedige pakketten te ynstallearjen; yn myn gefal sille de tags wurde ynsteld mei rekkening mei dizze pakketten:
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
Yn dit foarbyld sille labels wurde ynsteld mei rekkening mei de ôfhinklikens fan dizze pakketten. Fansels kinne jo it ienfâldiger dwaan: foar de map /usr/local/lib en de bestannen yn dizze map, set de mls/low-labels yn en de folgjende ynstalleare pakketten (bygelyks ekstra tafoegings foar php) kinne tagong krije de biblioteken yn dizze map, mar it liket my better te jaan tagong allinnich oan dy triemmen dy't nedich binne. Stopje finzenis en set mls / hege labels op alle bestannen:
setfmac -R mls/high /jail
By it ynstellen fan marken sil it proses wurde stoppe as setfmac hurde keppelings tsjinkomt, yn myn foarbyld haw ik hurde keppelings wiske yn 'e folgjende mappen:
/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
Neidat de labels binne ynsteld, moatte jo de mls / lege labels foar apache ynstelle, it earste ding dat jo moatte dwaan is út te finen hokker bestannen nedich binne om apache te begjinnen:
ldd /usr/local/sbin/httpd
Nei it útfieren fan dit kommando sille ôfhinklikens op it skerm werjûn wurde, mar it ynstellen fan de nedige labels op dizze triemmen sil net genôch wêze, om't de mappen wêryn dizze triemmen lizze it label mls/high, dus dizze mappen moatte ek markearre wurde mls/low. By it starten sil apache ek de bestannen útfiere dy't nedich binne om it út te fieren, en foar php kinne dizze ôfhinklikens fûn wurde yn it httpd-error.log 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
Dizze list befettet mls/low-tags foar alle bestannen dy't nedich binne foar de juste wurking fan 'e apache- en php-kombinaasje (foar dy pakketten dy't yn myn foarbyld binne ynstalleare).
De lêste touch sil wêze om finzenis te konfigurearjen om te rinnen op it mls / lykweardich nivo, en apache op it mls / leech nivo. Om finzenis te begjinnen, moatte jo wizigingen meitsje oan it /etc/rc.d/jail-skript, fine de jail_start-funksjes yn dit skript, feroarje de kommando-fariabele nei it formulier:
command="setpmac mls/equal $jail_program"
It kommando setpmac rint it útfierbere bestân op it fereaske kapasiteitsnivo, yn dit gefal mls/equal, om tagong te krijen ta alle labels. Yn apache moatte jo it opstartskript bewurkje /usr/local/etc/rc.d/apache24. Feroarje de apache24_prestart-funksje:
apache24_prestart() {
apache24_checkfib
apache24_precmd
eval "setpmac mls/low" ${command} ${apache24_flags}
}
В
konklúzje
Dizze metoade foar it fersprieden fan tagong sil in ekstra nivo fan feiligens tafoegje oan apache (hoewol't dizze metoade geskikt is foar elke oare stapel), dy't boppedat yn in finzenis rint, tagelyk, foar de behearder sil dit alles transparant en unmerkber barre.
List fan boarnen dy't my holpen by it skriuwen fan dizze publikaasje:
Boarne: www.habr.com