Sarrera
Zerbitzariaren segurtasun maila gehigarri bat eskaintzeko, erabil dezakezu
Prestakuntza
Metodo hau ufs fitxategi-sistemarako bakarrik da egokia; adibide honetan, zfs erabiliko da sistema nagusian eta ufs kartzelan, hurrenez hurren. Lehen urratsa nukleoa berreraikitzea da; FreeBSD instalatzerakoan, instalatu iturburu kodea.
Sistema instalatu ondoren, editatu fitxategia:
/usr/src/sys/amd64/conf/GENERIC
Lerro bat bakarrik gehitu behar duzu fitxategi honetara:
options MAC_MLS
mls/high etiketak posizio nagusi bat izango du mls/low etiketaren gainean, mls/low etiketarekin abiaraziko diren aplikazioek ezin izango dute mls/high etiketa duten fitxategietara sartu. FreeBSD sisteman eskuragarri dauden etiketa guztiei buruzko xehetasun gehiago honetan aurki daitezke
Ondoren, joan /usr/src direktoriora:
cd /usr/src
Nukleoa eraikitzen hasteko, exekutatu (j teklan, zehaztu sistemako nukleo kopurua):
make -j 4 buildkernel KERNCONF=GENERIC
Nukleoa konpilatu ondoren, instalatu behar da:
make installkernel KERNCONF=GENERIC
Nukleoa instalatu ondoren, ez izan presarik sistema berrabiarazteko, beharrezkoa baita erabiltzaileak saioa hasteko klasera transferitzea, aurretik konfiguratuta. Editatu /etc/login.conf fitxategia, fitxategi honetan saioa hasteko klase lehenetsia editatu behar duzu, ekarri formulariora:
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:
:label=mls/equal lerroak klase honetako kide diren erabiltzaileei edozein etiketarekin markatutako fitxategiak (mls/low, mls/high) atzitzeko aukera emango die. Manipulazio hauen ondoren, datu-basea berreraiki eta root erabiltzailea (baita behar dutenak ere) saio-hasierako klase honetan kokatu behar duzu:
cap_mkdb /etc/login.conf
pw usermod root -L default
Politika fitxategiei soilik aplikatzeko, /etc/mac.conf fitxategia editatu behar duzu, lerro bakarra utziz:
default_labels file ?mls
Mac_mls.ko modulua ere gehitu behar duzu abiarazte automatikoan:
echo 'mac_mls_load="YES"' >> /boot/loader.conf
Horren ondoren, segurtasunez berrabia dezakezu sistema. Nola sortu
newfs -O 2 -b 64kb /dev/ada1
tunefs -l enable /dev/ada1
Fitxategi-sistema sortu eta etiketa anitzekoa gehitu ondoren, disko gogorra gehitu behar duzu /etc/fstab-en, gehitu lerroa fitxategi honetara:
/dev/ada1 /jail ufs rw 0 1
Mountpoint-en, zehaztu zein direktoriotan muntatuko duzun disko gogorra; Pass-en, ziurtatu 1 zehazten duzula (zein sekuentzian egiaztatuko den disko gogor hori) - hau beharrezkoa da, ufs fitxategi-sistema bat-bateko elektrizitate-mozketen aurrean sentikorra baita. . Urrats hauen ondoren, muntatu diskoa:
mount /dev/ada1 /jail
Instalatu kartzela direktorio honetan. Kartzela exekutatzen hasi ondoren, sistema nagusian egiten diren manipulazio berdinak egin behar dituzu erabiltzaileekin eta /etc/login.conf, /etc/mac.conf fitxategiekin.
doikuntza
Beharrezko etiketak instalatu aurretik, beharrezko pakete guztiak instalatzea gomendatzen dut; nire kasuan, etiketak pakete hauek kontuan hartuta ezarriko dira:
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
Adibide honetan, etiketak ezarriko dira pakete horien menpekotasunak kontuan hartuta. Jakina, errazago egin dezakezu: /usr/local/lib karpetarako eta direktorio honetan dauden fitxategietarako, ezarri mls/low etiketak eta ondorengo instalatutako paketeak (adibidez, php-rako luzapen gehigarriak) sartu ahal izango dira. direktorio honetako liburutegiak, baina hobe iruditzen zait beharrezkoak diren fitxategi horietarako soilik sarbidea ematea. Gelditu kartzela eta ezarri mls/high etiketak fitxategi guztietan:
setfmac -R mls/high /jail
Markak ezartzerakoan, prozesua gelditu egingo da setfmac-ek esteka gogorrak aurkitzen baditu, nire adibidean hurrengo direktorioetako esteka gogorrak ezabatu ditut:
/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
Etiketak ezarri ondoren, apacherako mls/low etiketak ezarri behar dituzu, egin behar duzun lehenengo gauza apache abiarazteko zein fitxategi behar diren jakitea da:
ldd /usr/local/sbin/httpd
Komando hau exekutatu ondoren, menpekotasunak bistaratuko dira pantailan, baina fitxategi horietan beharrezko etiketak ezartzea ez da nahikoa izango, fitxategi horiek dauden direktorioek mls/high etiketa baitute, eta, beraz, direktorio hauek ere etiketatuak izan behar dira. mls/baxua. Abiatzean, apache-k exekutatzeko beharrezkoak diren fitxategiak ere aterako ditu, eta php-rako dependentzia hauek httpd-error.log erregistroan aurki daitezke.
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
Zerrenda honek mls/low etiketak ditu apache eta php konbinazioaren funtzionamendu zuzenerako beharrezkoak diren fitxategi guztientzat (nire adibidean instalatuta dauden paketeetarako).
Azken ukitua jail mls/equal mailan exekutatzeko eta apache mls/maila baxuan konfiguratzea izango da. Jail abiarazteko, /etc/rc.d/jail script-ean aldaketak egin behar dituzu, bilatu jail_start funtzioak script honetan, aldatu komando-aldagaia formulariora:
command="setpmac mls/equal $jail_program"
Setpmac komandoak fitxategi exekutagarria behar den gaitasun mailan exekutatzen du, kasu honetan mls/equal, etiketa guztietarako sarbidea izateko. Apache-n abiarazteko scripta editatu behar duzu /usr/local/etc/rc.d/apache24. Aldatu apache24_prestart funtzioa:
apache24_prestart() {
apache24_checkfib
apache24_precmd
eval "setpmac mls/low" ${command} ${apache24_flags}
}
Π
Irteera
Sarbidea banatzeko metodo honek segurtasun maila gehigarri bat gehituko dio apacheri (metodo hau beste edozein pilarako egokia den arren), eta gainera kartzela batean exekutatzen dena, aldi berean, administratzailearentzat hori guztia garden eta oharkabean gertatuko da.
Argitalpen hau idazten lagundu didaten iturrien zerrenda:
Iturria: www.habr.com