FreeBSD์ ๊ฒฝ์ฐ OpenBSD ํ๋ก์ ํธ์์ ๊ฐ๋ฐํ plegde ๋ฐ unveil ์์คํ ํธ์ถ์ ์ฐ์์ํค๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฒฉ๋ฆฌ ๋ฉ์ปค๋์ฆ์ ๊ตฌํ์ด ์ ์๋์์ต๋๋ค. plegde์์์ ๊ฒฉ๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋์ง ์๋ ์์คํ ํธ์ถ์ ๋ํ ์ก์ธ์ค๋ฅผ ๊ธ์งํ๊ณ , unveil์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ํ ์ ์๋ ๊ฐ๋ณ ํ์ผ ๊ฒฝ๋ก์ ๋ํด์๋ง ์ ํ์ ์ผ๋ก ์ก์ธ์ค๋ฅผ ์ด์ด์ค์ผ๋ก์จ ๋ฌ์ฑ๋ฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ์ผ์ข ์ ์์คํ ํธ์ถ ๋ฐ ํ์ผ ๊ฒฝ๋ก์ ๋ํ ํ์ดํธ๋ฆฌ์คํธ๊ฐ ํ์ฑ๋๋ฉฐ ๊ธฐํ ๋ชจ๋ ํธ์ถ ๋ฐ ๊ฒฝ๋ก๋ ๊ธ์ง๋ฉ๋๋ค.
FreeBSD์ฉ์ผ๋ก ๊ฐ๋ฐ ์ค์ธ plegde์ unveil์ ์ ์ฌ์ ์ ์ฐจ์ด์ ์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ฑฐ๋ ์ต์ํ์ ๋ณ๊ฒฝ๋ง์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฉ๋ฆฌํ ์ ์๋ ์ถ๊ฐ ๊ณ์ธต์ ์ ๊ณตํ๋ค๋ ๊ฒ์ ๋๋ค. OpenBSD์์ plegde ๋ฐ unveil์ ๊ธฐ๋ณธ ํ๊ฒฝ๊ณผ์ ๊ธด๋ฐํ ํตํฉ์ ๋ชฉํ๋ก ํ๋ฉฐ ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๋์ ํน์ ์ฃผ์์ ์ถ๊ฐํ์ฌ ์ฌ์ฉ๋ฉ๋๋ค. ๋ณดํธ ๊ตฌ์ฑ์ ๋จ์ํํ๊ธฐ ์ํด ํํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ณ ์์คํ ํธ์ถ ์์ค์ ์ธ๋ถ ์ ๋ณด๋ฅผ ์๋ตํ๊ณ ์์คํ ํธ์ถ ํด๋์ค(์ ๋ ฅ/์ถ๋ ฅ, ํ์ผ ์ฝ๊ธฐ, ํ์ผ ์ฐ๊ธฐ, ์์ผ, ioctl, sysctl, ํ๋ก์ธ์ค ์์ ๋ฑ)๋ฅผ ์กฐ์ํ ์ ์์ต๋๋ค. . ํน์ ์์ ์ด ์ํ๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์์ ์ก์ธ์ค ์ ํ ๊ธฐ๋ฅ์ ํธ์ถํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ์ํ ํ์ผ์ ์ด๊ณ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์ค์ ํ ํ ์์ผ ๋ฐ ํ์ผ์ ๋ํ ์ก์ธ์ค๊ฐ ๊ฑฐ๋ถ๋ ์ ์์ต๋๋ค.
FreeBSD์ฉ plegde ๋ฐ unveil ํฌํธ์ ์์ฑ์๋ ๋ณ๋์ ํ์ผ์ ์ ์๋ ๊ท์น์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ฉํ ์ ์๋ ์ปคํผ ์ ํธ๋ฆฌํฐ๊ฐ ์ ์๋ ์์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฒฉ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ ๊ณํ์ ๋๋ค. ์ ์๋ ๊ตฌ์ฑ์๋ ํน์ ์์ฉ ํ๋ก๊ทธ๋จ(์ฌ์ด๋ ์์ , ๋คํธ์ํฌ ์ํธ ์์ฉ, ๋ก๊น ๋ฑ)๊ณผ ๊ด๋ จ๋ ์์คํ ํธ์ถ ํด๋์ค์ ์ผ๋ฐ์ ์ธ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ ์ํ๋ ๊ธฐ๋ณธ ์ค์ ์ด ํฌํจ๋ ํ์ผ๊ณผ ํน์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ์ก์ธ์ค ๊ท์น์ด ํฌํจ๋ ํ์ผ์ด ํฌํจ๋ฉ๋๋ค.
์ปคํผ ์ ํธ๋ฆฌํฐ๋ ๋๋ถ๋ถ์ ์์ ๋์ง ์์ ์ ํธ๋ฆฌํฐ, ์๋ฒ ํ๋ก์ธ์ค, ๊ทธ๋ํฝ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ ์ ์ฒด ๋ฐ์คํฌํ ์ธ์ ์ ๊ฒฉ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ปคํผ์ Jail ๋ฐ Capsicum ํ์ ์์คํ ์์ ์ ๊ณตํ๋ ๊ฒฉ๋ฆฌ ๋ฉ์ปค๋์ฆ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํด ์ค์ ๋ ๊ท์น์ ์์ํ ๋ ์ค์ฒฉ๋ ๊ฒฉ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ์ฌ ๊ฐ๋ณ ์ ํ ์ฌํญ์ ๋ณด์ํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. ์ผ๋ถ ์ปค๋ ์์ (๋๋ฒ๊น ๊ธฐ๋ฅ, POSIX/SysV IPC, PTY)์ ํ์ฌ ๋๋ ์์ ํ๋ก์ธ์ค์์ ์์ฑ๋์ง ์์ ์ปค๋ ๊ฐ์ฒด์ ๋ํ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ๋ ์ฅ๋ฒฝ ๋ฉ์ปค๋์ฆ์ ํตํด ์ถ๊ฐ๋ก ๋ณดํธ๋ฉ๋๋ค.
ํ๋ก์ธ์ค๋ OpenBSD์ ์๋ ๊ฒ๊ณผ ์ ์ฌํ ์ปคํผctl์ ํธ์ถํ๊ฑฐ๋ libcurtain์ plegde() ๋ฐ unveil() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒด ๊ฒฉ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ ๋์ ์ ๊ธ์ ์ถ์ ํ๊ธฐ ์ํด sysctl 'security.curtain.log_level'์ด ์ ๊ณต๋ฉ๋๋ค. X11 ๋ฐ Wayland ํ๋กํ ์ฝ์ ๋ํ ์ก์ธ์ค๋ ์ปคํผ ์คํ ์ "-X"/"-Y" ๋ฐ "-W" ์ต์ ์ ์ง์ ํ์ฌ ๋ณ๋๋ก ํ์ฑํ๋์ง๋ง ๊ทธ๋ํฝ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ์ง์์ ์์ง ์ถฉ๋ถํ ์์ ํ๋์ง ์์์ผ๋ฉฐ ํด๊ฒฐ๋์ง ์์ ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ์์ต๋๋ค( ๋ฌธ์ ๋ ์ฃผ๋ก X11์ ์ฌ์ฉํ ๋ ๋ํ๋๋ฉฐ Wayland ์ง์์ ํจ์ฌ ๋ ์ ๊ตฌํ๋ฉ๋๋ค. ์ฌ์ฉ์๋ ๋ก์ปฌ ๊ท์น ํ์ผ(~/.curtain.conf)์ ์์ฑํ์ฌ ์ถ๊ฐ ์ ํ ์ฌํญ์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Firfox์์ ~/Downloads/ ๋๋ ํ ๋ฆฌ์๋ง ์ฐ๊ธฐ๋ฅผ ํ์ฉํ๋ ค๋ฉด "~/Downloads/ : rw +" ๊ท์น์ ์ฌ์ฉํ์ฌ "[firefox]" ์น์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๊ตฌํ์๋ ํ์ ์ก์ธ์ค ์ ์ด(MAC, Mandatory Access Control)๋ฅผ ์ํ mac_curtain ์ปค๋ ๋ชจ๋, ํ์ํ ํธ๋ค๋ฌ ๋ฐ ํํฐ ๊ตฌํ์ด ํฌํจ๋ FreeBSD ์ปค๋์ฉ ํจ์น ์ธํธ, ์ ํ๋ฆฌ์ผ์ด์
์์ plegde ๋ฐ unveil ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํ libcurtain ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ปคํผ ์ ํธ๋ฆฌํฐ, ์์ ๊ตฌ์ฑ ํ์ผ, ์ฌ์ฉ์ ๊ณต๊ฐ์ ์ผ๋ถ ํ๋ก๊ทธ๋จ์ ๋ํ ํ
์คํธ ๋ฐ ํจ์น ์ธํธ(์: $TMPDIR์ ์ฌ์ฉํ์ฌ ์์ ํ์ผ๊ณผ ์์
์ ํตํฉํ๋ ๊ฒฝ์ฐ) ๊ฐ๋ฅํ๋ค๋ฉด ์ ์๋ ์ปค๋๊ณผ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ํ ํจ์น๊ฐ ํ์ํ ๋ณ๊ฒฝ ํ์๋ฅผ ์ต์ํํ๋ ค๊ณ ํฉ๋๋ค.
์ถ์ฒ : opennet.ru