TL; DR. ์ด ๊ธฐ์ฌ์์๋ 12.4๊ฐ์ง ์ธ๊ธฐ Linux ๋ฐฐํฌํ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ํ๋ ๊ฐํ ์ฒด๊ณ๋ฅผ ์ดํด๋ด ๋๋ค. ๊ฐ๊ฐ์ ๋ํด ๊ธฐ๋ณธ ์ปค๋ ๊ตฌ์ฑ์ ๊ฐ์ ธ์ ๋ชจ๋ ํจํค์ง๋ฅผ ๋ก๋ํ๊ณ ์ฒจ๋ถ๋ ๋ฐ์ด๋๋ฆฌ์ ๋ณด์ ์ฒด๊ณ๋ฅผ ๋ถ์ํ์ต๋๋ค. ๊ณ ๋ ค๋๋ ๋ฐฐํฌํ์ OpenSUSE 9, Debian 6.10, CentOS, RHEL 7 ๋ฐ 14.04๋ฟ๋ง ์๋๋ผ Ubuntu 12.04, 18.04 ๋ฐ XNUMX LTS์ ๋๋ค.
๊ฒฐ๊ณผ๋ ์คํํน ์นด๋๋ฆฌ์ ๋ฐ ์์น ๋
๋ฆฝ์ ์ฝ๋์ ๊ฐ์ ๊ธฐ๋ณธ ๋ฐฉ์์กฐ์ฐจ ์์ง ๋ชจ๋ ์ฌ๋์ด ์ฑํํ์ง ์๋๋ค๋ ๊ฒ์ ํ์ธ์์ผ ์ค๋๋ค. ์ถํ ํ XNUMX์์ ์ฃผ๋ชฉ์ ๋ฐ์ ์คํ ์ถฉ๋๊ณผ ๊ฐ์ ์ทจ์ฝ์ ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ์ ์ํฉ์ ๋์ฑ ์
ํ๋ฉ๋๋ค.
๊ฒํ ๊ฒฐ๊ณผ OS ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์์ค์์ Ubuntu 18.04์ ๊ฐ์ฅ ๋ง์ ๋ณดํธ ๋ฐฉ๋ฒ์ด ๊ตฌํ๋์์ผ๋ฉฐ Debian 9๊ฐ ๊ทธ ๋ค๋ฅผ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋ฐ๋ฉด OpenSUSE 12.4, CentOS 7 ๋ฐ RHEL 7๋ ๊ธฐ๋ณธ ๋ณดํธ ์ฒด๊ณ ๋ฐ ์คํ ์ถฉ๋ ๋ฐฉ์ง๋ฅผ ๊ตฌํํฉ๋๋ค. ํจ์ฌ ๋ ์กฐ๋ฐํ ๊ธฐ๋ณธ ํจํค์ง ์ธํธ๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์ฌ ๋ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
์๊ฐ
๊ณ ํ์ง ์ํํธ์จ์ด๋ฅผ ํ๋ณดํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค. ์ ์ ์ฝ๋ ๋ถ์ ๋ฐ ๋์ ๋ฐํ์ ๋ถ์์ ์ํ ์๋ง์ ๊ณ ๊ธ ๋๊ตฌ์ ์ปดํ์ผ๋ฌ ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๊ฐ๋ฐ์ ์๋นํ ์ง์ ์๋ ๋ถ๊ตฌํ๊ณ ์ต์ ์ํํธ์จ์ด๋ ์ฌ์ ํ ๊ณต๊ฒฉ์๊ฐ ์ง์์ ์ผ๋ก ์ ์ฉํ๋ ์ทจ์ฝ์ ์ผ๋ก ์ด๋ ค์์ ๊ฒช๊ณ ์์ต๋๋ค. ๋ ๊ฑฐ์ ์ฝ๋๋ฅผ ํฌํจํ๋ ์ํ๊ณ์์๋ ์ํฉ์ด ๋์ฑ ์ ํ๋ฉ๋๋ค. ๊ทธ๋ฌํ ๊ฒฝ์ฐ, ์ฐ๋ฆฌ๋ ์ ์ฉ ๊ฐ๋ฅํ ์ค๋ฅ๋ฅผ ์ฐพ์์ผ ํ๋ ์์ํ ๋ฌธ์ ์ ์ง๋ฉดํ ๋ฟ๋ง ์๋๋ผ ์๊ฒฉํ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ ํ๋ ์์ํฌ์ ์ํด ์ ํ๋ฉ๋๋ค. ์ด๋ ์ข ์ข ์ ํ์ ์ด๊ฑฐ๋ ๋ ๋์๊ฒ๋ ์ทจ์ฝํ๊ฑฐ๋ ๋ฒ๊ทธ๊ฐ ์๋ ์ฝ๋๋ฅผ ๋ณด์กดํด์ผ ํฉ๋๋ค.
์ฌ๊ธฐ์ ํ๋ก๊ทธ๋จ์ ๋ณดํธํ๊ฑฐ๋ ๊ฐํํ๋ ๋ฐฉ๋ฒ์ด ํ์ฉ๋ฉ๋๋ค. ์ผ๋ถ ์ ํ์ ์ค๋ฅ๋ ์๋ฐฉํ ์ ์์ง๋ง ์๋ฐฉํ๊ฑฐ๋ ๋ฐฉ์งํจ์ผ๋ก์จ ๊ณต๊ฒฉ์์ ์ถ์ ๋์ฑ ์ด๋ ต๊ฒ ๋ง๋ค๊ณ ๋ถ๋ถ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ด์ ์ด๋ฌํ ์ค๋ฅ. ์ด๋ฌํ ๋ณดํธ๋ ๋ชจ๋ ์ต์ ์ด์ ์ฒด์ ์์ ์ฌ์ฉ๋์ง๋ง ๋ฐฉ๋ฒ์ ๋ณต์ก์ฑ, ํจ์จ์ฑ ๋ฐ ์ฑ๋ฅ๋ฉด์์ ํฌ๊ฒ ๋ค๋ฆ
๋๋ค.
CVE ๋ฐ ๋ณด์
์ฐ๋ฆฌ๋ ๋ชจ๋ "์ฌํด ๊ฐ์ฅ ์ทจ์ฝํ ์์ฉ ํ๋ก๊ทธ๋จ" ๋๋ "๊ฐ์ฅ ์ทจ์ฝํ ์ด์ ์ฒด์ "์ ๊ฐ์ ์ ๋ชฉ์ ๊ธฐ์ฌ๋ฅผ ๋ณธ ์ ์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ทจ์ฝ์ ์ ๋ํ ์ด ๋ ์ฝ๋ ์์ ๋ํ ํต๊ณ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ง๋ XNUMX๋ ๋์ Linux ์ปค๋๊ณผ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ XNUMX๊ฐ์ง ์๋ฒ ๋ฐฐํฌํ(Ubuntu, Debian, Red Hat Enterprise Linux ๋ฐ OpenSUSE)์ ๋ํ ์ด CVE ์๋ฅผ ์๊ฐํด ๋ณด์ธ์.
๊ทธ๋ฆผ. 1
์ด ๊ทธ๋ํ๋ ์ฐ๋ฆฌ์๊ฒ ๋ฌด์์ ๋งํด์ฃผ๋๊ฐ? CVE ์๊ฐ ๋ง๋ค๋ ๊ฒ์ ํ ๋ฐฐํฌํ์ด ๋ค๋ฅธ ๋ฐฐํฌํ๋ณด๋ค ๋ ์ทจ์ฝํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๊น? ๋๋ต์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ด ๊ธฐ์ฌ์์๋ Debian์ด OpenSUSE ๋๋ RedHat Linux์ ๋นํด ๋ ๊ฐ๋ ฅํ ๋ณด์ ๋ฉ์ปค๋์ฆ์ ๊ฐ๊ณ ์์ง๋ง Debian์๋ ๋ ๋ง์ CVE๊ฐ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด ๋ฐ๋์ ๋ณด์ ์ฝํ๋ฅผ ์๋ฏธํ๋ ๊ฒ์ ์๋๋๋ค. CVE๊ฐ ์กด์ฌํ๋๋ผ๋ ์ทจ์ฝ์ ์ด ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด์ง๋ ์์ต๋๋ค. ์ฐฉ์ทจ๋นํ๋ค. ์ฌ๊ฐ๋ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํ๋ ๋๋ค. ์๋ง๋ ๊ทธ๋ฌ๋ ๊ถ๊ทน์ ์ผ๋ก ์ ์ฉ ๊ฐ๋ฅ์ฑ์ ์ํฅ์ ๋ฐ๋ ์์คํ ์ ์กด์ฌํ๋ ๋ณดํธ ๊ธฐ๋ฅ๊ณผ ๊ณต๊ฒฉ์์ ๋ฆฌ์์ค ๋ฐ ๋ฅ๋ ฅ์ ๋ฐ๋ผ ํฌ๊ฒ ๋ฌ๋ผ์ง๋๋ค. ๊ฒ๋ค๊ฐ CVE ๋ณด๊ณ ์๊ฐ ์๋ค๋ ์ฌ์ค์ ๋ค๋ฅธ ๋ณด๊ณ ์์ ๋ํด ์๋ฌด ๋ง๋ ํ์ง ์์ต๋๋ค. ๋ฑ๋ก๋์ง ์์๊ฑฐ๋ ์ ์ ์์ ์ทจ์ฝ์ . CVE์ ์ฐจ์ด๋ ํ ์คํธ์ ํ ๋น๋ ๋ฆฌ์์ค๋ ์ฌ์ฉ์ ๊ธฐ๋ฐ ๊ท๋ชจ ๋ฑ ์ํํธ์จ์ด ํ์ง ์ด์ธ์ ์์ธ์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด ์์์ Debian์ CVE ์๊ฐ ๋ ๋ง๋ค๋ ๊ฒ์ ๋จ์ํ Debian์ด ๋ ๋ง์ ์ํํธ์จ์ด ํจํค์ง๋ฅผ ์ ๊ณตํ๋ค๋ ๊ฒ์ ์๋ฏธํ ์ ์์ต๋๋ค.
๋ฌผ๋ก CVE ์์คํ
์ ์ ์ ํ ๋ณดํธ๋ฅผ ์์ฑํ ์ ์๋ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ๋ก๊ทธ๋จ ์คํจ์ ์์ธ์ ๋ ์ ์ดํดํ ์๋ก ๊ฐ๋ฅํ ์
์ฉ ๋ฐฉ๋ฒ์ ์๋ณํ๊ณ ์ ์ ํ ๋ฉ์ปค๋์ฆ์ ๊ฐ๋ฐํ๋ ๊ฒ์ด ๋ ์ฌ์์ง๋๋ค. ํ์ง ๋ฐ ๋์. ๊ทธ๋ฆผ์์. 2๋ ์ง๋ XNUMX๋
๋์ ๋ชจ๋ ๋ฐฐํฌํ์ ์ทจ์ฝ์ ์นดํ
๊ณ ๋ฆฌ๋ฅผ ๋ณด์ฌ์ค๋๋ค(
๊ทธ๋ฆผ. 2
์์
์ด ๊ธฐ์ฌ์์ ์ฐ๋ฆฌ๋ ๋ค์ ์ง๋ฌธ์ ๋ตํ๋ ค๊ณ ํฉ๋๋ค.
- ๋ค์ํ Linux ๋ฐฐํฌํ์ ๋ณด์์ ๋ฌด์์ ๋๊น? ์ปค๋ ๋ฐ ์ฌ์ฉ์ ๊ณต๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ์ด๋ค ๋ณดํธ ๋ฉ์ปค๋์ฆ์ด ์กด์ฌํฉ๋๊น?
- ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ฐฐํฌ ์ ๋ฐ์ ๊ฑธ์ณ ๋ณด์ ๋ฉ์ปค๋์ฆ ์ฑํ์ด ์ด๋ป๊ฒ ๋ฐ๋์๋์?
- ๊ฐ ๋ฐฐํฌํ์ ๋ํ ํจํค์ง ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๊ท ์ข ์์ฑ์ ๋ฌด์์ ๋๊น?
- ๊ฐ ๋ฐ์ด๋๋ฆฌ์๋ ์ด๋ค ๋ณดํธ ๊ธฐ๋ฅ์ด ๊ตฌํ๋์ด ์๋์?
๋ถํฌ ์ ํ
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋ค์ด๋ก๋ ์๊ฐ ์ค์ ์ค์น ์๋ฅผ ๋ํ๋ด์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐฐํฌ ์ค์น์ ๋ํ ์ ํํ ํต๊ณ๋ฅผ ์ฐพ๋ ๊ฒ์ด ์ด๋ ค์ด ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋ฌ๋ Unix ๋ณ์ข
์ ์๋ฒ ์์คํ
์ ๋๋ถ๋ถ์ ๊ตฌ์ฑํฉ๋๋ค(์น ์๋ฒ์ ๊ฒฝ์ฐ 69,2%,
๋ฐฐํฌ/๋ฒ์
ํต์ฌ
์ง๋ค
OpenSUSE 12.4
4.12.14-95.3-๊ธฐ๋ณธ๊ฐ
#1 SMP 5๋
06์ 00์ผ ์์์ผ 48:2018:63 UTC(8a29dXNUMX)
๋ฐ๋น์ 9(ํ์ฅ)
4.9.0-8-amd64
#1 SMP ๋ฐ๋น์ 4.9.130-2 (2018-10-27)
6.10 CentOS์
2.6.32-754.10.1.el6.x86_64
#1 SMP 15๋
17์ 07์ผ ํ์์ผ 28:2019:XNUMX UTC
7 CentOS์
3.10.0-957.5.1.el7.x86_64
#1 SMP 1๋
14์ 54์ผ ๊ธ์์ผ 57:2019:XNUMX UTC
Red Hat Enterprise Linux ์๋ฒ 6.10(์ฐํฐ์๊ณ )
2.6.32-754.9.1.el6.x86_64
#1 SMP 21๋
15์ 08์ผ ์์์ผ 21:2018:XNUMX EST
Red Hat Enterprise Linux ์๋ฒ 7.6(๋ง์ดํฌ)
3.10.0-957.1.3.el7.x86_64
#1 SMP 15๋
17์ 36์ผ ๋ชฉ์์ผ 42:2018:XNUMX UTC
์ฐ๋ถํฌ 14.04(ํธ๋ฌ์คํฐ ํ๋ฅด)
4.4.0โ140-์ผ๋ฐ
#166~14.04.1-Ubuntu SMP Sat Nov 17 01:52:43 UTC 20โฆ
์ฐ๋ถํฌ 16.04(์ ๋์ผ ์ ๋ฃจ์ค)
4.15.0โ1026-gcp
#27~16.04.1-Ubuntu SMP 7๋
09์ 59์ผ ๊ธ์์ผ 47:2018:XNUMX UTC
์ฐ๋ถํฌ 18.04(๋ฐ์ด์ค๋ ๋น๋ฒ)
4.15.0โ1026-gcp
#27-Ubuntu SMP 6๋
18์ 27์ผ ๋ชฉ์์ผ 01:2018:XNUMX UTC
ํ 1
๋ถ์
๊ธฐ๋ณธ ์ปค๋ ๊ตฌ์ฑ๊ณผ ๊ฐ ๋ฐฐํฌํ์ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ํตํด ์ฆ์ ์ฌ์ฉํ ์ ์๋ ํจํค์ง ์์ฑ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๋ถ์์ ํ ์ ์ฅ์(์: Debian 'ํ ์คํธ' ๋ฏธ๋ฌ)์ ํจํค์ง์ ํ์ฌ ํจํค์ง(์: ํ์ค ๋ฏธ๋ฌ์ Nvidia ํจํค์ง)๋ฅผ ๋ฌด์ํ๊ณ ๊ฐ ๋ฐฐํฌํ์ ๊ธฐ๋ณธ ๋ฏธ๋ฌ์ ํจํค์ง๋ง ๊ณ ๋ คํฉ๋๋ค. ๋ํ ์ฌ์ฉ์ ์ ์ ์ปค๋ ์ปดํ์ผ์ด๋ ๋ณด์ ๊ฐํ ๊ตฌ์ฑ์ ๊ณ ๋ คํ์ง ์์ต๋๋ค.
์ปค๋ ๊ตฌ์ฑ ๋ถ์
์ฐ๋ฆฌ๋ ๋ค์์ ๊ธฐ๋ฐ์ผ๋ก ๋ถ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฉํ์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ ์ปค๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ์๊ฒฉํ ์ค์ ์ ๊ฐ์ต๋๋ค. ์๋ฅผ ๋ค์ด 6.10 ์ปค๋์ CentOS 6.10 ๋ฐ RHEL 2.6.32์๋ ๋ค์๊ณผ ๊ฐ์ ์ต์ ์ปค๋์ ๊ตฌํ๋ ์ค์ํ ๊ธฐ๋ฅ์ด ๋๋ถ๋ถ ๋ถ์กฑํฉ๋๋ค.
๊ฒฐ๊ณผ๋ฅผ ํด์ํ ๋ ๊ณ ๋ คํด์ผ ํ ๋ ๋ค๋ฅธ ์ฌํญ: ๊ณต๊ฒฉ ํ๋ฉด์ ์ฆ๊ฐ์ํค๋ ์ผ๋ถ ์ปค๋ ๊ตฌ์ฑ์ ๋ณด์์๋ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ์๋ก๋ uprobes ๋ฐ kprobes, ์ปค๋ ๋ชจ๋, BPF/eBPF๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์์ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์ค์ง์ ์ธ ๋ณดํธ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์๋ํ๋ฉด ์ด๋ฌํ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๊ธฐ๊ฐ ์ฝ์ง ์๊ณ ์ ์์ ์ธ ํ์์๊ฐ ์ด๋ฏธ ์์คํ ์ ๋ฐํ์ ๋ง๋ จํ๋ค๊ณ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ต์ ์ด ํ์ฑํ๋ ๊ฒฝ์ฐ ์์คํ ๊ด๋ฆฌ์๋ ๋จ์ฉ์ ์ ๊ทน์ ์ผ๋ก ๋ชจ๋ํฐ๋งํด์ผ ํฉ๋๋ค.
ํ 2์ ํญ๋ชฉ์ ๋ ์์ธํ ์ดํด๋ณด๋ฉด ์ต์ ์ปค๋์ด ์ ๋ณด ์ ์ถ ๋ฐ ์คํ/ํ ์ค๋ฒํ๋ก์ ๊ฐ์ ์ทจ์ฝ์ ์
์ฉ์ ๋ฐฉ์งํ๊ธฐ ์ํ ์ฌ๋ฌ ์ต์
์ ์ ๊ณตํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ์ฅ ์ต๊ทผ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐฐํฌํ์กฐ์ฐจ๋ ์์ง ๋ ๋ณต์กํ ๋ณดํธ ๊ธฐ๋ฅ(์: ํจ์น ํฌํจ)์ ๊ตฌํํ์ง ์์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๋ถ์
๋น์ฐํ ๋ฐฐํฌํ๋ง๋ค ํจํค์ง ํน์ฑ, ์ปดํ์ผ ์ต์
, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข
์์ฑ ๋ฑ์ด ๋ค๋ฆ
๋๋ค.
๋ฐฐํฌํ
๋ชจ๋ ๋ฐฐํฌํ์ ๋ํด ์ด 361๊ฐ์ ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํ์ผ๋ฉฐ ๊ธฐ๋ณธ ๋ฏธ๋ฌ์์ ํจํค์ง๋ง ์ถ์ถํ์ต๋๋ค. ์์ค, ๊ธ๊ผด ๋ฑ๊ณผ ๊ฐ์ ELF ์คํ ํ์ผ์ด ์๋ ํจํค์ง๋ ๋ฌด์ํ์ต๋๋ค. ํํฐ๋ง ํ ์ด 556๊ฐ์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ํฌํจํ๋ 129๊ฐ์ ํจํค์ง๊ฐ ๋จ์์ต๋๋ค. ๋ฐฐํฌํ์ ๊ฑธ์น ํจํค์ง ๋ฐ ํ์ผ์ ๋ฐฐํฌ๋ ๊ทธ๋ฆผ 569์ ๋์ ์์ต๋๋ค. ์ผ.
๊ทธ๋ฆผ. 3
๋ฐฐํฌํ์ด ํ๋์ ์ผ์๋ก ๋ ๋ง์ ํจํค์ง์ ๋ฐ์ด๋๋ฆฌ๊ฐ ํฌํจ๋์ด ์๋ค๋ ๊ฒ์ ์ ์ ์์ผ๋ฉฐ ์ด๋ ๋ ผ๋ฆฌ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ Ubuntu ๋ฐ Debian ํจํค์ง์๋ CentOS, SUSE ๋ฐ RHEL๋ณด๋ค ๋ ๋ง์ ๋ฐ์ด๋๋ฆฌ(์คํ ํ์ผ๊ณผ ๋์ ๋ชจ๋ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋)๊ฐ ํฌํจ๋์ด ์์ด Ubuntu ๋ฐ Debian์ ๊ณต๊ฒฉ ํ๋ฉด์ ์ ์ฌ์ ์ผ๋ก ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค(์ซ์๋ ๋ชจ๋ ๋ฒ์ ์ ๋ชจ๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ฐ์ํ๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค). ์ฆ, ์ผ๋ถ ํ์ผ์ ์ฌ๋ฌ ๋ฒ ๋ถ์๋ฉ๋๋ค.) ์ด๋ ํจํค์ง ๊ฐ์ ์ข ์์ฑ์ ๊ณ ๋ คํ ๋ ํนํ ์ค์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋จ์ผ ํจํค์ง ๋ฐ์ด๋๋ฆฌ์ ์ทจ์ฝ์ฑ์ ์ทจ์ฝํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ฅผ ๊ฐ์ ธ์ค๋ ๋ชจ๋ ๋ฐ์ด๋๋ฆฌ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๊ฒ์ฒ๋ผ ์ํ๊ณ์ ๋ง์ ๋ถ๋ถ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์์์ ์ผ๋ก ๋ค์ํ ์ด์ ์ฒด์ ์ ํจํค์ง ๊ฐ ์ข ์์ฑ ์ ๋ถํฌ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๊ฑฐ์ ๋ชจ๋ ๋ฐฐํฌํ์์ ํจํค์ง์ 60%์๋ ์ต์ 10๊ฐ์ ์ข ์์ฑ์ด ์์ต๋๋ค. ๋ํ ์ผ๋ถ ํจํค์ง์๋ ํจ์ฌ ๋ ๋ง์ ์์ ์ข ์์ฑ(100๊ฐ ์ด์)์ด ์์ต๋๋ค. ์ญ๋ฐฉํฅ ํจํค์ง ์ข ์์ฑ์๋ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค. ์์๋๋ก ๋ช ๊ฐ์ง ํจํค์ง๊ฐ ๋ฐฐํฌํ์ ๋ค๋ฅธ ๋ง์ ํจํค์ง์์ ์ฌ์ฉ๋๋ฏ๋ก ์ ํ๋ ์์์ ์ทจ์ฝ์ ์ ์ํ์ด ๋์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ํ์๋ SLES, Centos 20, Debian 7 ๋ฐ Ubuntu 9์์ ์ต๋ ์ญ๋ฐฉํฅ ์ข ์์ฑ ์๊ฐ ํฌํจ๋ 18.04๊ฐ์ ํจํค์ง๊ฐ ๋์ด๋์ด ์์ต๋๋ค(๊ฐ ์ ์ ํจํค์ง ๋ฐ ์ญ๋ฐฉํฅ ์ข ์์ฑ ๊ฐ์๋ฅผ ๋ํ๋).
ํ 3
ํฅ๋ฏธ๋ก์ด ์ฌ์ค. ๋ถ์๋ ๋ชจ๋ OS๋ x86_64 ์ํคํ ์ฒ์ฉ์ผ๋ก ๊ตฌ์ถ๋์์ผ๋ฉฐ ๋๋ถ๋ถ์ ํจํค์ง์๋ x86_64 ๋ฐ x86์ผ๋ก ์ ์๋ ์ํคํ ์ฒ๊ฐ ์์ง๋ง ๊ทธ๋ฆผ 5์ ํ์๋ ๊ฒ์ฒ๋ผ ํจํค์ง์๋ ์ข ์ข ๋ค๋ฅธ ์ํคํ ์ฒ์ ๋ํ ๋ฐ์ด๋๋ฆฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. XNUMX.
๊ทธ๋ฆผ. 5
๋ค์ ์น์ ์์๋ ๋ถ์๋ ๋ฐ์ด๋๋ฆฌ์ ํน์ง์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐ์ด๋๋ฆฌ ํ์ผ ๋ณดํธ ํต๊ณ
์ต์ํ ๊ธฐ์กด ๋ฐ์ด๋๋ฆฌ์ ๋ํ ๊ธฐ๋ณธ ๋ณด์ ์ต์ ์ธํธ๋ฅผ ํ์ํด์ผ ํฉ๋๋ค. ์ฌ๋ฌ Linux ๋ฐฐํฌํ์๋ ์ด๋ฌํ ๊ฒ์ฌ๋ฅผ ์ํํ๋ ์คํฌ๋ฆฝํธ๊ฐ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด Debian/Ubuntu์๋ ์ด๋ฌํ ์คํฌ๋ฆฝํธ๊ฐ ์์ต๋๋ค. ๊ทธ์ ์ํ์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$ hardening-check $(which docker)
/usr/bin/docker:
Position Independent Executable: yes
Stack protected: yes
Fortify Source functions: no, only unprotected functions found!
Read-only relocations: yes
Immediate binding: yes
์คํฌ๋ฆฝํธ๋ XNUMX๊ฐ์ง๋ฅผ ํ์ธํฉ๋๋ค.
- PIE(Position Independent Executable): ASLR์ด ์ปค๋์์ ํ์ฑํ๋ ๊ฒฝ์ฐ ๋ฌด์์ํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ํ๋ก๊ทธ๋จ์ ํ ์คํธ ์น์ ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ด๋ํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ ๋๋ค.
- ์คํ ๋ณดํธ: ์คํ ์ถฉ๋ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธํ๊ธฐ ์ํด ์คํ ์นด๋๋ฆฌ์๋ฅผ ํ์ฑํํ ์ง ์ฌ๋ถ์ ๋๋ค.
- Fortify Source: ์์ ํ์ง ์์ ํจ์(์: strcpy)๊ฐ ๋ณด๋ค ์์ ํ ํจ์๋ก ๋์ฒด๋๊ณ ๋ฐํ์์ ํ์ธ๋ ํธ์ถ์ด ํ์ธ๋์ง ์์ ํด๋น ํจ์(์: __memcpy_chk ๋์ memcpy)๋ก ๋์ฒด๋๋์ง ์ฌ๋ถ์ ๋๋ค.
- ์ฝ๊ธฐ ์ ์ฉ ์ฌ๋ฐฐ์น(RELRO): ์คํ์ด ์์๋๊ธฐ ์ ์ ์ฌ๋ฐฐ์น ํ ์ด๋ธ ํญ๋ชฉ์ด ํธ๋ฆฌ๊ฑฐ๋๋ ๊ฒฝ์ฐ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ํ์๋๋์ง ์ฌ๋ถ์ ๋๋ค.
- ์ฆ์ ๋ฐ์ธ๋ฉ: ํ๋ก๊ทธ๋จ ์คํ์ด ์์๋๊ธฐ ์ ์ ๋ฐํ์ ๋ง์ปค๊ฐ ๋ชจ๋ ์ด๋์ ํ์ฉํ๋์ง ์ฌ๋ถ(์ด๋ ์ ์ฒด RELRO์ ๋์ผ)
์์ ๋ฉ์ปค๋์ฆ์ผ๋ก ์ถฉ๋ถํฉ๋๊น? ๋ถํํ๊ฒ๋. ์์ ๋ชจ๋ ๋ฐฉ์ด๋ฅผ ์ฐํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ ค์ ธ ์์ง๋ง, ๋ฐฉ์ด๊ฐ ๊ฐํ ์๋ก ๊ณต๊ฒฉ์์ ๊ธฐ์ค์ด ๋์์ง๋๋ค. ์๋ฅผ ๋ค์ด,
์ฐ๋ฆฌ๋ ๋ฌธ์ ์ ๋ฐฐํฌํ์์ ์ผ๋ง๋ ๋ง์ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ด ๋ค์ ๋ฐฉ๋ฒ๊ณผ ๋ค๋ฅธ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ณดํธ๋๋์ง ์ฐ๊ตฌํ๊ณ ์ถ์์ต๋๋ค.
- ์คํ ๋ถ๊ฐ๋ฅํ ๋นํธ(
NX ) ์คํ ํ ๋ฑ๊ณผ ๊ฐ์ด ์คํ ๊ฐ๋ฅํ์ง ์์์ผ ํ๋ ์์ญ์์์ ์คํ์ ๋ฐฉ์งํฉ๋๋ค. RPATH/RUNPATH ์ผ์นํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ๊ธฐ ์ํด ๋์ ๋ก๋๊ฐ ์ฌ์ฉํ๋ ์คํ ๊ฒฝ๋ก๋ฅผ ๋ํ๋ ๋๋ค. ์ฒซ ๋ฒ์งธ๋ ์๋ฌด์ ๋ชจ๋ ์ต์ ์์คํ ์ ๊ฒฝ์ฐ: ์ด ๊ธฐ๋ฅ์ด ์์ผ๋ฉด ๊ณต๊ฒฉ์๊ฐ ํ์ด๋ก๋๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์์๋ก ์ฐ๊ณ ์๋ ๊ทธ๋๋ก ์คํํ ์ ์์ต๋๋ค. ๋ ๋ฒ์งธ๋ก, ์๋ชป๋ ์คํ ๊ฒฝ๋ก ๊ตฌ์ฑ์ ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ ์ ๋ขฐํ ์ ์๋ ์ฝ๋๋ฅผ ๋์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค(์:๊ถํ ์์น ๊ณผ๋ค๋ฅธ ๋ฌธ์ ).- ์คํ ์ถฉ๋ ๋ณดํธ๋ ์คํ์ด ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์์ญ(์: ํ)๊ณผ ๊ฒน์น๊ฒ ํ๋ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค. ์ต๊ทผ ์
์ฉ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ๋ฉด
์์คํ ํ ์ถฉ๋ ์ทจ์ฝ์ , ์ฐ๋ฆฌ๋ ์ด ๋ฉ์ปค๋์ฆ์ ๋ฐ์ดํฐ ์ธํธ์ ํฌํจํ๋ ๊ฒ์ด ์ ์ ํ๋ค๊ณ ๋๊ผ์ต๋๋ค.
๊ทธ๋ผ ๋ ์ด์ ๊ณ ๋ฏผํ์ง ๋ง๊ณ ์ซ์๋ก ๋์ด๊ฐ๊ฒ ์ต๋๋ค. ํ 4์ 5์๋ ๊ฐ๊ฐ ๋ค์ํ ๋ฐฐํฌํ์ ์คํ ํ์ผ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ถ์ ์์ฝ์ด ํฌํจ๋์ด ์์ต๋๋ค.
- ๋ณด์๋ค์ํผ NX ๋ณดํธ๋ ๋๋ฌธ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ชจ๋ ๊ณณ์์ ๊ตฌํ๋ฉ๋๋ค. ํนํ CentOS, RHEL ๋ฐ OpenSUSE์ ๋นํด Ubuntu ๋ฐ Debian ๋ฐฐํฌํ์์๋ ์ฌ์ฉ๋ฅ ์ด ์ฝ๊ฐ ๋ฎ๋ค๋ ์ ์ ์ ์ ์์ต๋๋ค.
- ์คํ ์นด๋๋ฆฌ์๋ ์ฌ๋ฌ ๊ณณ์์ ๋๋ฝ๋์์ผ๋ฉฐ, ํนํ ์ด์ ์ปค๋์ด ํฌํจ๋ ๋ฐฐํฌํ์์๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. Centos, RHEL, Debian ๋ฐ Ubuntu์ ์ต์ ๋ฐฐํฌํ์์ ์ผ๋ถ ์ง์ ์ด ๋ณด์ด๊ณ ์์ต๋๋ค.
- Debian ๋ฐ Ubuntu 18.04๋ฅผ ์ ์ธํ๊ณ ๋๋ถ๋ถ์ ๋ฐฐํฌํ์ PIE ์ง์์ด ์ข์ง ์์ต๋๋ค.
- OpenSUSE, Centos 7 ๋ฐ RHEL 7์์๋ ์คํ ์ถฉ๋ ๋ณดํธ๊ฐ ์ฝํ๊ณ ๋ค๋ฅธ ๊ฒ์์๋ ์ฌ์ค์ ์กด์ฌํ์ง ์์ต๋๋ค.
- ์ต์ ์ปค๋์ ์ฌ์ฉํ๋ ๋ชจ๋ ๋ฐฐํฌํ์ RELRO๋ฅผ ์ผ๋ถ ์ง์ํ๋ฉฐ Ubuntu 18.04๊ฐ ์ ๋๋ฅผ ๋ฌ๋ฆฌ๊ณ Debian์ด XNUMX์๋ฅผ ์ฐจ์งํฉ๋๋ค.
์ด๋ฏธ ์ธ๊ธํ ๋๋ก ์ด ํ์ ์ธก์ ํญ๋ชฉ์ ๋ชจ๋ ๋ฒ์ ์ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ๋ํ ํ๊ท ์
๋๋ค. ์ต์ ๋ฒ์ ์ ํ์ผ๋ง ๋ณด๋ฉด ์ซ์๊ฐ ๋ฌ๋ผ์ง๋๋ค(์:
ํ 4. ๊ทธ๋ฆผ 3์ ํ์๋ ์คํ ํ์ผ์ ๋ณด์ ํน์ฑ XNUMX (์ ์ฒด ์คํ ํ์ผ ์์ ๋ํ ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํ ๋น์จ)
ํ 5. ๊ทธ๋ฆผ์ ํ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ณด์ ํน์ฑ 3 (์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋๋น ๊ด๋ จ ๊ธฐ๋ฅ ๊ตฌํ ๋น์จ)
๊ทธ๋ผ ์ง์ ์ด ์๋ ๊ฑธ๊น์? ๋ถ๋ช
ํ ์์ต๋๋ค. ์ด๋ ๊ฐ๋ณ ๋ถํฌ์ ๋ํ ํต๊ณ์์ ๋ณผ ์ ์์ต๋๋ค(์:
๋ถํํ๊ฒ๋ ๋ค์ํ ๋ฐฐํฌํ์ ์๋ ๋ค์์ ์คํ ํ์ผ์๋ ์ฌ์ ํ ์์ ๋ณดํธ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Ubuntu 18.04๋ฅผ ๋ณด๋ฉด ngetty ๋ฐ์ด๋๋ฆฌ(getty ๋์ฒด), mksh ๋ฐ lksh ์, picolisp ์ธํฐํ๋ฆฌํฐ, nvidia-cuda-toolkit ํจํค์ง(GPU ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํจํค์ง)๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๊ธฐ๊ณ ํ์ต ํ๋ ์์ํฌ ๋ฑ) ๋ฐ klibc -utils. ๋ง์ฐฌ๊ฐ์ง๋ก mandos-client ๋ฐ์ด๋๋ฆฌ(์ํธํ๋ ํ์ผ ์์คํ ์ผ๋ก ์์คํ ์ ์๋์ผ๋ก ์ฌ๋ถํ ํ ์ ์๋ ๊ด๋ฆฌ ๋๊ตฌ)์ rsh-redone-client(rsh ๋ฐ rlogin์ ์ฌ๊ตฌํ)๋ SUID ๊ถํ์ด ์์ง๋ง NX ๋ณดํธ ์์ด ์ ๊ณต๋ฉ๋๋ค. (. ๋ํ ์ฌ๋ฌ suid ๋ฐ์ด๋๋ฆฌ์๋ ์คํ ์นด๋๋ฆฌ์(์: Xorg ํจํค์ง์ Xorg.wrap ๋ฐ์ด๋๋ฆฌ)์ ๊ฐ์ ๊ธฐ๋ณธ ๋ณดํธ ๊ธฐ๋ฅ์ด ๋ถ์กฑํฉ๋๋ค.
์์ฝ ๋ฐ ๊ฒฐ๋ก
์ด ๊ธฐ์ฌ์์๋ ์ต์ Linux ๋ฐฐํฌํ์ ์ฌ๋ฌ ๋ณด์ ๊ธฐ๋ฅ์ ๊ฐ์กฐํ์ต๋๋ค. ๋ถ์์ ๋ฐ๋ฅด๋ฉด ์ต์ Ubuntu LTS ๋ฐฐํฌํ(18.04)์ Ubuntu 14.04, 12.04 ๋ฐ Debian 9์ ๊ฐ์ด ์๋์ ์ผ๋ก ์๋ก์ด ์ปค๋์ ์ฌ์ฉํ๋ ๋ฐฐํฌํ ์ค์์ ํ๊ท ์ ์ผ๋ก ๊ฐ์ฅ ๊ฐ๋ ฅํ OS ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ค ๋ณดํธ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋ฌ๋ ์กฐ์ฌ๋ ๋ฐฐํฌํ CentOS, RHEL ๋ฐ ์ฐ๋ฆฌ ์ธํธ์ OpenSUSE๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๋ฐ์ง๋ ํจํค์ง ์ธํธ๋ฅผ ์์ฑํ๋ฉฐ ์ต์ ๋ฒ์ (CentOS ๋ฐ RHEL)์์๋ Debian ๊ธฐ๋ฐ ๊ฒฝ์์ฌ(Debian ๋ฐ Ubuntu)์ ๋นํด ์คํ ์ถฉ๋ ๋ฐฉ์ง ๋น์จ์ด ๋ ๋์ต๋๋ค. CentOS์ RedHat ๋ฒ์ ์ ๋น๊ตํ๋ฉด ๋ฒ์ 6์์ 7๊น์ง ์คํ ์นด๋๋ฆฌ์ ๋ฐ RELRO ๊ตฌํ์ด ํฌ๊ฒ ํฅ์๋์์ง๋ง ํ๊ท ์ ์ผ๋ก CentOS์๋ RHEL๋ณด๋ค ๋ ๋ง์ ๊ธฐ๋ฅ์ด ๊ตฌํ๋์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ ๋ฐฐํฌํ์ PIE ๋ณดํธ์ ํน๋ณํ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ์ผ ํ๋ฉฐ, Debian 9 ๋ฐ Ubuntu 18.04๋ฅผ ์ ์ธํ๊ณ ๋ ๋ฐ์ดํฐ ์ธํธ์ ๋ฐ์ด๋๋ฆฌ ์ค 10% ๋ฏธ๋ง์์ ๊ตฌํ๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์กฐ์ฌ๋ฅผ ์๋์ผ๋ก ์ํํ์ง๋ง ์ฌ์ฉ ๊ฐ๋ฅํ ๋ณด์ ๋๊ตฌ๊ฐ ๋ง์ด ์๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค(์:
์ถ์ฒ : habr.com