Firejail 0.9.72 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฒฉ๋ฆฌ ๋ฆด๋ฆฌ์Šค

์‹ ๋ขฐํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ž ์žฌ์ ์œผ๋กœ ์ทจ์•ฝํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ๊ธฐ๋ณธ ์‹œ์Šคํ…œ์ด ์†์ƒ๋  ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ทธ๋ž˜ํ”ฝ, ์ฝ˜์†” ๋ฐ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฉ๋ฆฌ๋œ ์‹คํ–‰์„ ์œ„ํ•œ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๋Š” Firejail 0.9.72 ํ”„๋กœ์ ํŠธ์˜ ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์€ C๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ GPLv2 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋˜๋ฉฐ 3.0๋ณด๋‹ค ์˜ค๋ž˜๋œ ์ปค๋„์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  Linux ๋ฐฐํฌํŒ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์„ฑ Firejail ํŒจํ‚ค์ง€๋Š” deb(Debian, Ubuntu) ๋ฐ rpm(CentOS, Fedora) ํ˜•์‹์œผ๋กœ ์ค€๋น„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฉ๋ฆฌ๋ฅผ ์œ„ํ•ด Firejail์€ Linux์—์„œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค, AppArmor ๋ฐ ์‹œ์Šคํ…œ ํ˜ธ์ถœ ํ•„ํ„ฐ๋ง(seccomp-bpf)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋‹จ ์‹คํ–‰๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ชจ๋“  ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๋Š” ๋„คํŠธ์›Œํฌ ์Šคํƒ, ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”, ๋งˆ์šดํŠธ ์ง€์ ๊ณผ ๊ฐ™์€ ์ปค๋„ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋ณ„๋„์˜ ๋ณด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„œ๋กœ ์˜์กดํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•˜๋‚˜์˜ ๊ณตํ†ต ์ƒŒ๋“œ๋ฐ•์Šค๋กœ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ Firejail์„ ์‚ฌ์šฉํ•˜์—ฌ Docker, LXC ๋ฐ OpenVZ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ๊ฒฉ๋ฆฌ ๋„๊ตฌ์™€ ๋‹ฌ๋ฆฌ Firejail์€ ๊ตฌ์„ฑ์ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€ ์ค€๋น„๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์„ฑ์€ ํ˜„์žฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฆ‰์„์—์„œ ํ˜•์„ฑ๋˜๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์™„๋ฃŒ๋œ ํ›„ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ทœ์น™์„ ์„ค์ •ํ•˜๋Š” ์œ ์—ฐํ•œ ๋ฐฉ๋ฒ•์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ํ•  ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ , ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ž„์‹œ ํŒŒ์ผ ์‹œ์Šคํ…œ(tmpfs)์„ ์—ฐ๊ฒฐํ•˜๊ณ , ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์ œํ•œํ•˜๊ณ , ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ๋ฐ overlayfs.

Firefox, Chromium, VLC ๋ฐ Transmission์„ ํฌํ•จํ•œ ๋‹ค์ˆ˜์˜ ์ธ๊ธฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด ๊ธฐ์„ฑ ์‹œ์Šคํ…œ ํ˜ธ์ถœ ๊ฒฉ๋ฆฌ ํ”„๋กœํ•„์ด ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒŒ๋“œ๋ฐ•์Šค ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด SUID ๋ฃจํŠธ ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ Firejail ์‹คํ–‰ ํŒŒ์ผ์ด ์„ค์น˜๋ฉ๋‹ˆ๋‹ค(๊ถŒํ•œ์€ ์ดˆ๊ธฐํ™” ํ›„ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค). ๊ฒฉ๋ฆฌ ๋ชจ๋“œ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„์„ firejail ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ๋Œ€ํ•œ ์ธ์ˆ˜๋กœ ์ง€์ •ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: "firejail firefox" ๋˜๋Š” "sudo firejail /etc/init.d/nginx start").

์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ:

  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ƒ์„ฑ์„ ์ฐจ๋‹จํ•˜๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ์— ๋Œ€ํ•œ seccomp ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค(ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด "--restrict-namespaces" ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค). ์—…๋ฐ์ดํŠธ๋œ ์‹œ์Šคํ…œ ํ˜ธ์ถœ ํ…Œ์ด๋ธ” ๋ฐ seccomp ๊ทธ๋ฃน.
  • ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ถ”๊ฐ€ ๊ถŒํ•œ์„ ์–ป๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ํ–ฅ์ƒ๋œ force-nonewprivs ๋ชจ๋“œ(NO_NEW_PRIVS).
  • ์ž์‹ ์˜ AppArmor ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์—ฐ๊ฒฐ์„ ์œ„ํ•ด "--apparmor" ์˜ต์…˜์ด ์ œ๊ณต๋จ).
  • ๊ฐ ์ฃผ์†Œ์˜ IP ๋ฐ ํŠธ๋ž˜ํ”ฝ ๊ฐ•๋„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋Š” nettrace ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ์ถ”์  ์‹œ์Šคํ…œ์€ ICMP ์ง€์›์„ ๊ตฌํ˜„ํ•˜๊ณ  "--dnstrace", "--icmptrace" ๋ฐ "--snitrace" ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • --cgroup ๋ฐ --shell ๋ช…๋ น์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’์€ --shell=none์ž…๋‹ˆ๋‹ค). Firetunnel ๋นŒ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค. /etc/firejail/firejail.config์—์„œ chroot, private-lib ๋ฐ Tracelog ์„ค์ •์„ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. grsecurity ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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