Microsoft๋Š” CBL-Mariner Linux ๋ฐฐํฌํŒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

Microsoft๋Š” ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ, ์—ฃ์ง€ ์‹œ์Šคํ…œ ๋ฐ ๋‹ค์–‘ํ•œ Microsoft ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” Linux ํ™˜๊ฒฝ์„ ์œ„ํ•œ ๋ฒ”์šฉ ๊ธฐ๋ณธ ํ”Œ๋žซํผ์œผ๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ๋Š” ๋ฐฐํฌ ํ‚คํŠธ CBL-Mariner 2.0.20221029(Common Base Linux Mariner)์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” Microsoft์—์„œ ์‚ฌ์šฉ๋˜๋Š” Linux ์†”๋ฃจ์…˜์„ ํ†ตํ•ฉํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๋ชฉ์ ์„ ์œ„ํ•ด Linux ์‹œ์Šคํ…œ์˜ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ๊ฐœ๋ฐœ์€ MIT ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. aarch64 ๋ฐ x86_64 ์•„ํ‚คํ…์ฒ˜์šฉ ํŒจํ‚ค์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. x1.1_86 ์•„ํ‚คํ…์ฒ˜์šฉ์œผ๋กœ ์ค€๋น„๋œ ๋ถ€ํŒ… ๊ฐ€๋Šฅํ•œ ISO ์ด๋ฏธ์ง€(64GB)

์ƒˆ ๋ฒ„์ „์—์„œ:

  • Linux ์ปค๋„ 5.15.74, PHP 8.1.11, nodejs 16.17.1, cassandra 4.0.7, dbus 1.15.2, expat 2.5.0, mysql 8.0.31, terraform 1.32.2, tidy์˜ ์ œ์•ˆ๋œ ๋ฆด๋ฆฌ์Šค๋ฅผ ํฌํ•จํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋œ ํŒจํ‚ค์ง€ ๋ฒ„์ „ 5.8.0, ์™€์ด์–ด์ƒคํฌ 3.4.16, nginx 1.22.1.
  • ์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€ cairomm 1.12.0, cpptest 1.1.2, k-exec-tools, kernel-drivers-gpu, libcroco 0.6.13, python-google-auth-oauthlib, sgx-backwards-compatability๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • TCP ํ˜ผ์žก ์ œ์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜(TCP ํ˜ผ์žก)์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ทจ์•ฝ์  ์ˆ˜์ • ์‚ฌํ•ญ์ด libtar, unbound, aspell, libtiff, redis, livepatch, libtasn1, PHP, nodejs, dbus, expat, mod_wsgi, Wireshark, nginx, mysql, terraform ํŒจํ‚ค์ง€๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

CBL-Mariner ๋ฐฐํฌํŒ์€ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ ๋ฐ ์—ฃ์ง€ ์žฅ์น˜์—์„œ ์‹คํ–‰๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ, ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ ๋ฐ ์„œ๋น„์Šค์˜ ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ณดํŽธ์ ์ธ ๊ธฐ๋ฐ˜ ์—ญํ• ์„ ํ•˜๋Š” ์ž‘์€ ํ‘œ์ค€ ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. CBL-Mariner ์œ„์— ์ถ”๊ฐ€ ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋” ๋ณต์žกํ•˜๊ณ  ์ „๋ฌธ์ ์ธ ์†”๋ฃจ์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ์€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜๋ฏ€๋กœ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CBL-Mariner๋Š” WSL2(Linux์šฉ Windows ํ•˜์œ„ ์‹œ์Šคํ…œ) ํ•˜์œ„ ์‹œ์Šคํ…œ ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์—์„œ Linux GUI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ทธ๋ž˜ํ”ฝ ์Šคํƒ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ณตํ•˜๋Š” WSLg ๋ฏธ๋‹ˆ ๋ฐฐํฌํŒ์˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. WSLg์˜ ํ™•์žฅ๋œ ๊ธฐ๋Šฅ์€ Weston Composite Server, XWayland, PulseAudio ๋ฐ FreeRDP์— ์ถ”๊ฐ€ ํŒจํ‚ค์ง€๋ฅผ ํฌํ•จํ•จ์œผ๋กœ์จ ์‹คํ˜„๋ฉ๋‹ˆ๋‹ค.

CBL-Mariner ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฉด SPEC ํŒŒ์ผ๊ณผ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฐœ๋ณ„ RPM ํŒจํ‚ค์ง€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ rpm-ostree ํˆดํ‚ท์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋˜๊ณ  ๋ณ„๋„์˜ ํŒจํ‚ค์ง€๋กœ ๋ถ„ํ• ํ•˜์ง€ ์•Š๊ณ  ์›์ž์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋ชจ๋†€๋ฆฌ์‹ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€๋ฅผ ๋ชจ๋‘ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ณ„ ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ์™€ ์ „์ฒด ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€ ์žฌ๊ตฌ์ถ• ๋ฐ ์—…๋ฐ์ดํŠธ๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์—…๋ฐ์ดํŠธ ์ „๋‹ฌ ๋ชจ๋ธ์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž์ฒด ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•ฝ 3000๊ฐœ์˜ ์‚ฌ์ „ ๋นŒ๋“œ๋œ RPM ํŒจํ‚ค์ง€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌํŒ์—๋Š” ๊ฐ€์žฅ ํ•„์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋งŒ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ตœ์†Œํ•œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ๋””์Šคํฌ ๊ณต๊ฐ„ ์†Œ๋น„์™€ ๋†’์€ ๋กœ๋”ฉ ์†๋„์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฐํฌํŒ์—๋Š” ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์ถ”๊ฐ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํฌํ•จ๋œ ์ ๋„ ์ฃผ๋ชฉํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” "๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ๋Œ€ ๋ณด์•ˆ" ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•ฉ๋‹ˆ๋‹ค. seccomp ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ•„ํ„ฐ๋งํ•˜๊ณ , ๋””์Šคํฌ ํŒŒํ‹ฐ์…˜์„ ์•”ํ˜ธํ™”ํ•˜๊ณ , ๋””์ง€ํ„ธ ์„œ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Linux ์ปค๋„์—์„œ ์ง€์›๋˜๋Š” ์ฃผ์†Œ ๊ณต๊ฐ„ ๋ฌด์ž‘์œ„ํ™” ๋ชจ๋“œ๋Š” ๋ฌผ๋ก  ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ๊ณต๊ฒฉ, mmap, /dev/mem ๋ฐ /dev/kmem์— ๋Œ€ํ•œ ๋ณดํ˜ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜๋„ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ์ปค๋„ ๋ฐ ๋ชจ๋“ˆ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ํฌํ•จ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์€ ์ฝ๊ธฐ ์ „์šฉ ๋ชจ๋“œ๋กœ ์„ค์ •๋˜๊ณ  ์ฝ”๋“œ ์‹คํ–‰์ด ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค. ์„ ํƒ์  ์˜ต์…˜์€ ์‹œ์Šคํ…œ ์ดˆ๊ธฐํ™” ํ›„ ์ปค๋„ ๋ชจ๋“ˆ ๋กœ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. iptables ํˆดํ‚ท์€ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ ํ•„ํ„ฐ๋งํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ๋Š” ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ, ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ ๋ฐ ๋ฌธ์ž์—ด ํ˜•์‹ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ณดํ˜ธ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค(_FORTIFY_SOURCE, -fstack-protector, -Wformat-security, relro).

์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž systemd๋Š” ์„œ๋น„์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋ถ€ํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด RPM ๋ฐ DNF ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. SSH ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌํŒ์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ํ…์ŠคํŠธ ๋ฐ ๊ทธ๋ž˜ํ”ฝ ๋ชจ๋“œ์—์„œ ๋ชจ๋‘ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ์ „์ฒด ๋˜๋Š” ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ์„ธํŠธ๋ฅผ ์„ค์น˜ํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•˜๊ณ  ๋””์Šคํฌ ํŒŒํ‹ฐ์…˜ ์„ ํƒ, ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์„ ํƒ ๋ฐ ์‚ฌ์šฉ์ž ์ƒ์„ฑ์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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