Cyflwyniad
I ddarparu lefel ychwanegol o ddiogelwch gweinydd, gallwch ddefnyddio
Hyfforddiant
Mae'r dull hwn yn addas ar gyfer system ffeiliau ufs yn unig; yn yr enghraifft hon, bydd zfs yn cael ei ddefnyddio yn y brif system, ac ufs yn y carchar, yn y drefn honno. Y cam cyntaf yw ailadeiladu'r cnewyllyn; wrth osod FreeBSD, gosodwch y cod ffynhonnell.
Ar ôl gosod y system, golygwch y ffeil:
/usr/src/sys/amd64/conf/GENERIC
Dim ond un llinell sydd angen i chi ei hychwanegu at y ffeil hon:
options MAC_MLS
Bydd gan y label mls/uchel safle dominyddol dros y label mls/isel, ni fydd rhaglenni a fydd yn cael eu lansio gyda'r label mls/isel yn gallu cyrchu ffeiliau sydd â'r label mls/uchel. Ceir rhagor o fanylion am yr holl dagiau sydd ar gael yn y system FreeBSD yn hwn
Nesaf, ewch i'r cyfeiriadur / usr/src:
cd /usr/src
I ddechrau adeiladu'r cnewyllyn, rhedwch (yn yr allwedd j, nodwch nifer y creiddiau yn y system):
make -j 4 buildkernel KERNCONF=GENERIC
Ar ôl i'r cnewyllyn gael ei lunio, rhaid ei osod:
make installkernel KERNCONF=GENERIC
Ar ôl gosod y cnewyllyn, peidiwch â rhuthro i ailgychwyn y system, gan fod angen trosglwyddo defnyddwyr i'r dosbarth mewngofnodi, ar ôl ei ffurfweddu o'r blaen. Golygu'r ffeil /etc/login.conf, yn y ffeil hon mae angen i chi olygu'r dosbarth mewngofnodi diofyn, dod ag ef i'r ffurflen:
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:
Bydd y llinell :label=mls/equal yn galluogi defnyddwyr sy'n aelodau o'r dosbarth hwn i gyrchu ffeiliau sydd wedi'u marcio ag unrhyw label (mls/isel, mls/uchel). Ar ôl y triniaethau hyn, mae angen i chi ailadeiladu'r gronfa ddata a gosod y defnyddiwr gwraidd (yn ogystal â'r rhai sydd ei angen) yn y dosbarth mewngofnodi hwn:
cap_mkdb /etc/login.conf
pw usermod root -L default
Er mwyn i'r polisi fod yn berthnasol i ffeiliau yn unig, mae angen i chi olygu'r ffeil /etc/mac.conf, gan adael dim ond un llinell ynddi:
default_labels file ?mls
Mae angen i chi hefyd ychwanegu'r modiwl mac_mls.ko at autorun:
echo 'mac_mls_load="YES"' >> /boot/loader.conf
Ar ôl hyn, gallwch chi ailgychwyn y system yn ddiogel. Sut i greu
newfs -O 2 -b 64kb /dev/ada1
tunefs -l enable /dev/ada1
Ar ôl creu'r system ffeiliau ac ychwanegu multilabel, mae angen i chi ychwanegu'r gyriant caled i /etc/fstab, ychwanegwch y llinell at y ffeil hon:
/dev/ada1 /jail ufs rw 0 1
Yn Mountpoint, nodwch y cyfeiriadur y byddwch yn gosod y gyriant caled ynddo; yn Pass, gwnewch yn siŵr eich bod yn nodi 1 (ym mha drefn y bydd y gyriant caled hwn yn cael ei wirio) - mae hyn yn angenrheidiol, gan fod system ffeiliau ufs yn sensitif i doriadau pŵer sydyn . Ar ôl y camau hyn, gosodwch y ddisg:
mount /dev/ada1 /jail
Gosod carchar yn y cyfeiriadur hwn. Ar ôl i'r carchar redeg, mae angen i chi wneud yr un triniaethau ynddo ag yn y brif system gyda defnyddwyr a'r ffeiliau /etc/login.conf, /etc/mac.conf.
addasiad
Cyn gosod y tagiau angenrheidiol, rwy'n argymell gosod yr holl becynnau angenrheidiol; yn fy achos i, gosodir y tagiau gan ystyried y pecynnau hyn:
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 yr enghraifft hon, bydd labeli'n cael eu gosod gan ystyried dibyniaethau'r pecynnau hyn. Wrth gwrs, gallwch chi ei wneud yn symlach: ar gyfer y ffolder / usr / local / lib a'r ffeiliau sydd wedi'u lleoli yn y cyfeiriadur hwn, gosodwch y mls / labeli isel a bydd pecynnau gosod dilynol (er enghraifft, estyniadau ychwanegol ar gyfer php) yn gallu cyrchu y llyfrgelloedd yn y cyfeiriadur hwn, ond mae'n ymddangos yn well i mi ddarparu mynediad yn unig i'r ffeiliau hynny sy'n angenrheidiol. Stopiwch y carchar a gosodwch mls/labeli uchel ar bob ffeil:
setfmac -R mls/high /jail
Wrth osod marciau, bydd y broses yn cael ei hatal os bydd setfmac yn dod ar draws dolenni caled, yn fy enghraifft fe wnes i ddileu dolenni caled yn y cyfeiriaduron canlynol:
/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
Ar ôl i'r labeli gael eu gosod, mae angen i chi osod y mls / labeli isel ar gyfer apache, y peth cyntaf y mae angen i chi ei wneud yw darganfod pa ffeiliau sydd eu hangen i ddechrau apache:
ldd /usr/local/sbin/httpd
Ar ôl gweithredu'r gorchymyn hwn, bydd dibyniaethau'n cael eu harddangos ar y sgrin, ond ni fydd gosod y labeli angenrheidiol ar y ffeiliau hyn yn ddigon, gan fod y cyfeiriaduron y lleolir y ffeiliau hyn ynddynt â'r label mls/uchel, felly mae angen labelu'r cyfeiriaduron hyn hefyd mls/isel. Wrth ddechrau, bydd apache hefyd yn allbynnu'r ffeiliau sy'n angenrheidiol i'w redeg, ac ar gyfer php gellir dod o hyd i'r dibyniaethau hyn yn y log 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
Mae'r rhestr hon yn cynnwys mls / tagiau isel ar gyfer yr holl ffeiliau sy'n angenrheidiol ar gyfer gweithrediad cywir y cyfuniad apache a php (ar gyfer y pecynnau hynny sydd wedi'u gosod yn fy enghraifft).
Y cyffyrddiad olaf fydd ffurfweddu'r carchar i redeg ar y lefel mls/cyfartal, ac apache ar y lefel mls/isel. I ddechrau carchar, mae angen i chi wneud newidiadau i'r sgript /etc/rc.d/jail, dod o hyd i'r swyddogaethau jail_start yn y sgript hon, newid y newidyn gorchymyn i'r ffurflen:
command="setpmac mls/equal $jail_program"
Mae'r gorchymyn setpmac yn rhedeg y ffeil gweithredadwy ar y lefel gallu gofynnol, yn yr achos hwn mls/equal, er mwyn cael mynediad i bob label. Mewn apache mae angen i chi olygu'r sgript cychwyn /usr/local/etc/rc.d/apache24. Newidiwch y swyddogaeth apache24_prestart:
apache24_prestart() {
apache24_checkfib
apache24_precmd
eval "setpmac mls/low" ${command} ${apache24_flags}
}
В
Allbwn
Bydd y dull hwn o ddosbarthu mynediad yn ychwanegu lefel ychwanegol o ddiogelwch i apache (er bod y dull hwn yn addas ar gyfer unrhyw stac arall), sydd hefyd yn rhedeg yn y carchar, ar yr un pryd, i'r gweinyddwr, bydd hyn i gyd yn digwydd yn dryloyw ac yn ddisylw.
Rhestr o ffynonellau a helpodd fi wrth ysgrifennu’r cyhoeddiad hwn:
Ffynhonnell: hab.com