Inleiding
Om 'n bykomende vlak van bedienersekuriteit te bied, kan u gebruik
Opleiding
Hierdie metode is slegs geskik vir die ufs-lêerstelsel; in hierdie voorbeeld sal zfs onderskeidelik in die hoofstelsel en ufs in die tronk gebruik word. Die eerste stap is om die kern te herbou; wanneer jy FreeBSD installeer, installeer die bronkode.
Nadat die stelsel geïnstalleer is, wysig die lêer:
/usr/src/sys/amd64/conf/GENERIC
Jy hoef net een reël by hierdie lêer te voeg:
options MAC_MLS
Die mls/hoog-etiket sal 'n dominante posisie oor die mls/laag-etiket hê, toepassings wat met die mls/laag-etiket geloods sal word, sal nie toegang tot lêers wat die mls/hoog-etiket het, kan kry nie. Meer besonderhede oor alle beskikbare etikette in die FreeBSD-stelsel kan hierin gevind word
Gaan dan na die /usr/src-gids:
cd /usr/src
Om die kern te begin bou, hardloop (spesifiseer die aantal kerns in die stelsel in die j-sleutel):
make -j 4 buildkernel KERNCONF=GENERIC
Nadat die kern saamgestel is, moet dit geïnstalleer word:
make installkernel KERNCONF=GENERIC
Nadat u die kern geïnstalleer het, moenie haastig wees om die stelsel te herlaai nie, aangesien dit nodig is om gebruikers na die aanmeldklas oor te dra, nadat dit voorheen gekonfigureer is. Wysig die /etc/login.conf lêer, in hierdie lêer moet jy die verstek aanmeldklas wysig, bring dit na die vorm:
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:
Die reël :label=mls/equal sal gebruikers wat lede van hierdie klas is, toegang gee tot lêers wat met enige etiket gemerk is (mls/low, mls/high). Na hierdie manipulasies moet jy die databasis herbou en die wortelgebruiker (sowel as diegene wat dit nodig het) in hierdie aanmeldklas plaas:
cap_mkdb /etc/login.conf
pw usermod root -L default
Om die beleid slegs op lêers van toepassing te maak, moet jy die /etc/mac.conf-lêer wysig en net een reël daarin laat:
default_labels file ?mls
Jy moet ook die mac_mls.ko-module byvoeg om outomaties te hardloop:
echo 'mac_mls_load="YES"' >> /boot/loader.conf
Hierna kan u die stelsel veilig herlaai. Hoe om te skep
newfs -O 2 -b 64kb /dev/ada1
tunefs -l enable /dev/ada1
Nadat u die lêerstelsel geskep het en multi-etiket bygevoeg het, moet u die hardeskyf by /etc/fstab voeg, voeg die reël by hierdie lêer:
/dev/ada1 /jail ufs rw 0 1
In Mountpoint, spesifiseer die gids waarin jy die hardeskyf sal monteer; in Pass, maak seker dat jy 1 spesifiseer (in watter volgorde hierdie hardeskyf nagegaan sal word) - dit is nodig, aangesien die ufs-lêerstelsel sensitief is vir skielike kragonderbrekings . Na hierdie stappe, monteer die skyf:
mount /dev/ada1 /jail
Installeer tronk in hierdie gids. Nadat die tronk aan die gang is, moet jy dieselfde manipulasies daarin doen as in die hoofstelsel met gebruikers en die lêers /etc/login.conf, /etc/mac.conf.
aanpassing
Voordat u die nodige etikette installeer, beveel ek aan dat u al die nodige pakkette installeer; in my geval sal die etikette ingestel word met inagneming van hierdie pakkette:
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
In hierdie voorbeeld sal etikette gestel word met inagneming van die afhanklikhede van hierdie pakkette. Natuurlik kan jy dit eenvoudiger doen: vir die /usr/local/lib-lêergids en die lêers wat in hierdie gids geleë is, stel die mls/low-etikette en daaropvolgende geïnstalleerde pakkette (byvoorbeeld addisionele uitbreidings vir php) sal toegang hê die biblioteke in hierdie gids, maar dit lyk vir my beter om net toegang te gee tot die lêers wat nodig is. Stop tronk en stel mls/hoë etikette op alle lêers:
setfmac -R mls/high /jail
Wanneer punte opgestel word, sal die proses gestop word as setfmac harde skakels teëkom, in my voorbeeld het ek harde skakels in die volgende gidse uitgevee:
/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
Nadat die etikette ingestel is, moet jy die mls/low etikette vir apache stel, die eerste ding wat jy moet doen is om uit te vind watter lêers nodig is om apache te begin:
ldd /usr/local/sbin/httpd
Nadat hierdie opdrag uitgevoer is, sal afhanklikhede op die skerm vertoon word, maar die opstel van die nodige etikette op hierdie lêers sal nie genoeg wees nie, aangesien die gidse waarin hierdie lêers geleë is die mls/high-etiket het, dus moet hierdie dopgehou ook gemerk word mls/laag. Wanneer dit begin, sal apache ook die lêers uitvoer wat nodig is om dit uit te voer, en vir php kan hierdie afhanklikhede gevind word in die 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
Hierdie lys bevat mls/low tags vir alle lêers wat nodig is vir die korrekte werking van die apache en php kombinasie (vir daardie pakkette wat in my voorbeeld geïnstalleer is).
Die finale aanraking sal wees om die tronk op te stel om op die mls/gelyke vlak te loop, en apache op die mls/lae vlak. Om tronk te begin, moet jy veranderinge aan die /etc/rc.d/jail script maak, vind die jail_start funksies in hierdie script, verander die opdrag veranderlike na die vorm:
command="setpmac mls/equal $jail_program"
Die setpmac-opdrag laat die uitvoerbare lêer op die vereiste vermoëvlak, in hierdie geval mls/equal, hardloop om toegang tot alle etikette te hê. In Apache moet jy die opstartskrip /usr/local/etc/rc.d/apache24 wysig. Verander die apache24_prestart-funksie:
apache24_prestart() {
apache24_checkfib
apache24_precmd
eval "setpmac mls/low" ${command} ${apache24_flags}
}
В
Output
Hierdie metode om toegang te versprei sal 'n bykomende vlak van sekuriteit by Apache voeg (alhoewel hierdie metode geskik is vir enige ander stapel), wat boonop terselfdertyd in 'n tronk loop, vir die administrateur sal dit alles deursigtig en onopvallend gebeur.
Lys van bronne wat my gehelp het om hierdie publikasie te skryf:
Bron: will.com