2023. 7. 8. 17:07ใSystem ์์ ์ค/LINUX
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
๐ Google Authenticator OTP(๊ตฌ๊ธ OTP ์ธ์ฆ) ์ค์น ๋ฐ ์ค์
๐ฝ ๊ฐ์
๐ฆ ์๊ฐ
์ฃผ๋์ ๋ด๋ถ ์๋ฒ๋ ๋ชจ๋ ์ฐ๋ถํฌ 22.04 LTS๋ก ์ค๋น๊ฐ ๋์ด ์๊ณ , VPN์ ํตํด ์ ์ํ ์ ์๊ฒ ๊ตฌ์ฑ ๋์ด ์์ด์.
๋น์ฐํ ์ฌ์ฉ์๋ค์ ํด๋น ์๋ฒ๋ค์ ์ ์ํ๊ธฐ ์ํด SSH๋ฅผ ์ด์ฉํด์ ๋ก๊ทธ์ธ(Login)์ ํ๊ฒ ๋๋๋ฐ, ์ด ๋, ๋ณด๋ค ์์ ํ ์ ๊ทผ์ ์ํด SSH ๋ก๊ทธ์ธ ์ OTP ์ธ์ฆ์ ์ถ๊ฐ๋ก ๋ฐ์ ์ ์๋๋ก ๊ตฌ์ฑํด ๋ณด๋ ค๊ณ ํด์.
์ผ๋ฐ์ ์ผ๋ก SSH ๋ก๊ทธ์ธ ์ ์ฌ์ฉ์์๊ฒ ๊ณ์ ID์ ๋น๋ฐ๋ฒํธ(Password)๋ฅผ ๋ฌป๊ณ , ์ด๋ฅผ ํตํด ์ธ์ฆํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ฒ ๋ผ์. ์ด ๋ฐฉ๋ฒ์ password authentication ๋ฐฉ๋ฒ์ด๋ผ ํ๋ต๋๋ค.
์ด๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ด๊ณ , ์ฌ์ฉ๋ ์ฌ์์. ํ์ง๋ง, ๋ณด์์ ์
์ฅ์ผ๋ก ๋ดค์ ๋, ์์ ํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ ์ ์์ด์.
๋ง์ฝ ๋ด๋ถ ์ฌ์ฉ์๋ค ์ค ๋๊ตฐ๊ฐ๊ฐ ๊ฐ๋จํ ํจ์ค์๋ (์: abc123)์ ์ฌ์ฉํ๋ค๋ฉด ๋ฌด์์ ๋์
๊ณต๊ฒฉ(Brute force Attack) ํน์ ์ฌ์ ๋์
๊ณต๊ฒฉ์ ๊ต์ฅํ ์ทจ์ฝํด ์ง ์ ์๊ธฐ ๋๋ฌธ์ด์์.
๋ํ, ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์
๋ ฅํด์ผ๋ง ์ธ์ฆ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ Shoulder Surfing(์ด๊นจ๋์ด ํ์ณ๋ณด๊ธฐ - ๊ณต๊ฒฉ์๊ฐ ํผํด์๊ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ ๋, ๋ชฐ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณด๋ ๋ฐฉ๋ฒ) ๋ฑ์ ์ฌ์ฉ์ ๋ถ์ฃผ์๋ก ์ธํ ๋น๋ฐ๋ฒํธ ๋
ธ์ถ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด์์.
๋ฌผ๋ก ๋ด๋ถ ์๋ฒ๋ VPN์ ์ด์ฉํ์ง ์์ผ๋ฉด ๋ถ์ ์ ์๊ณ , VPN์ ๊ด๋ฆฌ์๋ง์ด ๋ถ์ ์ ์๋๋ก ์ค์ ํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ๊ณต๊ฒฉ์ ๋นํด ๋น๋ฐ๋ฒํธ๊ฐ ๋
ธ์ถ๋๋ค๊ณ ํด๋ ์๋ฒ์ ์ ์ํ ์ ์๊ฒ ์ง๋ง, ๋ณด๋ค ์์ ํ ๋ณด์์ ์ํด ๊ตฌ๊ธ OTP๋ฅผ ๊ตฌ์ถํ๊ธฐ๋ก ๊ฒฐ์ ํ์์ด์.
SSH key authentication์ ์ ๋ฐฉ๋ฒ๋ณด๋จ ์์ ํ ๋ฐฉ๋ฒ์ผ ์ ์์ด์. Client(ํด๋ผ์ด์ธํธ)์ ํ๋ฝ๋ ssh pubilc key(ssh ๊ณต๊ฐํค)๋ฅผ Server(์๋ฒ)์ ๋ฏธ๋ฆฌ ๋ฃ์ด๋์ด ๋น๋ฐ๋ฒํธ ์
๋ ฅ ์์ด ์๋ฒ์ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ์ด์์. ์ด์ ๋ํ ๋ฐฉ๋ฒ์ Ansible์ ํตํด Linux(๋ฆฌ๋
์ค) ๊ณ์ ์์ฑ ๋, ์ ๋ฆฌ๋ฅผ ํด ๋์๋๋ฐ, ์ด ๊ณณ์ ๊ด์ฌ์ ์ฃผ์ธ์.
์ฌ์ฉ์์ ๋น๋ฐ๋ฒํธ ์
๋ ฅ์ด ์๊ธฐ ๋๋ฌธ์ Key Logger(ํค๋ก๊ฑฐ)๋, ์์์ ์ด์ผ๊ธฐ ํ๋ ์ด๊นจ๋์ด ํ์ณ๋ณด๊ธฐ ๊ณต๊ฒฉ ๋ฑ์์ ๋ณด๋ค ์์ ํ ์ ์๊ณ , ์ฌ์ฉ์๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ธฐ์ตํ ํ์๋ ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ ์ด๋ ํ์๋ ์๋ ๋ฐฉ์์ด์์. ๊ทธ๋์ ์ธ๋ถ์ ๋
ธ์ถ๋ ๊ฐ๋ฅ์ฑ์ด ํ์ ํ ์ค์ด๋ค๊ฒ ๋์.
ํ์ง๋ง, ๋ง์ ์๋ฒ๋ค๋ก ๊ตฌ์ฑ๋ ๋๊ท๋ชจ ํ๊ฒฝ์์ ์ฌ์ฉ์๋ค์ ๊ณต๊ฐํค(authorized_keys) ๊ด๋ฆฌ๋ ์์๋ณด๋ค ์ด๋ ค์์.
๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์์ Private Key(๋น๋ฐํค)๊ฐ ์ ์ถ๋๋ค๋ฉด ์คํ๋ ค ๋์ฑ ์ํํ ์ํฉ์ ์ฒํด์ง ์ํ์ด ์์ด์.
์ด๋ฅผ ๋์ฒํ ๋ฐฉ๋ฒ์ ๋ง์ด ์์ ์ ์๊ฒ ์ง๋ง, ์ฃผ๋๋ Google Authenticator๋ฅผ ์ด์ฉํ์ฌ OTP(one-time password)๋ฅผ ์ด์ฉํ์ฌ 2์ฐจ ์ธ์ฆ์ ๋ํ ๋ณด์์ ๊ฐํํด๋ณด๋ ค ํด์.
2์ฐจ ์ธ์ฆ(Two-Factor Authentication: 2FA) ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๋ณด์์ ์
์ฅ์์ ๋ ์์ ํ ์ ์์ด์.
ํ์ง๋ง, ์ฐ๋ฆฌ ์ฌ์ฉ์ ์
์ฅ์์ ๋ถํธํด์ง ์ ์์ด์.
์๋ํ๋ฉด ์ฌ๋ฌ ์์คํ
์ OTP๋ฅผ ์ค์นํด ๋๊ธฐ ๋๋ฌธ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ๊ณ , OTP ๊ฐ์ ํ์ธํ๊ธฐ ์ํด ํธ๋ํฐ ๋ฑ์ ํตํด OTP ๊ฐ์ ํ์ธํ๊ณ , ์
๋ ฅํด์ผ ํ๋ ์๊ณ ๋ฅผ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ด์์.
์ด๋ ๋ณด์๊ณผ ํธ์๋ ๋ฐ๋น๋กํ๋ ๊ด๊ณ์ด๊ธฐ ๋๋ฌธ์ ์ฃผ๋๋ ํธ์๋ณด๋จ ๋ณด์์ ์ ํํ๊ธฐ๋ก ํ์์ต๋๋ค.
๐ฆ OTP๋?
One Time Password ์ฆ, ์ผํ์ฑ ๋น๋ฐ๋ฒํธ๋ฅผ ๋งํด์. ์๋ง ์จ๋ผ์ธ ๋ฑ
ํน ์๋น์ค ๋ฑ์์ ์ด๋ฏธ ์ฌ๋ฌ๋ถ๋ค์ ์ฌ์ฉํ๊ณ ์์์ง๋ ๋ชฐ๋ผ์. ์ผ๋ฐ์ ์ผ๋ก ์ธ์ฆ์ ์ฌ์ฉ๋๋ ๊ฐ๋ค์ ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ ์ถ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์์ด์.
ํ์ง๋ง, OTP๋ ๊ทธ ๊ฐ์ด ๋์ ์ผ๋ก ๊ณ์ ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์ ์ ์ถ์์๋ ์ผ์ ์๊ฐ์ด๋, ์ผ์ Event(์ด๋ฒคํธ)๊ฐ ๋ฐ์ํ๋ฉด ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์ ์์ ํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋ณผ ์ ์์ด์.
์ฌ๋ฌ OTP Service(์๋น์ค) ์ค์์ ์ฃผ๋๋ ๊ตฌ๊ธ authenticator๋ฅผ ์ ํํ์ด์. ์ผ๋จ Open Source Project(์คํ์์ค ํ๋ก์ ํธ - Apache License 2)์ด๊ณ , ํ์ฌ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ์ค์ธ OPT์ด๊ธฐ ๋๋ฌธ์ด์์. ๋๋ถ๋ถ์ Mobile(๋ชจ๋ฐ์ผ) OS(ios, android, window)๋ฑ ๋ชจ๋ ์ง์ ๊ฐ๋ฅํ๊ณ , ์๋ฒ Package(ํจํค์ง) ์ญ์ ๋๋ถ๋ถ์ OS(Debian, redaht)์ ์ง์ํ๊ธฐ ๋๋ฌธ์ด์์.
๋ค๋ฅธ ๋์ฒด Solution(์๋ฃจ์
)์ ๋ฌด๋ฃ๋ก๋ FreeOTP, ์์ฉ ์ ํ์ผ๋ก๋ authy๊ฐ ๋ง์ด ์ฌ์ฉ๋๋ ๊ฑธ๋ก ์๊ณ ์์ด์.
๐ฝ Google Authenticator OTP
๐ฆ ์ค์น ๋ฐ ์ค์
์ต์ด ์ค์น๋ฅผ ์ํด ํจํค์ง๋ฅผ ์ต์ ํ ํ๋ ์์
์ ํด ์ค๊ฒ์.
๊ทธ๋ฐ ๋ค ๊ตฌ๊ธ authenticator PAM ํจํค์ง๋ฅผ ์ค์นํ๋๋ก ํ ๊ฒ์.
Pluggable Authentication Module ์ฝ์์ธ PAM์ ๋ฆฌ๋
์ค Platform(ํ๋ซํผ)์์ ์ถ๊ฐ ์ธ์ฆ ๊ณ์ฒญ์ ์ ๊ณตํ๋ ๋งค์ปค๋์ฆ์ด์์.
goggle-authenticator ์ค์ ์ ์งํํด ๋ณผ๊ฒ์. ์์ ๋ช
๋ น์ด๋ฅผ ์ด์ฉํด์ google-authenticator ์ค์ ์ ์ํ ์ฌ๋ฌ ์ง๋ฌธ์ด ์์ ๋ผ์.
์ฐธ๊ณ ๋ก google-authenticator๋ OS ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅธ ์ค์ ์ ํด ์ค ์ ์์ด์. ์ค์ ์ ๋ํ ์ ๋ณด๋ ๊ฐ ์ฌ์ฉ์ Home Directory($HOME)/.google-authenticator ํ์ผ๋ก ์ ์ฅ์ด ๋๊ณ , ์์ ๊ฐ์ด ๋ช
๋ น์ด๋ฅผ ํตํด ์์ฑํด ์ค ์ ์์ด์.
์ฃผ๋๋ TOTP ๋ฐฉ์์ ์ด์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ y๋ฅผ ์
๋ ฅํด ์ค๊ฑฐ์์.
๋ํ, root ๊ณ์ ์ผ๋ก ํ๋ฉด root ๊ณ์ ์ด ์ ๊ธธ ์ ์์ผ๋ ๋ค๋ฅธ ๊ณ์ ์ผ๋ก ์ค์ ํ๋ ๊ฑธ ์ถ์ฒํด์.
๐ก ์ฐธ๊ณ ์ฌํญ
Goggle Authenticator์ 2๊ฐ์ง ์ธ์ฆ ๋ฐฉ๋ฒ
์ด ์ธ์ฆ ๋ฐฉ๋ฒ์ ๋ํ ๋ด์ฉ์ ์ธ์ฆ์ ๋ํ Algorithm(์๊ณ ๋ฆฌ์ฆ)์ธ๋ฐ, ์๊ฐ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒ์ธ์ง Event(google-authenticator๋ counter ์ฌ์ฉ) ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒ์ธ์ง์ ๋ํ ์ฐจ์ด.
1. TOTP(Time-Based)
Server-Client(ํธ๋ํฐ OTP App ๋ฑ) ๊ฐ ์๋ก ์ด๋ ํ ์ ๋ณด๋ ์ฃผ๊ณ ๋ฐ์ง ์๋ ๋ฐฉ์์ผ๋ก ๋์ผํ ์ธ์๊ฐ(input)์ผ๋ก ๋์ผํ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ, ๊ฒฐ๊ณผ๊ฐ์ธ Token(ํ ํฐ)์ด ์๋ก ๊ฐ์์ง ํน์ ๋ค๋ฅธ์ง๋ง ํ๋จํ์ฌ ์ธ์ฆ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์.
TOTP ๋ฐฉ์์ ๊ฒฝ์ฐ Secret Key(๋น๋ฐํค)์ ์๊ฐ์ ์ธ์๊ฐ์ผ๋ก ์ฌ์ฉํ๋๋ฐ, ๋์ผํ ๋น๋ฐํค์ ์๊ฐ์ด๋ผ๋ฉด ๊ฐ์ ํ ํฐ์ด ๋์ค๊ธฐ ๋๋ฌธ์ ์ธ์ฆ์ด ํต๊ณผํ๋ ๋ฐฉ์.
TOTP๋ NTP(Network Time Protocol) ๋ฑ์ ์๊ฐ ๋๊ธฐํ๊ฐ ๋งค์ฐ ์ค์ํ๋ฉฐ, ์๊ฐ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ ํ ํฐ์ด ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ธ์ฆ์ ํ ์ ์๊ฒ ๋๋ค. (์๊ฐ์ฐจ ๋๋น ์ค์ ๊ฐ๋ฅ)
2. HTOP(HMAC-based; Hash-based Message Authentication Code)
๋น๋ฐํค์ ํจ๊ป counter(์นด์ดํฐ)๋ฅผ ์ด์ฉํ์ฌ ์ธ์ฆํ๋ ๋ฐฉ์์ผ๋ก ์นด์ดํฐ๋ 1๋ถํฐ ์์ํ๋ฉฐ, ์ธ์ฆ์ด ์ฑ๊ณตํ๊ฑฐ๋, ํด๋ผ์ด์ธํธ์ ์ฆ๊ฐ ์์ฒญ(Reload Button)์ด ์์ ๊ฒฝ์ฐ 1์ฉ ์ฆ๊ฐํ๊ฒ ๋๋ ๋ฐฉ์์ด๋ฉฐ, 30์ด๋ง๋ค ํ ํฐ์ด ๋ณ๊ฒฝ๋๋ TOTP ๋ฐฉ์๊ณผ ๋ค๋ฅด๊ฒ HOTP๋ ์ด๋ฒคํธ(์์ฒญ)์ด ์์ ๊ฒฝ์ฐ ํ ํฐ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๊ธฐ ๋๋ฌธ์ TOTP๊ฐ ๋ณด๋ค ๋ณด์์ ์์ .
์์ ๊ฐ์ด ์ฌ๋ฌ๊ฐ์ ๊ฐ๋ค์ด ์์ฑ๋๊ณ ํ์ ๋์์ด์.
๋ํ, QR Code๊ฐ ํ๋ฉด์ ์์ฒญ ํฌ๊ฒ ๋์์! ํด๋ผ์ด์ธํธ App์์ ์ด QR Code์ Scan(์ค์บ)ํ๊ฒ ๋๋ฉด ์๋์ผ๋ก ์ค์ ์ด ์งํ๋ ๊ฑฐ์์.
์์์ ๋์จ ๋น๋ฐํค ๊ฐ์ ์๊ฐ๊ณผ ํจ๊ป ์๊ณ ๋ฆฌ์ฆ ์ธ์๊ฐ์ผ๋ก ์ฌ์ฉ๋ ์ค์ํ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋
ธ์ถ๋์ง ์๋๋ก ํด์ฃผ์ผ์ผํด์.
๋ํ verification code๋ ํ ํฐ ๊ฐ์ด์์. ์ฃผ๋์ฒ๋ผ TOTP ์ค์ ์ด๋ผ๋ฉด 30์ด๋ง๋ค OTP ๊ฐ์ด ๋ณ๊ฒฝ๋ ๊ฑฐ์์.
๋ง์ง๋ง์ผ๋ก emergency scratch code 5๊ฐ๊ฐ ๋ณด์ด๋๋ฐ, ์ด๊ฒ์ ๋จ๋ง๊ธฐ ๋ฑ์ ์์ด๋ฒ๋ ธ์ ์๊ธํ ์ํฉ์ ์ฌ์ฉ๋๋ ๊ฐ๋ค๋ก ์๊ฐ๋ฑ๊ณผ ๊ด๊ณ์์ด ์ code ๊ฐ์ ์
๋ ฅํ๊ฒ ๋๋ฉด ์ธ์ฆ์ ์ฑ๊ณตํ๊ฒ ๋ผ์.
๋ํ, ํ๋ฒ ์ธ์ฆ์ด ์งํ๋ code๋ ๋ ์ด์ ์ฌ์ฉํ ์ ์์ด ๋๋ฌธ์ ๋๋ํ๊ฒ ์ค๋นํด ์ฃผ๋๊ฑธ ๋ณผ ์ ์์ด์.
emergency scratch code๋ ๋ฐ๋ก Memo(๋ฉ๋ชจ) ํด ๋๋๊ฒ ์ข์ ๊ฑฐ ๊ฐ์์.
์ด์ ๋จ๋ง๊ธฐ์์ OTP App์ ์คํํ๊ณ , QR Code Scan ๋ฑ์ ํตํด QR Code๋ฅผ ์ค์บํ๊ฑฐ๋, secret key๋ฅผ ํตํด ์ ์ํด ์ค ์ ์์ด์.
QR Code๋ฅผ ์ค์บํ๋ฉด 30์ด๋ง๋ค ๋ณ๊ฒฝ๋๋ 6์๋ฆฌ OTP ๊ฐ์ด ๋์ค๊ฒ ๋๋๋ฐ, ์ฌ๊ธฐ๊น์ง ๋์๋ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋์ด๊ฐ ์ ์์ด์.
์ด ์ํฉ์์ y๋ฅผ ์
๋ ฅํ์ฌ Home Directory(ํ ๋๋ ํฐ๋ฆฌ)์ ์๋ ๊ตฌ๊ธ ์ธ์ฆ ํ์ผ์ ์ต์ ํ ํด์ค์ผ ํด์.
์์ ๊ฐ์ด ๋์ค๋ฉด ์ค๊ฐ์ ๊ณต๊ฒฉ(Main-inthe-middle Attack) ๊ณต๊ฒฉ์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์๋ ๊ณต๊ฒฉ ๋ฐฉ์ด๋ฅผ ์ํด ๋ก๊ทธ์ธ์ 30์ด๋ง๋ค ํ๋ฒ๋ง ๊ฐ๋ฅํ๋๋ก ๋ก๊ทธ์ธ์ ์ ํํ๊ธฐ ์ํด y์ ์
๋ ฅํ์ฌ ์ค๋๋ค.
๊ทธ๋ฐ ๋ค ์ด ๊ณณ์์ n์ ์
๋ ฅํ์ฌ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ ์๊ฐ ํธ์ฐจ๋ฅผ ํด๊ฒฐํ๋ ์๊ฐ ๊ธฐ๊ฐ์ ํ์ฅ์ ํ์ฉํ์ง ์์ผ๋ฏ๋ก, ๋ณด๋ค ์์ ํ ๋ณด์์ ๊ตฌ์ถํด ์ฃผ๋๋ก ํ ๊ฑฐ์์.
TOTP์ ๊ฒฝ์ฐ ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์๊ฐ์ด ํ์ด์ง๊ฒ๋๋ฉด ์ธ์ฆ์ด ์คํจํ๊ฒ ๋๋ ๋ฐฉ์์ด์์. ์ด๋ฅผ ๋๋นํ์ฌ ํ์ฌ ์๊ฐ ์, ๋ค๋ก ์ฌ์ ์๊ฐ์ ๋ฌ์ ์ ํจ๊ธฐ๊ฐ์ ๋๋ฆด์ ์์ด์.
OTP ์ธ์ฆ์์ window size๋ผ๋ ๊ฐ์ผ๋ก ์ค์ ํ ์ ์๋๋ฐ, default window size๋ 3์ด์์. ์ด ์ฌ์ ํญ์ ๋๋ ค 4๋ถ ์ฐจ์ด๊น์ง ์ ํจ ์ธ์ฆ์ ์ฒ๋ฆฌํ ์ง, ์ฆ 17๋ก ๋ณ๊ฒฝํ๊ฒ ๋๋๋ ์ค์ ์ ํ๋ ๋ถ๋ถ์ด์์. TOTP์์ window size 1์ 30์ด์์. ํ์ฌ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์, ๋ค๋ก “8(์) + 1(ํ์ฌ) + 8(๋ค)”์ ์ฌ์ ์ธ์ฆ์๊ฐ, 4๋ถ์ด ๋๋ ๋ฐฉ์์ด์์. ๋ฐ๋ฉด HOTP๋ window size 1๋ count 1์ด ๋๋ต๋๋ค. ์๋ฒ๋ ๋ง์ง๋ง์ผ๋ก ์ธ์ฆ์ด ์ฑ๊ณตํ counter๋ฅผ ์ ์ฅํ๊ณ ๊ทธ ์ดํ window size๋งํผ counter๋ฅผ ์ฆ๊ฐํ๋ฉด์ token๊ฐ์ด ์ผ์น ์ ๋ฌด๋ฅผ ํ์ธํ๋ ๋ฐฉ์์ด์์. ์ด window size๊ฐ ํฌ๋ค๋ฉด? ๋น์ฐํ ๋ณด์์ ์์ ํ ์ ์์ด์.
์ด ๊ณณ์์ y๋ฅผ ์
๋ ฅํ์ฌ ๋ก๊ทธ์ธ ์๋ ํ์๋ฅผ 3ํ๋ก ์ ํํด ์ฃผ๋๋ก ํ ๊ฒ์.
์ด๋ ๊ฒ 2๋จ๊ณ ์ธ์ฆ ๊ธฐ๋ฅ ๊ตฌํ์ ์๋ฃํด ์ฃผ์์ด์.
์ ๋ช
๋ น์ด๋ฅผ ํตํด ์ค์ ๋ด์ฉ์ ํ์ธํ ์ ์๋๋ฐ, ํด๋น ํ์ผ์ ๊ถํ์ 400์ด์์.
์์์ ์์ฑ๋ Secret key(๋น๋ฐํค)์ ์ค์ ๋ค์ด ๋ชจ๋ ์ ์ฅ๋จ์ ํ์ธํ ์ ์์๊ฑฐ์์.
์ฒซ๋ฒ์งธ ๋ผ์ธ์ด Secret key(๋น๋ฐํค)์ด๊ณ ๋ค์ด์ด “๋ก ์์๋๋OTP์ ์ค์ ์ด ์์นํ๊ณ ์์ด์.
๊ฐ ์ค์ ์ ์๋ฏธ๋ ์์์ ์ธ๊ธํด ๋ชจ๋ ์ ์ ์์๊ฑฐ์์.
๋ง์ง๋ง 5๋ผ์ธ์ emergency scratch code์์. ํด๋น ์ฝ๋๋ ์ฌ์ฉ๋ ๋๋ง๋ค ์ค์ ํ์ผ์์ ํด๋น ์ฝ๋๊ฐ ์ญ์ ๋๊ฒ ๋ผ์.
๐ฆ PAM ์ค์
์ด๋ฒ์๋ ์ฌ์ฉํ๊ณ ์ ํ๋ Service(์๋น์ค)์ google_authenticator PAM Module(๋ชจ๋)์ ์ถ๊ฐํด ์ฃผ๋๋ก ํด ๋ณผ๊ฒ์.
์ฃผ๋๋ SSH์ ์ ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ /etc/pam.d/sshd Line(๋ผ์ธ)์ ์ถ๊ฐํด ์ค ๊ฑฐ์์. SSH๊ฐ ์๋ su, sudo, passwd ๋ฑ๊ณผ ๊ฐ์ ๋ช
๋ น์๋ OTP๋ฅผ ์ ์ฉํด ์ค ์ ์์ด์.
auth required pam_google_authenticator.so secret=${HOME}/google_authenticator
auth required pam_sepermit.so
์ฃผ๋๋ ๋ค์ root๋ก ์ ํํด์ ์์ ๊ฐ์ด 58๋ฒ์งธ ์ค์ ์ถ๊ฐํด ์ฃผ์์ด์.
pam_google_authenticator๊ฐ ์์์ ์์ฑํ ~/.google_authenticator ๋ด์ฉ์ ์ฝ์ ๋ค ์ธ์ฆ์ ์งํํ๋ ๋ฐฉ์์ด์์.
๋ง์ฝ ํด๋น ํ์ผ์ด ์๋ค๋ฉด ์ธ์ฆ์ ์คํจํ๊ฒ ๋ ๊ฑฐ์์.
pam_google_authenticator์ man page(์ฌ์ฉ ์ค๋ช
์)๋ฅผ ์ฝ์ด๋ณด๋ฉด SSH์ ์ ์ฉ ์ ssh_config ํ์ผ์ ChallengeResponseAuthentication yes๋ฅผ ์ถ๊ฐํ๋ผ๊ณ ๋์ ์์ด์.
์ด ์ค์ ์ด ์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ yes์ด์ง๋ง, ๋ฐฐํฌํ์ ๊ธฐ๋ณธ ์ค์ ์ ๋ค๋ฅผ ์ ์๊ธฐ ๋๋ฌธ์ ์ถ๊ฐํ๋๊ฒ ์ข์์.
ChallengeResponseAuthentication yes
์์ ๊ฐ์ด ์ค์ ํ๋ค๋ฉด SSH Daemon์ ๋ด๋ ธ๋ค๊ฐ ๋ค์ ์ฌ๋ ค์ฃผ์ด์ผ ํด์.
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
'System ์์ ์ค > LINUX' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DevOps][Ubuntu-Linux] Shell Script ์ํธํ feat.SHC(Shell Script Encryption) (0) | 2023.08.07 |
---|---|
[DevOps][Linux] Shell Script๋ฅผ ์ด์ฉํ์ฌ ์๋ฒ ์ ์ ์ฌ์ฉ์ ์ ๋ณด ๋์ค์ฝ๋์ ๋ณด๋ด๊ธฐ (0) | 2023.08.07 |
[Linux] ์ฐ๋ถํฌ(Ubuntu) Fail2ban ๋ณด์ ์ค์ (0) | 2023.07.08 |
[Linux] ์ฐ๋ถํฌ(Ubuntu) SSH ๋ณด์ ์ค์ (0) | 2023.07.08 |
[Linux] Ubuntu 22.04 ZFS ์ค์ (0) | 2023.07.08 |