Aféierung
Fir en zousätzleche Niveau vun der Serversécherheet ze bidden, kënnt Dir benotzen
Virbereedung
Dës Method ass nëmme gëeegent fir den ufs Dateiesystem; an dësem Beispill gëtt zfs am Haaptsystem benotzt, respektiv ufs am Prisong. Den éischte Schrëtt ass de Kernel nei opzebauen; wann Dir FreeBSD installéiert, installéiert de Quellcode.
Nodeems de System installéiert ass, ännert d'Datei:
/usr/src/sys/amd64/conf/GENERIC
Dir musst nëmmen eng Zeil op dës Datei addéieren:
options MAC_MLS
Den mls / héich Label wäert eng dominant Positioun iwwer den mls / niddereg Label hunn, Uwendungen déi mam mls / niddereg Label lancéiert ginn, kënnen net Zougang zu Dateien kréien déi den mls / héich Label hunn. Méi Detailer iwwer all verfügbar Tags am FreeBSD System kënnen an dësem fonnt ginn
Als nächst gitt op den /usr/src Verzeichnis:
cd /usr/src
Fir unzefänken de Kärel ze bauen, lafen (am j Schlëssel, spezifizéiert d'Zuel vun de Kären am System):
make -j 4 buildkernel KERNCONF=GENERIC
Nodeems de Kernel kompiléiert ass, muss et installéiert ginn:
make installkernel KERNCONF=GENERIC
Nodeems Dir de Kernel installéiert hutt, presséiert net de System nei ze starten, well et néideg ass d'Benotzer an d'Loginklass ze transferéieren, nodeems se se virdru konfiguréiert hunn. Ännert d'Datei /etc/login.conf, an dëser Datei musst Dir d'Standard Login Klass änneren, bréngt se op d'Form:
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:
D'Linn :label=mls/equal erlaabt de Benotzer, déi Member vun dëser Klass sinn, Zougang zu Dateien ze kréien, déi mat all Label markéiert sinn (mls/low, mls/high). No dëse Manipulatioune musst Dir d'Datebank nei opbauen an de Root Benotzer (wéi och déi, déi et brauchen) an dëser Login Klass setzen:
cap_mkdb /etc/login.conf
pw usermod root -L default
Fir datt d'Politik nëmmen op Dateien gëlt, musst Dir d'Datei /etc/mac.conf änneren, nëmmen eng Zeil dran hannerloossen:
default_labels file ?mls
Dir musst och de mac_mls.ko Modul fir Autorun addéieren:
echo 'mac_mls_load="YES"' >> /boot/loader.conf
Duerno kënnt Dir de System sécher nei starten. Wéi ze schafen
newfs -O 2 -b 64kb /dev/ada1
tunefs -l enable /dev/ada1
Nodeems Dir de Dateiesystem erstallt hutt a Multilabel bäigefüügt hutt, musst Dir d'Harddisk op /etc/fstab addéieren, d'Linn op dës Datei addéieren:
/dev/ada1 /jail ufs rw 0 1
Am Mountpoint, spezifizéiert de Verzeechnes an deem Dir d'Harddisk montéiert; am Pass, gitt sécher 1 ze spezifizéieren (a wéi enger Sequenz dës Festplack iwwerpréift gëtt) - dat ass néideg, well den ufs Dateisystem sensibel ass fir plötzlech Stroumschnëtt . No dëse Schrëtt, montéiert den Disk:
mount /dev/ada1 /jail
Installéiert de Prisong an dësem Verzeichnis. Nodeems de Prisong leeft, musst Dir déiselwecht Manipulatioune maachen wéi am Haaptsystem mat Benotzer an de Dateien /etc/login.conf, /etc/mac.conf.
Upassung
Ier Dir déi néideg Tags installéiert, empfeelen ech Iech all déi néideg Packagen z'installéieren; a mengem Fall ginn d'Tags festgeluecht andeems Dir dës Packagen berücksichtegt:
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
An dësem Beispill ginn Etiketten agestallt andeems d'Ofhängegkeete vun dëse Packagen berücksichtegt ginn. Natierlech kënnt Dir et méi einfach maachen: fir den /usr/local/lib Dossier an d'Dateien an dësem Verzeichnis, setze d'mls/low Etiketten a spéider installéiert Packagen (zum Beispill zousätzlech Extensiounen fir php) kënnen Zougang d'Bibliothéiken an dësem Verzeichnis, awer et schéngt mir besser nëmmen Zougang zu deenen Dateien ze bidden déi néideg sinn. Stop Prisong a setzt mls / héich Etiketten op all Dateien:
setfmac -R mls/high /jail
Wann Dir Marke setzt, gëtt de Prozess gestoppt wann setfmac schwéier Linken opstinn, a mengem Beispill hunn ech schwéier Linken an de folgende Verzeichnisser geläscht:
/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
Nodeems d'Etiketten agestallt goufen, musst Dir d'mls / Low Etiketten fir Apache setzen, dat éischt wat Dir maache musst ass erauszefannen wéi eng Dateie gebraucht ginn fir Apache ze starten:
ldd /usr/local/sbin/httpd
Nom Ausféierung vun dësem Kommando ginn Ofhängegkeeten um Bildschierm ugewisen, awer déi néideg Etiketten op dës Dateien ze setzen ass net genuch, well d'Verzeichnisser an deenen dës Dateie sinn den mls/high Label hunn, sou datt dës Verzeichnisser och markéiert musse ginn mls / niddereg. Wann Dir ufänkt, wäert Apache och d'Dateien ausginn, déi néideg sinn fir se ze lafen, a fir php kënnen dës Ofhängegkeeten am httpd-error.log Log fonnt ginn.
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
Dës Lëscht enthält mls / Low Tags fir all Dateien déi néideg sinn fir déi richteg Operatioun vun der Apache a PHP Kombinatioun (fir déi Packagen déi a mengem Beispill installéiert sinn).
De finalen Touch ass de Prisong ze konfiguréieren fir um mls / gläiche Niveau ze lafen, an Apache um mls / nidderegen Niveau. Fir de Prisong ze starten, musst Dir Ännerungen am /etc/rc.d/jail Skript maachen, d'Jail_start Funktiounen an dësem Skript fannen, d'Kommandovariabel op d'Form änneren:
command="setpmac mls/equal $jail_program"
De setpmac Kommando leeft déi ausführbar Datei um erfuerderleche Kapazitéitsniveau, an dësem Fall mls/gläich, fir Zougang zu all Etiketten ze hunn. An Apache musst Dir de Startup-Skript änneren /usr/local/etc/rc.d/apache24. Ännert d'apache24_prestart Funktioun:
apache24_prestart() {
apache24_checkfib
apache24_precmd
eval "setpmac mls/low" ${command} ${apache24_flags}
}
В
Konklusioun
Dës Method fir den Zougang ze verdeelen wäert en zousätzleche Sécherheetsniveau fir Apache bäidroen (obwuel dës Method fir all aner Stack gëeegent ass), deen zousätzlech an engem Prisong leeft, zur selwechter Zäit fir den Administrateur all dëst wäert transparent an onmerkbar geschéien.
Lëscht vu Quellen déi mir gehollef hunn dës Publikatioun ze schreiwen:
Source: will.com