Mandatory rights distribution model sa FreeBSD

Pasiuna

Aron mahatagan ang dugang nga lebel sa seguridad sa server, mahimo nimong gamiton modelo sa mandato access distribution. Kini nga publikasyon maghulagway kung giunsa nimo pagpadagan ang apache sa usa ka prisohan nga adunay access lamang sa mga sangkap nga nanginahanglan pag-access alang sa apache ug php aron molihok sa husto. Gamit kini nga prinsipyo, mahimo nimong limitahan dili lamang ang Apache, kondili ang bisan unsang ubang stack.

Training

Kini nga pamaagi haom lang sa ufs file system; sa niini nga pananglitan, ang zfs gamiton sa main system, ug ufs sa prisohan, matag usa. Ang una nga lakang mao ang pagtukod pag-usab sa kernel; sa pag-instalar sa FreeBSD, i-install ang source code.
Human ma-install ang sistema, usba ang file:

/usr/src/sys/amd64/conf/GENERIC

Kinahanglan ka lang magdugang usa ka linya sa kini nga file:

options     MAC_MLS

Ang mls/high label adunay dominanteng posisyon sa mls/low label, ang mga aplikasyon nga ilusad gamit ang mls/low label dili maka-access sa mga file nga adunay mls/high label. Ang dugang nga mga detalye bahin sa tanan nga magamit nga mga tag sa sistema sa FreeBSD makita dinhi pagpangulo.
Sunod, adto sa / usr / src direktoryo:

cd /usr/src

Sa pagsugod sa pagtukod sa kernel, pagdagan (sa j key, ipiho ang gidaghanon sa mga cores sa sistema):

make -j 4 buildkernel KERNCONF=GENERIC

Human ma-compile ang kernel, kinahanglan kining i-install:

make installkernel KERNCONF=GENERIC

Human ma-install ang kernel, ayaw pagdali sa pag-reboot sa sistema, tungod kay kinahanglan nga ibalhin ang mga tiggamit sa klase sa pag-login, nga na-configure kini kaniadto. I-edit ang /etc/login.conf file, sa niini nga file kinahanglan nimo nga usbon ang default login class, dad-a kini sa porma:

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:

Ang linya:label=mls/equal magtugot sa mga tiggamit nga miyembro niini nga klase sa pag-access sa mga file nga gimarkahan sa bisan unsang label (mls/low, mls/high). Pagkahuman niini nga mga manipulasyon, kinahanglan nimo nga tukuron ang database ug ibutang ang gamut nga tiggamit (ingon man kadtong nanginahanglan niini) sa kini nga klase sa pag-login:

cap_mkdb /etc/login.conf
pw usermod root -L default

Aron ang polisiya magamit ra sa mga file, kinahanglan nimong usbon ang /etc/mac.conf file, magbilin lang ug usa ka linya niini:

default_labels file ?mls

Kinahanglan mo usab nga idugang ang mac_mls.ko module sa autorun:

echo 'mac_mls_load="YES"' >> /boot/loader.conf

Pagkahuman niini, mahimo nimong luwas nga i-reboot ang sistema. Unsaon paghimo bilanggoan Mabasa nimo kini sa usa sa akong mga publikasyon. Apan sa wala pa maghimo usa ka prisohan, kinahanglan nimo nga idugang ang usa ka hard drive ug maghimo usa ka file system niini ug i-enable ang multilabel niini, paghimo usa ka ufs2 file system nga adunay gidak-on nga cluster nga 64kb:

newfs -O 2 -b 64kb /dev/ada1
tunefs -l enable /dev/ada1

Human sa paghimo sa file system ug pagdugang sa multilabel, kinahanglan nimo nga idugang ang hard drive sa / etc / fstab, idugang ang linya niini nga file:

/dev/ada1               /jail  ufs     rw              0       1

Sa Mountpoint, ipiho ang direktoryo diin imong i-mount ang hard drive; sa Pass, siguruha nga ipiho ang 1 (sa unsang pagkasunod-sunod nga kini nga hard drive susihon) - kinahanglan kini, tungod kay ang ufs file system sensitibo sa kalit nga pagputol sa kuryente . Pagkahuman niini nga mga lakang, i-mount ang disk:

mount /dev/ada1 /jail

I-install ang jail sa kini nga direktoryo. Pagkahuman sa prisohan nga nagdagan, kinahanglan nimo nga buhaton ang parehas nga pagmaniobra niini sama sa panguna nga sistema nga adunay mga tiggamit ug mga file /etc/login.conf, /etc/mac.conf.

kausaban

Sa wala pa i-install ang kinahanglan nga mga tag, girekomenda nako ang pag-install sa tanan nga kinahanglan nga mga pakete; sa akong kaso, ang mga tag itakda nga gikonsiderar kini nga mga pakete:

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 

Sa kini nga pananglitan, ang mga label itakda nga gikonsiderar ang mga dependency sa kini nga mga pakete. Siyempre, mahimo nimo kini nga mas simple: para sa /usr/local/lib folder ug ang mga file nga nahimutang niini nga direktoryo, itakda ang mls/low label ug sunod-sunod nga na-install nga mga pakete (pananglitan, dugang nga mga extension para sa php) ang maka-access ang mga librarya niini nga direktoryo, apan daw mas maayo alang kanako ang paghatag og access sa mga file nga gikinahanglan lamang. Hunonga ang prisohan ug ibutang ang mls/high label sa tanang file:

setfmac -R mls/high /jail

Kung magbutang mga marka, ang proseso mahunong kung makit-an sa setfmac ang mga gahi nga link, sa akong pananglitan gitangtang nako ang mga gahi nga link sa mga mosunud nga direktoryo:

/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

Human mabutang ang mga label, kinahanglan nimo nga ibutang ang mls/low labels para sa apache, ang unang butang nga kinahanglan nimong buhaton mao ang pagpangita kung unsa nga mga file ang gikinahanglan sa pagsugod sa apache:

ldd /usr/local/sbin/httpd

Human sa pagpatuman niini nga sugo, ang mga dependency ipakita sa screen, apan ang pagbutang sa gikinahanglan nga mga label niini nga mga file dili igo, tungod kay ang mga direktoryo diin kini nga mga file nahimutang adunay mls / taas nga label, mao nga kini nga mga direktoryo kinahanglan usab nga markahan mls/ubos. Sa pagsugod, ang apache magpagawas usab sa mga file nga gikinahanglan sa pagpadagan niini, ug alang sa php kini nga mga dependency makita sa 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

Kini nga lista naglangkob sa mls/low tags para sa tanang file nga gikinahanglan para sa saktong operasyon sa apache ug php nga kombinasyon (alang sa mga package nga gi-install sa akong example).

Ang katapusan nga paghikap mao ang pag-configure sa prisohan nga modagan sa mls / patas nga lebel, ug apache sa mls / ubos nga lebel. Aron masugdan ang prisohan, kinahanglan kang magbag-o sa /etc/rc.d/jail script, pangitaa ang jail_start functions niini nga script, usba ang command variable sa porma:

command="setpmac mls/equal $jail_program"

Ang setpmac command nagpadagan sa executable file sa gikinahanglan nga kapabilidad nga lebel, sa niini nga kaso mls/equal, aron adunay access sa tanang label. Sa apache kinahanglan nimong usbon ang startup script /usr/local/etc/rc.d/apache24. Usba ang apache24_prestart function:

apache24_prestart() {
        apache24_checkfib
        apache24_precmd
        eval "setpmac mls/low" ${command} ${apache24_flags}
}

Π’ opisyal Ang manwal adunay laing pananglitan, apan wala nako kini magamit tungod kay nagpadayon ako sa pagkuha og mensahe mahitungod sa kawalay katakus sa paggamit sa setpmac command.

konklusyon

Kini nga pamaagi sa pag-apod-apod sa pag-access makadugang usa ka dugang nga lebel sa seguridad sa apache (bisan kung kini nga pamaagi angay alang sa bisan unsang uban nga stack), nga dugang nga nagdagan sa usa ka prisohan, sa samang higayon, alang sa tagdumala kining tanan mahitabo nga klaro ug dili mamatikdan.

Listahan sa mga tinubdan nga nakatabang kanako sa pagsulat niini nga publikasyon:

https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/mac.html

Source: www.habr.com

Idugang sa usa ka comment