FreeBSD์šฉ์œผ๋กœ plegde ๋ฐ unveil๊ณผ ์œ ์‚ฌํ•œ ๊ฒฉ๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.

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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€