Inngangur
Til að veita aukið öryggisstig netþjóns geturðu notað
Þjálfun
Þessi aðferð hentar aðeins fyrir ufs skráarkerfið; í þessu dæmi verður zfs notað í aðalkerfinu og ufs í fangelsinu. Fyrsta skrefið er að endurbyggja kjarnann; þegar þú setur upp FreeBSD skaltu setja upp frumkóðann.
Eftir að kerfið hefur verið sett upp skaltu breyta skránni:
/usr/src/sys/amd64/conf/GENERIC
Þú þarft aðeins að bæta einni línu við þessa skrá:
options MAC_MLS
mls/hátt merki mun hafa yfirburðastöðu yfir mls/lágt merki, forrit sem verða opnuð með mls/lágt merki munu ekki geta nálgast skrár sem hafa mls/hátt merki. Frekari upplýsingar um öll tiltæk merki í FreeBSD kerfinu er að finna í þessu
Næst skaltu fara í /usr/src möppuna:
cd /usr/src
Til að byrja að byggja kjarnann skaltu keyra (í j lyklinum, tilgreindu fjölda kjarna í kerfinu):
make -j 4 buildkernel KERNCONF=GENERIC
Eftir að kjarninn hefur verið settur saman verður að setja hann upp:
make installkernel KERNCONF=GENERIC
Eftir að kjarnann hefur verið settur upp skaltu ekki flýta þér að endurræsa kerfið, þar sem það er nauðsynlegt að flytja notendur yfir í innskráningarflokkinn, eftir að hafa stillt hann áður. Breyttu /etc/login.conf skránni, í þessari skrá þarftu að breyta sjálfgefna innskráningarflokknum, færðu það á formið:
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:
Línan :label=mls/equal mun leyfa notendum sem eru meðlimir í þessum flokki að fá aðgang að skrám sem eru merktar með hvaða merki sem er (mls/low, mls/high). Eftir þessar aðgerðir þarftu að endurbyggja gagnagrunninn og setja rótarnotandann (sem og þá sem þurfa á honum að halda) í þennan innskráningarflokk:
cap_mkdb /etc/login.conf
pw usermod root -L default
Til þess að stefnan eigi aðeins við um skrár þarftu að breyta /etc/mac.conf skránni og skilja aðeins eftir eina línu í henni:
default_labels file ?mls
Þú þarft líka að bæta við mac_mls.ko einingunni til að keyra sjálfvirkt:
echo 'mac_mls_load="YES"' >> /boot/loader.conf
Eftir þetta geturðu örugglega endurræst kerfið. Hvernig á að búa til
newfs -O 2 -b 64kb /dev/ada1
tunefs -l enable /dev/ada1
Eftir að hafa búið til skráarkerfið og bætt við fjölmerki þarftu að bæta harða disknum við /etc/fstab, bæta línunni við þessa skrá:
/dev/ada1 /jail ufs rw 0 1
Í Mountpoint, tilgreindu möppuna þar sem þú munt setja harða diskinn upp; í Pass, vertu viss um að tilgreina 1 (í hvaða röð þessi harði diskur verður athugaður) - þetta er nauðsynlegt, þar sem ufs skráarkerfið er viðkvæmt fyrir skyndilegum rafmagnsleysi . Eftir þessi skref skaltu tengja diskinn:
mount /dev/ada1 /jail
Settu upp fangelsi í þessari möppu. Eftir að fangelsið er í gangi þarftu að gera sömu aðgerðirnar í því og í aðalkerfinu með notendur og skrárnar /etc/login.conf, /etc/mac.conf.
aðlögun
Áður en þú setur upp nauðsynleg merki mæli ég með því að setja upp alla nauðsynlega pakka; í mínu tilfelli verða merkin stillt með hliðsjón af þessum pakka:
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
Í þessu dæmi verða merki sett með hliðsjón af ósjálfstæði þessara pakka. Auðvitað geturðu gert það einfaldara: fyrir /usr/local/lib möppuna og skrárnar sem eru staðsettar í þessari möppu, stilltu mls/low merkimiðana og síðari uppsettir pakkar (til dæmis viðbótarviðbætur fyrir php) munu fá aðgang að söfnin í þessari möppu, en mér finnst betra að veita aðeins aðgang að þeim skrám sem eru nauðsynlegar. Stöðvaðu fangelsi og stilltu mls/high labels á allar skrár:
setfmac -R mls/high /jail
Þegar merkingar eru settar verður ferlið stöðvað ef setfmac rekst á harða hlekki, í mínu dæmi eyddi ég hörðum hlekkjum í eftirfarandi möppum:
/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
Eftir að merkimiðarnir hafa verið stilltir þarftu að stilla mls/low merki fyrir apache, það fyrsta sem þú þarft að gera er að finna út hvaða skrár þarf til að ræsa apache:
ldd /usr/local/sbin/httpd
Eftir að þessi skipun hefur verið keyrð munu ósjálfstæði birtast á skjánum, en það er ekki nóg að setja nauðsynlega merkimiða á þessar skrár, þar sem möppurnar sem þessar skrár eru í eru með mls/high merki, þannig að þessar möppur þurfa líka að vera merktar mls/lágt. Þegar byrjað er mun apache einnig gefa út þær skrár sem eru nauðsynlegar til að keyra það, og fyrir php er hægt að finna þessar ósjálfstæði í 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
Þessi listi inniheldur mls/low tags fyrir allar skrár sem eru nauðsynlegar fyrir rétta virkni apache og php samsetningarinnar (fyrir þá pakka sem eru settir upp í dæminu mínu).
Síðasta snertingin verður að stilla fangelsi til að keyra á mls/jafnvægi og apache á mls/lágmarki. Til að hefja fangelsi þarftu að gera breytingar á /etc/rc.d/jail forskriftinni, finna jail_start aðgerðirnar í þessu handriti, breyta skipanabreytunni í formið:
command="setpmac mls/equal $jail_program"
Setpmac skipunin keyrir keyrsluskrána á tilskildu getustigi, í þessu tilviki mls/equal, til að hafa aðgang að öllum merkimiðum. Í apache þarftu að breyta ræsiforritinu /usr/local/etc/rc.d/apache24. Breyttu apache24_prestart aðgerðinni:
apache24_prestart() {
apache24_checkfib
apache24_precmd
eval "setpmac mls/low" ${command} ${apache24_flags}
}
В
Output
Þessi aðferð til að dreifa aðgangi mun bæta auknu öryggisstigi við apache (þó að þessi aðferð henti öllum öðrum stafla), sem að auki keyrir í fangelsi, á sama tíma, fyrir stjórnandann mun allt þetta gerast gagnsætt og óséður.
Listi yfir heimildir sem hjálpuðu mér við að skrifa þetta rit:
Heimild: www.habr.com