SSHD์˜ ์ทจ์•ฝ์ ์„ ์ œ๊ฑฐํ•œ OpenSSH 8.9 ์ถœ์‹œ

8.9๊ฐœ์›” ๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— SSH 2.0 ๋ฐ SFTP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•œ ์ž‘์—…์„ ์œ„ํ•œ ๊ฐœ๋ฐฉํ˜• ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„ ๊ตฌํ˜„์ธ OpenSSH XNUMX๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ sshd๋Š” ์ž ์žฌ์ ์œผ๋กœ ์ธ์ฆ๋˜์ง€ ์•Š์€ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์ธ์ฆ ์ฝ”๋“œ์˜ ์ •์ˆ˜ ์˜ค๋ฒ„ํ”Œ๋กœ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜์ง€๋งŒ ์ฝ”๋“œ์˜ ๋‹ค๋ฅธ ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜์™€ ๊ฒฐํ•ฉํ•ด์„œ๋งŒ ์•…์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ˜•ํƒœ์—์„œ๋Š” ๊ถŒํ•œ ๋ถ„๋ฆฌ ์ถ”์  ์ฝ”๋“œ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋ณ„๋„์˜ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ทจ์•ฝ์ ์˜ ๋ฐœํ˜„์ด ์ฐจ๋‹จ๋˜๋ฏ€๋กœ ๊ถŒํ•œ ๋ถ„๋ฆฌ ๋ชจ๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์ทจ์•ฝ์ ์„ ์•…์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ถŒํ•œ ๋ถ„๋ฆฌ ๋ชจ๋“œ๋Š” 2002๋…„ OpenSSH 3.2.2๋ถ€ํ„ฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์—ˆ์œผ๋ฉฐ, 7.5๋…„ ๊ณต๊ฐœ๋œ OpenSSH 2017 ๋ฆด๋ฆฌ์Šค๋ถ€ํ„ฐ ํ•„์ˆ˜์˜€์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฆด๋ฆฌ์Šค 6.5(2014)๋ถ€ํ„ฐ ํœด๋Œ€์šฉ ๋ฒ„์ „์˜ OpenSSH์—์„œ๋Š” ์ •์ˆ˜ ์˜ค๋ฒ„ํ”Œ๋กœ ๋ฐฉ์ง€ ํ”Œ๋ž˜๊ทธ๋ฅผ ํฌํ•จํ•˜๋Š” ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ์ทจ์•ฝ์ ์ด ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค.

๊ธฐํƒ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ:

  • sshd์— ์žˆ๋Š” OpenSSH์˜ ํœด๋Œ€์šฉ ๋ฒ„์ „์€ MD5 ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์›์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค(libxcrypt์™€ ๊ฐ™์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ๋งํฌ ๋ฐ˜ํ™˜ ํ—ˆ์šฉ).
  • ssh, sshd, ssh-add ๋ฐ ssh-agent๋Š” ssh-agent์— ์ถ”๊ฐ€๋œ ํ‚ค์˜ ์ „๋‹ฌ ๋ฐ ์‚ฌ์šฉ์„ ์ œํ•œํ•˜๋Š” ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฉด ssh-agent์—์„œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๊ณผ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ทœ์น™์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ˜ธ์ŠคํŠธ scylla.example.org์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž, ํ˜ธ์ŠคํŠธ cetus.example.org์— ์‚ฌ์šฉ์ž perseus, ํ˜ธ์ŠคํŠธ charybdis.example.org์— ์‚ฌ์šฉ์ž medea๋ฅผ ์ธ์ฆํ•˜๋Š” ๋ฐ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์ค‘๊ฐ„ ํ˜ธ์ŠคํŠธ scylla.example.org๋ฅผ ํ†ตํ•œ ๋ฆฌ๋””๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: $ ssh-add -h "[์ด๋ฉ”์ผ ๋ณดํ˜ธ]" \ -h "scylla.example.org" \ -h "scylla.example.org>[์ด๋ฉ”์ผ ๋ณดํ˜ธ]\ ~/.ssh/id_ed25519
  • ssh ๋ฐ sshd์—์„œ๋Š” ํ‚ค ๊ตํ™˜ ๋ฐฉ๋ฒ•์ด ์„ ํƒ๋˜๋Š” ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ธฐ๋ณธ์ ์œผ๋กœ KexAlgorithms ๋ชฉ๋ก์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.[์ด๋ฉ”์ผ ๋ณดํ˜ธ]"(ECDH/x25519 + NTRU Prime), ์–‘์ž ์ปดํ“จํ„ฐ์—์„œ ์„ ํƒ์— ์ €ํ•ญํ•ฉ๋‹ˆ๋‹ค. OpenSSH 8.9์—์„œ๋Š” ์ด ํ˜‘์ƒ ๋ฐฉ๋ฒ•์ด ECDH์™€ DH ๋ฐฉ๋ฒ• ์‚ฌ์ด์— ์ถ”๊ฐ€๋˜์—ˆ์ง€๋งŒ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
  • ssh-keygen, ssh ๋ฐ ssh-agent์—์„œ๋Š” ์ƒ์ฒด ์ธ์ฆ์šฉ ํ‚ค๋ฅผ ํฌํ•จํ•˜์—ฌ ์žฅ์น˜ ํ™•์ธ์— ์‚ฌ์šฉ๋˜๋Š” FIDO ํ† ํฐ ํ‚ค ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • allowednamelist ํŒŒ์ผ์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ssh-keygen์— "ssh-keygen -Y match-principals" ๋ช…๋ น์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ssh-add ๋ฐ ssh-agent๋Š” PIN ์ฝ”๋“œ๋กœ ๋ณดํ˜ธ๋˜๋Š” FIDO ํ‚ค๋ฅผ ssh-agent์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(์ธ์ฆ ์‹œ PIN ์š”์ฒญ์ด ํ‘œ์‹œ๋จ).
  • ssh-keygen์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ช… ์ƒ์„ฑ ์ค‘์— ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜(sha512 ๋˜๋Š” sha256)์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ssh ๋ฐ sshd์—์„œ๋Š” ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ๋ฅผ ์Šคํƒ์˜ ์ค‘๊ฐ„ ๋ฒ„ํผ๋ง์„ ์šฐํšŒํ•˜์—ฌ ์ˆ˜์‹  ํŒจํ‚ท์˜ ๋ฒ„ํผ๋กœ ์ง์ ‘ ์ฝ์Šต๋‹ˆ๋‹ค. ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฑ„๋„ ๋ฒ„ํผ์— ์ง์ ‘ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ๋„ ๋น„์Šทํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.
  • SSH์—์„œ PubkeyAuthentication ์ง€์‹œ๋ฌธ์€ ์‚ฌ์šฉํ•  ํ”„๋กœํ† ์ฝœ ํ™•์žฅ์„ ์„ ํƒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์ง€์›๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก(yes|no|unbound|host-bound)์„ ํ™•์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๋ ˆ๊ฑฐ์‹œ SCP/RCP ํ”„๋กœํ† ์ฝœ ๋Œ€์‹  SFTP๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก scp ์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. SFTP๋Š” ๋ณด๋‹ค ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ์ƒ๋Œ€ ํ˜ธ์ŠคํŠธ ์ธก์˜ ํŒŒ์ผ ์ด๋ฆ„์— glob ํŒจํ„ด์˜ ์‰˜ ์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, SCP ๋ฐ RCP๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ผ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐ˜ํ™˜๋œ ๊ฐœ์ฒด ์ด๋ฆ„์˜ ์ •ํ™•์„ฑ๋งŒ ํ™•์ธํ•˜๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ ์ ˆํ•œ ํ™•์ธ์ด ์—†๋Š” ๊ฒฝ์šฐ ์š”์ฒญํ•œ ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๋‹ค๋ฅธ ํŒŒ์ผ ์ด๋ฆ„์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. SFTP ํ”„๋กœํ† ์ฝœ์€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ "~/"์™€ ๊ฐ™์€ ํŠน์ˆ˜ ๊ฒฝ๋กœ์˜ ํ™•์žฅ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฐจ์ด์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด์ „ OpenSSH ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” SFTP ์„œ๋ฒ„ ๊ตฌํ˜„์˜ ~/ ๋ฐ ~user/ ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด SFTP ํ”„๋กœํ† ์ฝœ ํ™•์žฅ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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