Pasiuna
Aron mahatagan ang dugang nga lebel sa seguridad sa server, mahimo nimong gamiton
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
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
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}
}
Π
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:
Source: www.habr.com