XNUMX๊ฐ์๊ฐ์ ๊ฐ๋ฐ ๋์
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ :
- ๋ณด์ ๋ณ๊ฒฝ ์ฌํญ:
- ssh-agent์์ SSH ์ธ์ฆ์ ์ํด ์์ฑ๋์ง ์์ FIDO ํค๋ฅผ ์ฌ์ฉํ ๋(ํค ID๋ "ssh:" ๋ฌธ์์ด๋ก ์์ํ์ง ์์) SSH ํ๋กํ ์ฝ์ ์ฌ์ฉ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฉ์์ง๊ฐ ์๋ช ๋๋์ง ํ์ธํฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก ์ธํด ssh-agent๊ฐ FIDO ํค๊ฐ ์๋ ์๊ฒฉ ํธ์คํธ๋ก ๋ฆฌ๋๋ ์ ๋์ด ์น ์ธ์ฆ ์์ฒญ์ ๋ํ ์๋ช ์ ์์ฑํ๊ธฐ ์ํด ์ด๋ฌํ ํค๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ์ฐจ๋จํ๋ ๊ฒ์ด ํ์ฉ๋์ง ์์ต๋๋ค(์ญ์ ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ๊ฐ SSH ์์ฒญ์ ์๋ช ํ ์ ์๋ ๊ฒฝ์ฐ๋ ์ฒ์์ ์ ์ธ๋จ). ํค ์๋ณ์์ "ssh:" ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋๋ค).
- ssh-keygen์ ์์ฃผ ํค ์์ฑ์๋ FIDO 2.1 ์ฌ์์ ์ค๋ช ๋ credProtect ์ถ๊ฐ ๊ธฐ๋ฅ์ ๋ํ ์ง์์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ด ์ถ๊ฐ ๊ธฐ๋ฅ์ ํ ํฐ์์ ์์ฃผ ํค๋ฅผ ์ถ์ถํ ์ ์๋ ์์ ์ ์ํํ๊ธฐ ์ ์ PIN์ ์๊ตฌํ์ฌ ํค์ ๋ํ ์ถ๊ฐ ๋ณดํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ ์ฌ์ ์ธ ํธํ์ฑ ๋ณ๊ฒฝ ์ฌํญ:
- FIDO/U2F๋ฅผ ์ง์ํ๋ ค๋ฉด libfido2 ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ 1.5.0 ์ด์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด์ ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๋ถ๋ถ์ ์ผ๋ก ๊ตฌํ๋์์ง๋ง ์ด ๊ฒฝ์ฐ ์ฃผ๋ฏผ ํค, PIN ์์ฒญ, ์ฌ๋ฌ ํ ํฐ ์ฐ๊ฒฐ ๋ฑ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ssh-keygen์์๋ ๋์งํธ ์๋ช ํ์ธ์ ํ์ํ ์ธ์ฆ์ ๋ฐ์ดํฐ๊ฐ ํ์ธ ์ ๋ณด ํ์์ ์ถ๊ฐ๋์์ผ๋ฉฐ FIDO ํค ์์ฑ ์ ์ ํ์ ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค.
- OpenSSH๊ฐ FIDO ํ ํฐ์ ์ก์ธ์คํ๊ธฐ ์ํด ๋ ์ด์ด์ ์ํธ ์์ฉํ ๋ ์ฌ์ฉ๋๋ API๊ฐ ๋ณ๊ฒฝ๋์์ต๋๋ค.
- OpenSSH์ ํด๋์ฉ ๋ฒ์ ์ ๋น๋ํ ๋ ์ด์ automake๋ ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ์ ๊ทธ์ ์๋ฐ๋๋ ๋น๋ ํ์ผ์ ์์ฑํด์ผ ํฉ๋๋ค(๊ฒ์๋ ์ฝ๋ tar ํ์ผ์์ ๋น๋ํ๋ ๊ฒฝ์ฐ ๊ตฌ์ฑ์ ์ฌ์์ฑํ ํ์๊ฐ ์์ต๋๋ค).
- SSH ๋ฐ ssh-keygen์์ PIN ํ์ธ์ด ํ์ํ FIDO ํค์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. PIN์ผ๋ก ํค๋ฅผ ์์ฑํ๊ธฐ ์ํด "verify-required" ์ต์ ์ด ssh-keygen์ ์ถ๊ฐ๋์์ต๋๋ค. ์ด๋ฌํ ํค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์๋ช ์์ฑ ์์ ์ ์ํํ๊ธฐ ์ ์ ์ฌ์ฉ์์๊ฒ PIN ์ฝ๋๋ฅผ ์ ๋ ฅํ์ฌ ์์ ์ ํ์ธํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
- sshd์์๋ "verify-required" ์ต์ ์ดauthorized_keys ์ค์ ์ ๊ตฌํ๋์ด ์์ผ๋ฉฐ, ์ด๋ฅผ ์ํด์๋ ํ ํฐ ์์ ์ค์ ์ฌ์ฉ์์ ์กด์ฌ๋ฅผ ํ์ธํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. FIDO ํ์ค์ ์ด๋ฌํ ํ์ธ์ ์ํ ์ฌ๋ฌ ์ต์ ์ ์ ๊ณตํ์ง๋ง ํ์ฌ OpenSSH๋ PIN ๊ธฐ๋ฐ ํ์ธ๋ง ์ง์ํฉ๋๋ค.
- sshd ๋ฐ ssh-keygen์๋ FIDO Webauthn ํ์ค์ ์ค์ํ๋ ๋์งํธ ์๋ช ํ์ธ ์ง์์ด ์ถ๊ฐ๋์ด ์น ๋ธ๋ผ์ฐ์ ์์ FIDO ํค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- SSH์ CertificateFile ์ค์ ์์
ControlPath, IdentityAgent, IdentityFile, LocalForward ๋ฐ
RemoteForward๋ฅผ ์ฌ์ฉํ๋ฉด "${ENV}" ํ์์ผ๋ก ์ง์ ๋ ํ๊ฒฝ ๋ณ์์ ๊ฐ์ ๋์ฒดํ ์ ์์ต๋๋ค. - ssh ๋ฐ ssh-agent์๋ ssh-askpass ํธ์ถ์ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ $SSH_ASKPASS_REQUIRE ํ๊ฒฝ ๋ณ์์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ssh์ AddKeysToAgent ์ง์๋ฌธ์ ์๋ ssh_config์ ํค์ ์ ํจ ๊ธฐ๊ฐ์ ์ ํํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ง์ ๋ ์ ํ์ด ๋ง๋ฃ๋๋ฉด ํค๋ ssh-agent์์ ์๋์ผ๋ก ์ญ์ ๋ฉ๋๋ค.
- scp ๋ฐ sftp์์ "-A" ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด์ ssh-agent๋ฅผ ์ฌ์ฉํ์ฌ scp ๋ฐ sftp๋ก์ ๋ฆฌ๋๋ ์ ์ ๋ช ์์ ์ผ๋ก ํ์ฉํ ์ ์์ต๋๋ค(๋ฆฌ๋๋ ์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค).
- ํธ์คํธ ํค ์ด๋ฆ์ ์ง์ ํ๋ SSH ์ค์ ์ '%k' ๋์ฒด์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ํค๋ฅผ ๋ณ๋์ ํ์ผ(์: "UserKnownHostsFile ~/.ssh/known_hosts.d/%k")์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
- ์ญ์ ๋ stdin์์ ํค๋ฅผ ์ฝ์ผ๋ ค๋ฉด "ssh-add -d -" ์์ ์ ์ฌ์ฉํ๋๋ก ํ์ฉํฉ๋๋ค.
- sshd์์๋ ์ฐ๊ฒฐ ์ ๋ฆฌ ํ๋ก์ธ์ค์ ์์๊ณผ ๋์ด ๋ก๊ทธ์ ๋ฐ์๋๋ฉฐ MaxStartups ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ท์ ๋ฉ๋๋ค.
OpenSSH ๊ฐ๋ฐ์๋ค์ ๋ํ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก SHA-1 ํด์๋ฅผ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ๊ณง ํ๊ธฐ๋ ๊ฒ์ด๋ผ๊ณ ํ์ํ์ต๋๋ค.
OpenSSH์์ ์๋ก์ด ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ํํ๊ฒ ์ ํํ๊ธฐ ์ํด ๋ค์ ๋ฆด๋ฆฌ์ค์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก UpdateHostKeys ์ค์ ์ ํ์ฑํํ์ฌ ํด๋ผ์ด์ธํธ๋ฅผ ๋ณด๋ค ์์ ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์๋ ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์ ๊ถ์ฅ๋๋ ์๊ณ ๋ฆฌ์ฆ์๋ RFC2 ๊ธฐ๋ฐ์ rsa-sha256-512/8332 RSA SHA-2(OpenSSH 7.2๋ถํฐ ์ง์๋๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋จ), ssh-ed25519(OpenSSH 6.5๋ถํฐ ์ง์) ๋ฐ ecdsa-sha2-nistp256/384/521 ๊ธฐ๋ฐ์ด ํฌํจ๋ฉ๋๋ค. RFC5656 ECDSA(OpenSSH 5.7๋ถํฐ ์ง์).
์ถ์ฒ : opennet.ru