์ ๋ขฐํ ์ ์๊ฑฐ๋ ์ ์ฌ์ ์ผ๋ก ์ทจ์ฝํ ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ๊ธฐ๋ณธ ์์คํ ์ด ์์๋ ์ํ์ ์ต์ํํ ์ ์๋๋ก ๊ทธ๋ํฝ, ์ฝ์ ๋ฐ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฉ๋ฆฌ๋ ์คํ์ ์ํ ์์คํ ์ ๊ฐ๋ฐํ๋ 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