์๊ฐ
์ถ๊ฐ ์์ค์ ์๋ฒ ๋ณด์์ ์ ๊ณตํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ๋ จ
์ด ๋ฐฉ๋ฒ์ ufs ํ์ผ ์์คํ
์๋ง ์ ํฉํฉ๋๋ค. ์ด ์์์๋ zfs๊ฐ ๊ธฐ๋ณธ ์์คํ
์์ ์ฌ์ฉ๋๊ณ ufs๊ฐ Jail์์ ๊ฐ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ์ปค๋์ ๋ค์ ๋น๋ํ๋ ๊ฒ์
๋๋ค. FreeBSD๋ฅผ ์ค์นํ ๋ ์์ค ์ฝ๋๋ฅผ ์ค์นํ์ญ์์ค.
์์คํ
์ด ์ค์น๋ ํ ํ์ผ์ ํธ์งํ์ญ์์ค.
/usr/src/sys/amd64/conf/GENERIC
์ด ํ์ผ์ ํ ์ค๋ง ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
options MAC_MLS
mls/high ๋ ์ด๋ธ์ mls/low ๋ ์ด๋ธ๋ณด๋ค ์ฐ์ธํ ์์น๋ฅผ ๊ฐ์ง๋ฉฐ, mls/low ๋ ์ด๋ธ๋ก ์์๋๋ ์์ฉ ํ๋ก๊ทธ๋จ์ mls/high ๋ ์ด๋ธ์ด ์๋ ํ์ผ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. FreeBSD ์์คํ
์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ํ๊ทธ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค.
๋ค์์ผ๋ก /usr/src ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค.
cd /usr/src
์ปค๋ ๋น๋๋ฅผ ์์ํ๋ ค๋ฉด ๋ค์์ ์คํํ์ธ์(j ํค์ ์์คํ ์ ์ฝ์ด ์ ์ง์ ).
make -j 4 buildkernel KERNCONF=GENERIC
์ปค๋์ ์ปดํ์ผํ ํ ์ค์นํด์ผ ํฉ๋๋ค.
make installkernel KERNCONF=GENERIC
์ปค๋์ ์ค์นํ ํ์๋ ์ฌ์ฉ์๋ฅผ ์ด์ ์ ๊ตฌ์ฑํ ๋ก๊ทธ์ธ ํด๋์ค๋ก ์ ์กํด์ผ ํ๋ฏ๋ก ์๋๋ฅด์ง ๋ง๊ณ ์์คํ ์ ์ฌ๋ถํ ํ์ญ์์ค. /etc/login.conf ํ์ผ์ ํธ์งํฉ๋๋ค. ์ด ํ์ผ์์ ๊ธฐ๋ณธ ๋ก๊ทธ์ธ ํด๋์ค๋ฅผ ํธ์งํ๊ณ ๋ค์ ํ์์ผ๋ก ๊ฐ์ ธ์์ผ ํฉ๋๋ค.
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 ํ์ ์ด ํด๋์ค์ ๊ตฌ์ฑ์์ธ ์ฌ์ฉ์๊ฐ ๋ชจ๋ ๋ ์ด๋ธ(mls/low, mls/high)๋ก ํ์๋ ํ์ผ์ ์ก์ธ์คํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค. ์ด๋ฌํ ์กฐ์ ํ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค์ ์์ฑํ๊ณ ๋ฃจํธ ์ฌ์ฉ์(๋ฐ ํ์ํ ์ฌ์ฉ์)๋ฅผ ์ด ๋ก๊ทธ์ธ ํด๋์ค์ ๋ฐฐ์นํด์ผ ํฉ๋๋ค.
cap_mkdb /etc/login.conf
pw usermod root -L default
์ ์ฑ ์ ํ์ผ์๋ง ์ ์ฉํ๋ ค๋ฉด /etc/mac.conf ํ์ผ์ ํธ์งํ์ฌ ํ ์ค๋ง ๋จ๊ฒจ์ผ ํฉ๋๋ค.
default_labels file ?mls
๋ํ ์๋ ์คํ์ ์ํด mac_mls.ko ๋ชจ๋์ ์ถ๊ฐํด์ผ ํฉ๋๋ค:
echo 'mac_mls_load="YES"' >> /boot/loader.conf
๊ทธ๋ฐ ๋ค์ ์์คํ
์ ์์ ํ๊ฒ ์ฌ๋ถํ
ํ ์ ์์ต๋๋ค. ๋ง๋๋ ๋ฐฉ๋ฒ
newfs -O 2 -b 64kb /dev/ada1
tunefs -l enable /dev/ada1
ํ์ผ ์์คํ ์ ์์ฑํ๊ณ ๋ค์ค ๋ ์ด๋ธ์ ์ถ๊ฐํ ํ /etc/fstab์ ํ๋ ๋๋ผ์ด๋ธ๋ฅผ ์ถ๊ฐํ๊ณ ๋ค์ ์ค์ ํ์ผ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
/dev/ada1 /jail ufs rw 0 1
Mountpoint์์๋ ํ๋ ๋๋ผ์ด๋ธ๋ฅผ ๋ง์ดํธํ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ง์ ํ๊ณ , Pass์์๋ 1(์ด ํ๋ ๋๋ผ์ด๋ธ๋ฅผ ๊ฒ์ฌํ ์์)์ ์ง์ ํด์ผ ํฉ๋๋ค. ufs ํ์ผ ์์คํ ์ ๊ฐ์์ค๋ฌ์ด ์ ์ ์ ๋ฏผ๊ฐํ๋ฏ๋ก ์ด ์์ ์ด ํ์ํฉ๋๋ค. . ๋ค์ ๋จ๊ณ ํ์ ๋์คํฌ๋ฅผ ๋ง์ดํธํฉ๋๋ค.
mount /dev/ada1 /jail
์ด ๋๋ ํ ๋ฆฌ์ Jail์ ์ค์นํ์ญ์์ค. ๊ฐ์ฅ์ด ์คํ๋ ํ์๋ ์ฌ์ฉ์์ /etc/login.conf, /etc/mac.conf ํ์ผ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ์์คํ ์์์ ๋์ผํ ์กฐ์์ ์ํํด์ผ ํฉ๋๋ค.
์กฐ์
ํ์ํ ํ๊ทธ๋ฅผ ์ค์นํ๊ธฐ ์ ์ ํ์ํ ๋ชจ๋ ํจํค์ง๋ฅผ ์ค์นํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ ๊ฒฝ์ฐ์๋ ๋ค์ ํจํค์ง๋ฅผ ๊ณ ๋ คํ์ฌ ํ๊ทธ๊ฐ ์ค์ ๋ฉ๋๋ค.
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
์ด ์์์๋ ์ด๋ฌํ ํจํค์ง์ ์ข ์์ฑ์ ๊ณ ๋ คํ์ฌ ๋ ์ด๋ธ์ด ์ค์ ๋ฉ๋๋ค. ๋ฌผ๋ก ๋ ๊ฐ๋จํ๊ฒ ํ ์ ์์ต๋๋ค. /usr/local/lib ํด๋์ ์ด ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ์ ๋ํด mls/low ๋ ์ด๋ธ์ ์ค์ ํ๋ฉด ํ์ ์ค์น๋ ํจํค์ง(์: PHP์ฉ ์ถ๊ฐ ํ์ฅ)๊ฐ ์ก์ธ์คํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋์๊ฒ๋ ํ์ํ ํ์ผ์๋ง ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ์ฅ์ ์ค์งํ๊ณ ๋ชจ๋ ํ์ผ์ mls/high ๋ ์ด๋ธ์ ์ค์ ํ์ญ์์ค.
setfmac -R mls/high /jail
ํ์๋ฅผ ์ค์ ํ ๋ setfmac์ด ํ๋ ๋งํฌ๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ํ๋ก์ธ์ค๊ฐ ์ค์ง๋ฉ๋๋ค. ์ ์์์๋ ๋ค์ ๋๋ ํ ๋ฆฌ์์ ํ๋ ๋งํฌ๋ฅผ ์ญ์ ํ์ต๋๋ค.
/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
๋ ์ด๋ธ์ ์ค์ ํ ํ Apache์ ๋ํ mls/low ๋ ์ด๋ธ์ ์ค์ ํด์ผ ํฉ๋๋ค. ๊ฐ์ฅ ๋จผ์ ํด์ผ ํ ์ผ์ Apache๋ฅผ ์์ํ๋ ๋ฐ ํ์ํ ํ์ผ์ ์ฐพ๋ ๊ฒ์ ๋๋ค.
ldd /usr/local/sbin/httpd
์ด ๋ช ๋ น์ ์คํํ๋ฉด ์ข ์์ฑ์ด ํ๋ฉด์ ํ์๋์ง๋ง ์ด๋ฌํ ํ์ผ์ ํ์ํ ๋ ์ด๋ธ์ ์ค์ ํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ์ด๋ฌํ ํ์ผ์ด ์๋ ๋๋ ํฐ๋ฆฌ์๋ mls/high ๋ ์ด๋ธ์ด ์์ผ๋ฏ๋ก ์ด๋ฌํ ๋๋ ํฐ๋ฆฌ์๋ ๋ ์ด๋ธ์ ์ง์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. mls/๋ฎ์. Apache๋ฅผ ์์ํ ๋ Apache๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ํ์ผ๋ ์ถ๋ ฅํ๋ฉฐ, PHP์ ๊ฒฝ์ฐ ์ด๋ฌํ ์ข ์์ฑ์ httpd-error.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
์ด ๋ชฉ๋ก์๋ apache์ php ์กฐํฉ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ํ์ผ์ ๋ํ mls/low ํ๊ทธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค(์์ ์ ์ค์น๋ ํจํค์ง์ ๊ฒฝ์ฐ).
๋ง์ง๋ง ์์ ์ mls/equal ์์ค์์ ์คํ๋๋๋ก ๊ฐ์ฅ์ ๊ตฌ์ฑํ๊ณ mls/low ์์ค์์ ์ํ์น๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ ๋๋ค. ๊ฐ์ฅ์ ์์ํ๋ ค๋ฉด /etc/rc.d/jail ์คํฌ๋ฆฝํธ๋ฅผ ๋ณ๊ฒฝํ๊ณ , ์ด ์คํฌ๋ฆฝํธ์์jail_start ํจ์๋ฅผ ์ฐพ๊ณ , ๋ช ๋ น ๋ณ์๋ฅผ ๋ค์ ํ์์ผ๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
command="setpmac mls/equal $jail_program"
setpmac ๋ช ๋ น์ ๋ชจ๋ ๋ ์ด๋ธ์ ์ก์ธ์คํ ์ ์๋๋ก ํ์ํ ๊ธฐ๋ฅ ์์ค(์ด ๊ฒฝ์ฐ mls/equal)์์ ์คํ ํ์ผ์ ์คํํฉ๋๋ค. Apache์์๋ ์์ ์คํฌ๋ฆฝํธ /usr/local/etc/rc.d/apache24๋ฅผ ํธ์งํด์ผ ํฉ๋๋ค. apache24_prestart ํจ์๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค:
apache24_prestart() {
apache24_checkfib
apache24_precmd
eval "setpmac mls/low" ${command} ${apache24_flags}
}
ะ
์ถ๋ ฅ
์ด ์ก์ธ์ค ๋ถ์ฐ ๋ฐฉ๋ฒ์ Apache์ ์ถ๊ฐ ๋ณด์ ์์ค์ ์ถ๊ฐํ๋ฉฐ(์ด ๋ฐฉ๋ฒ์ ๋ค๋ฅธ ์คํ์ ์ ํฉํ์ง๋ง) ๊ฐ์ฅ์์ ์คํ๋๋ ๋์์ ๊ด๋ฆฌ์์๊ฒ๋ ์ด ๋ชจ๋ ๊ฒ์ด ํฌ๋ช ํ๊ณ ๋์ ๋์ง ์๊ฒ ๋ฐ์ํฉ๋๋ค.
์ด ์ถํ๋ฌผ์ ์์ฑํ๋ ๋ฐ ๋์์ด ๋ ์ถ์ฒ ๋ชฉ๋ก:
์ถ์ฒ : habr.com