Esittely
Voit tarjota palvelimen lisäsuojaustasoa käyttämällä
Koulutus
Tämä menetelmä soveltuu vain ufs-tiedostojärjestelmään; tässä esimerkissä zfs käytetään pääjärjestelmässä ja ufs vankilassa, vastaavasti. Ensimmäinen askel on rakentaa ydin uudelleen; kun asennat FreeBSD:tä, asenna lähdekoodi.
Kun järjestelmä on asennettu, muokkaa tiedostoa:
/usr/src/sys/amd64/conf/GENERIC
Sinun tarvitsee vain lisätä yksi rivi tähän tiedostoon:
options MAC_MLS
MLS/High-merkinnällä on hallitseva asema mls/low-tunnisteeseen nähden, sovellukset, jotka käynnistetään mls/low-tunnisteella, eivät pääse käsiksi tiedostoihin, joissa on mls/high-tunniste. Lisätietoja kaikista FreeBSD-järjestelmän käytettävissä olevista tageista löytyy tästä
Siirry seuraavaksi /usr/src-hakemistoon:
cd /usr/src
Aloita ytimen rakentaminen suorittamalla (määritä j-näppäimessä järjestelmän ytimien määrä):
make -j 4 buildkernel KERNCONF=GENERIC
Kun ydin on käännetty, se on asennettava:
make installkernel KERNCONF=GENERIC
Kun olet asentanut ytimen, älä kiirehdi käynnistämään järjestelmää uudelleen, koska käyttäjät on siirrettävä kirjautumisluokkaan, kun se on aiemmin määritetty. Muokkaa /etc/login.conf-tiedostoa, tässä tiedostossa sinun täytyy muokata oletuskirjautumisluokkaa, tuoda se lomakkeeseen:
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:
Rivi :label=mls/equal sallii tämän luokan jäsenten käyttäjille pääsyn tiedostoihin, jotka on merkitty millä tahansa tunnisteella (mls/low, mls/high). Näiden manipulointien jälkeen sinun on rakennettava tietokanta uudelleen ja asetettava pääkäyttäjä (ja ne, jotka sitä tarvitsevat) tähän kirjautumisluokkaan:
cap_mkdb /etc/login.conf
pw usermod root -L default
Jotta käytäntö koskee vain tiedostoja, sinun on muokattava /etc/mac.conf-tiedostoa jättämällä siihen vain yksi rivi:
default_labels file ?mls
Sinun on myös lisättävä mac_mls.ko-moduuli automaattiseen käynnistykseen:
echo 'mac_mls_load="YES"' >> /boot/loader.conf
Tämän jälkeen voit turvallisesti käynnistää järjestelmän uudelleen. Kuinka luoda
newfs -O 2 -b 64kb /dev/ada1
tunefs -l enable /dev/ada1
Kun olet luonut tiedostojärjestelmän ja lisännyt multilabelin, sinun on lisättävä kiintolevy tiedostoon /etc/fstab, lisää rivi tähän tiedostoon:
/dev/ada1 /jail ufs rw 0 1
Määritä Mountpointissa hakemisto, johon aiot asentaa kiintolevyn; Passissa muista määrittää 1 (missä järjestyksessä tämä kiintolevy tarkistetaan) - tämä on välttämätöntä, koska ufs-tiedostojärjestelmä on herkkä äkillisille sähkökatkoille . Asenna levy näiden vaiheiden jälkeen:
mount /dev/ada1 /jail
Asenna vankila tähän hakemistoon. Kun vankila on suoritettu, sinun on tehtävä siinä samat käsittelyt kuin pääjärjestelmässä käyttäjille ja tiedostoille /etc/login.conf, /etc/mac.conf.
säätö
Ennen tarvittavien tunnisteiden asentamista suosittelen kaikkien tarvittavien pakettien asentamista; minun tapauksessani tagit asetetaan ottaen huomioon nämä paketit:
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
Tässä esimerkissä tarrat asetetaan ottaen huomioon näiden pakettien riippuvuudet. Tietysti voit tehdä sen yksinkertaisemmin: aseta /usr/local/lib-kansiolle ja tässä hakemistossa oleville tiedostoille mls/low-tunnisteet ja myöhemmät asennetut paketit (esimerkiksi php:n lisälaajennukset) voivat käyttää tämän hakemiston kirjastot, mutta mielestäni on parempi antaa pääsy vain tarpeellisiin tiedostoihin. Lopeta vankila ja aseta mls/high-tunnisteet kaikille tiedostoille:
setfmac -R mls/high /jail
Kun asetat merkkejä, prosessi pysähtyy, jos setfmac kohtaa kovia linkkejä, esimerkissäni poistin kovia linkkejä seuraavista hakemistoista:
/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
Kun tarrat on asetettu, sinun on asetettava mls/low-tunnisteet apachelle. Ensimmäinen asia, joka sinun on tehtävä, on selvittää, mitä tiedostoja tarvitaan apachen käynnistämiseen:
ldd /usr/local/sbin/httpd
Tämän komennon suorittamisen jälkeen riippuvuudet näkyvät näytöllä, mutta tarvittavien nimikkeiden asettaminen näille tiedostoille ei riitä, koska hakemistoissa, joissa nämä tiedostot sijaitsevat, on mls/high-tunniste, joten myös nämä hakemistot on nimettävä ml/alhainen. Käynnistettäessä apache tulostaa myös sen suorittamiseen tarvittavat tiedostot, ja php:lle nämä riippuvuudet löytyvät httpd-error.log-lokista.
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
Tämä luettelo sisältää mls/low-tunnisteet kaikille tiedostoille, jotka ovat välttämättömiä apache- ja php-yhdistelmän oikean toiminnan kannalta (niille paketeille, jotka on asennettu esimerkissäni).
Viimeinen silaus on määrittää vankila toimimaan mls/equal-tasolla ja apache mls/low-tasolla. Aloitaksesi jail, sinun on tehtävä muutoksia /etc/rc.d/jail-skriptiin, etsittävä jail_start-funktiot tästä skriptistä, muutettava komentomuuttuja muotoon:
command="setpmac mls/equal $jail_program"
Komento setpmac ajaa suoritettavan tiedoston vaaditulla ominaisuustasolla, tässä tapauksessa mls/equal, päästäkseen käsiksi kaikkiin tarroihin. Apachessa sinun on muokattava käynnistyskomentosarjaa /usr/local/etc/rc.d/apache24. Muuta apache24_prestart-funktiota:
apache24_prestart() {
apache24_checkfib
apache24_precmd
eval "setpmac mls/low" ${command} ${apache24_flags}
}
В
johtopäätös
Tämä pääsynjakotapa lisää lisäturvaa apachelle (vaikka tämä menetelmä sopii kaikille muille pinoille), joka lisäksi toimii vankilassa, samalla kun järjestelmänvalvojalle kaikki tämä tapahtuu läpinäkyvästi ja huomaamattomasti.
Luettelo lähteistä, jotka auttoivat minua tämän julkaisun kirjoittamisessa:
Lähde: will.com