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

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

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

  • ๊ธฐ๋ณธ ISO ์ด๋ฏธ์ง€(700MB)์˜ ํ˜•์„ฑ์ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๊ธฐ์„ฑ ISO ์ด๋ฏธ์ง€๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”ํ•œ ์ฑ„์šฐ๊ธฐ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค(์กฐ๋ฆฝ ์ง€์นจ์€ Ubuntu 18.04์šฉ์œผ๋กœ ์ค€๋น„๋จ).
  • Dnf-Automatic ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํฌํ•จ๋œ ์ž๋™ ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ ์ง€์›์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Linux ์ปค๋„์ด ๋ฒ„์ „ 5.10.60.1๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. openvswitch 2.15.1, golang 1.16.7, logrus 1.8.1, tcell 1.4.0, gonum 0.9.3, testify 1.7.0, crunchy 0.4.0, xz 0.5.10, swig 4.0.2,๋ฅผ ํฌํ•จํ•œ ์—…๋ฐ์ดํŠธ๋œ ํ”„๋กœ๊ทธ๋žจ ๋ฒ„์ „ squashfs-๋„๊ตฌ 4.4, mysql 8.0.26.
  • OpenSSL์€ TLS 1 ๋ฐ TLS 1.1์— ๋Œ€ํ•œ ์ง€์›์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ํˆดํ‚ท์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด sha256sum ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€ ํฌํ•จ: etcd-tools, Cockpit, aide, fipscheck, tini.
  • brp-strip-debug-symbols, brp-strip-unneeded ๋ฐ ca-legacy ํŒจํ‚ค์ง€๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํ•ต์‹ฌ .NET ๊ฐœ๋ฐœ ํŒ€์—์„œ ์ปดํŒŒ์ผํ•˜์—ฌ ๋ณ„๋„์˜ ์ €์žฅ์†Œ์— ๋ฐฐ์น˜๋˜๋Š” Dotnet ๋ฐ aspnetcore ํŒจํ‚ค์ง€์šฉ SPEC ํŒŒ์ผ์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ทจ์•ฝ์  ์ˆ˜์ • ์‚ฌํ•ญ์ด ์‚ฌ์šฉ๋œ ํŒจํ‚ค์ง€ ๋ฒ„์ „์œผ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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(vmWare์˜ tdnf ๋ณ€ํ˜•)๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. SSH ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌํŒ์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ํ…์ŠคํŠธ ๋ฐ ๊ทธ๋ž˜ํ”ฝ ๋ชจ๋“œ์—์„œ ๋ชจ๋‘ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ์ „์ฒด ๋˜๋Š” ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ์„ธํŠธ๋ฅผ ์„ค์น˜ํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•˜๊ณ  ๋””์Šคํฌ ํŒŒํ‹ฐ์…˜ ์„ ํƒ, ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ์„ ํƒ ๋ฐ ์‚ฌ์šฉ์ž ์ƒ์„ฑ์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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