Pîrozbahiyê
Ji bo peydakirina astek zêde ya ewlehiya serverê, hûn dikarin bikar bînin
Amadekirin
Ev rêbaz tenê ji bo pergala pelê ufs-ê maqûl e; di vê nimûneyê de, zfs dê di pergala sereke de, û ufs di girtîgehê de, bi rêzdarî were bikar anîn. Pêngava yekem ji nû ve avakirina kernelê ye; Dema ku FreeBSD saz bikin, koda çavkaniyê saz bikin.
Piştî ku pergalê saz kirin, pelê biguherînin:
/usr/src/sys/amd64/conf/GENERIC
Hûn tenê hewce ne ku rêzek li vê pelê zêde bikin:
options MAC_MLS
Etîketa mls/bilind dê li ser etîketa mls/kêm xwedî pozîsyonek serdest be, sepanên ku dê bi etîketa mls/kêm werin destpêkirin dê nikaribin bigihîjin pelên ku xwedî etîketa mls/bilind in. Zêdetir hûrgulî li ser hemî etîketên berdest ên di pergala FreeBSD de di vê de têne dîtin
Piştre, biçin pelrêça /usr/src:
cd /usr/src
Ji bo ku hûn dest bi avakirina kernelê bikin, bixebitin (di bişkojka j-yê de, di pergalê de hejmara navokan diyar bikin):
make -j 4 buildkernel KERNCONF=GENERIC
Piştî ku kernel hate berhev kirin, divê were saz kirin:
make installkernel KERNCONF=GENERIC
Piştî sazkirina kernelê, lez nekin ku pergalê ji nû ve bidin destpêkirin, ji ber ku pêdivî ye ku bikarhêneran veguhezînin pola têketinê, ku berê wê mîheng kiriye. Pelê /etc/login.conf biguherîne, di vê pelê de hûn hewce ne ku çîna têketinê ya xwerû biguherînin, wê bînin forma:
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:
Rêza :label=mls/equal dê bihêle ku bikarhênerên ku endamên vê polê ne bigihîjin pelên ku bi her etîketê hatine nîşankirin (mls/kêm, mls/bilind). Piştî van manipulasyonan, hûn hewce ne ku databasê ji nû ve ava bikin û bikarhênerê root (û her weha yên ku jê re hewce ne) di vê çîna têketinê de bi cih bikin:
cap_mkdb /etc/login.conf
pw usermod root -L default
Ji bo ku polîtîka tenê li ser pelan bicîh bibe, hûn hewce ne ku pelê /etc/mac.conf biguherînin, tenê yek rêzek tê de bihêlin:
default_labels file ?mls
Di heman demê de hûn hewce ne ku modula mac_mls.ko li otomatê zêde bikin:
echo 'mac_mls_load="YES"' >> /boot/loader.conf
Piştî vê yekê, hûn dikarin bi ewlehî pergalê ji nû ve saz bikin. Çawa çêbikin
newfs -O 2 -b 64kb /dev/ada1
tunefs -l enable /dev/ada1
Piştî afirandina pergala pelan û lê zêdekirina multilabel, hûn hewce ne ku dîska hişk li /etc/fstab zêde bikin, rêzê li vê pelê zêde bikin:
/dev/ada1 /jail ufs rw 0 1
Di Mountpoint de, pelrêça ku hûn ê dîska hişk lê siwar bikin diyar bikin; Di Pass de, pê ewle bin ku 1 diyar bikin (di kîjan rêzê de dê ev dîska hişk were kontrol kirin) - ev pêdivî ye, ji ber ku pergala pelê ufs ji qutkirina hêzê ya ji nişka ve hesas e. . Piştî van gavan, dîskê siwar bikin:
mount /dev/ada1 /jail
Di vê pelrêçê de zindanê saz bikin. Piştî ku girtîgeh dimeşe, hûn hewce ne ku di wê de heman manîpulasyonên ku di pergala sereke de bi bikarhêneran û pelan re bikin /etc/login.conf, /etc/mac.conf.
ligorî
Berî sazkirina etîketên pêwîst, ez pêşniyar dikim ku hemî pakêtên pêwîst saz bikin; di rewşa min de, etîket dê li gorî van pakêtan werin danîn:
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
Di vê nimûneyê de, etîket dê li gorî girêdanên van pakêtan werin danîn. Bê guman, hûn dikarin wê hêsantir bikin: ji bo peldanka /usr/local/lib û pelên ku di vê pelrêçayê de cih digirin, etîketên mls/kêm û pakêtên sazkirî yên paşîn (mînakî, pêvekên din ên ji bo php) dê karibin bigihîjin pirtûkxaneyên di vê pelrêçayê de, lê ji min re çêtir xuya dike ku tenê bi wan pelên ku hewce ne bigihîjin. Girtîgehê rawestînin û li ser hemî pelan etîketên mls/bilind saz bikin:
setfmac -R mls/high /jail
Dema ku nîşanan danîne, ger setfmac bi girêdanên dijwar re rû bi rû bimîne, pêvajo dê were sekinandin, di mînaka xwe de min girêdanên hişk di pelrêçên jêrîn de jêbirin:
/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
Piştî ku etîket hatin danîn, hûn hewce ne ku etîketên mls/kêm ji bo apache saz bikin, yekem tiştê ku divê hûn bikin ev e ku hûn fêr bibin ka ji bo destpêkirina apache çi pelan hewce ne:
ldd /usr/local/sbin/httpd
Piştî cîbicîkirina vê fermanê, dê girêdayî li ser ekranê werin xuyang kirin, lê danîna etîketên pêwîst li ser van pelan dê têrê neke, ji ber ku pelrêçiyên ku ev pel tê de ne, nîşana mls/high hene, ji ber vê yekê jî pêdivî ye ku ev pelrêç jî bêne nîşankirin. mls/kêm. Dema ku dest pê dike, apache dê pelên ku ji bo xebitandina wê hewce ne jî derxîne, û ji bo php-ê ev girêdan dikarin di têketina httpd-error.log de werin dîtin.
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
Di vê navnîşê de ji bo hemî pelên ku ji bo xebata rast a kombînasyona apache û php-ê hewce ne (ji bo wan pakêtên ku di mînaka min de hatine saz kirin) tagên mls / kêm vedihewîne.
Têkiliya paşîn dê mîhengkirina zindanê be ku di asta mls / wekhev de, û apache di asta mls / nizm de bixebite. Ji bo destpêkirina zindanê, hûn hewce ne ku di skrîpta /etc/rc.d/jail de guhertinan bikin, fonksiyonên jail_start di vê skrîptê de bibînin, guhêrbara fermanê bi formê biguherînin:
command="setpmac mls/equal $jail_program"
Fermana setpmac pelê îcrakar di asta kapasîteya pêwîst de dimeşîne, di vê rewşê de mls/wekhev, da ku bigihîje hemî etîketan. Di apache de hûn hewce ne ku skrîpta destpêkê /usr/local/etc/rc.d/apache24 biguherînin. Fonksiyona apache24_prestart biguherînin:
apache24_prestart() {
apache24_checkfib
apache24_precmd
eval "setpmac mls/low" ${command} ${apache24_flags}
}
В
encamê
Ev rêbaza belavkirina gihîştinê dê astek ewlehiyê ya din li apache zêde bike (tevî ku ev rêbaz ji bo stûnek din guncan e), ku ji bilî vê yekê di zindanê de dimeşe, di heman demê de, ji bo rêveberê ev hemî dê bi zelalî û bêhiş çêbibin.
Navnîşa çavkaniyên ku di nivîsandina vê weşanê de alîkariya min kirin:
Source: www.habr.com