๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT-Engineering/Linux

Ubuntu์—์„œ ssh์ ‘์†์‹œ Google Authenticator ์—ฐ๋™

by ๐Ÿงž‍โ™‚๏ธ 2024. 5. 23.
๋ฐ˜์‘ํ˜•

Ubuntu22๋ฅผ ์›น์„œ๋ฒ„๋กœ ์“ฐ๊ณ  ์žˆ๋Š”๋ฐ, ํ•ด๋‹น ์„œ๋ฒ„ ๊ด€๋ฆฌ์ž๊ฐ€ ๋ณดํ†ต ssh๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ๋Š” ssh key ํ™•์ธ๋„ ์•ˆํ•˜๊ณ  ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ๋งŒ์œผ๋กœ ๋˜์–ด ์žˆ๊ธฐ์— ๋ณด์•ˆ์—์„œ ์ด ์ •๋„ ์ˆ˜์ค€์œผ๋กœ๋Š” ์•ˆ๋˜๊ฒ ๋‹ค ์‹ถ์–ด์„œ OTP ๋„์ž…์„ ๊ฒ€ํ† ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ Google Authenticator๋ฅผ ์จ์„œ ํ™œ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์ง€์š”.

๋‹ค์Œ์€ ๊ทธ ๋ฐฉ๋ฒ•๊ณผ ์ ˆ์ฐจ์— ๋Œ€ํ•ด์„œ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

SSH ๋ณด์•ˆ 2๋‹จ๊ณ„ OTP ์„ค์ •

SSH์— ๋‘ ๋‹จ๊ณ„ ์ธ์ฆ (2FA)์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๊ณ ๊ธ‰ ๋ณด์•ˆ ์กฐ์น˜ ์ค‘ ํ•˜๋‚˜๋กœ, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋˜๋Š” SSH ํ‚ค ์ธ์ฆ ์™ธ์— ์ถ”๊ฐ€์ ์ธ ์ธ์ฆ ์ˆ˜๋‹จ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ, Google Authenticator์™€ ๊ฐ™์€ ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ์ผํšŒ์šฉ ํŒจ์Šค์›Œ๋“œ (TOTP) ์•ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— SSH์— 2FA๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ํ•„์š”ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์„ค์น˜

๋จผ์ €, ์„œ๋ฒ„์— libpam-google-authenticator ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒจํ‚ค์ง€๋Š” PAM (Pluggable Authentication Module)์„ ์‚ฌ์šฉํ•˜์—ฌ Google Authenticator์™€์˜ ํ†ตํ•ฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

sudo apt update
sudo apt install libpam-google-authenticator

2. ๊ฐ ์‚ฌ์šฉ์ž์˜ Google Authenticator ์„ค์ •

๊ฐ ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ๊ณ„์ •์—์„œ google-authenticator ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ ๊ฐœ์ธ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด ํ‚ค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ QR ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์Šค๋งˆํŠธํฐ์— Google Authenticator ์•ฑ์„ ์„ค์น˜ํ•œ ํ›„, ์ด QR ์ฝ”๋“œ๋ฅผ ์Šค์บ”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Google Authenticator ์•ฑ

google-authenticator

๋ช…๋ น์–ด ์‹คํ–‰ ์ค‘ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ฌธ์— ๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

  • Do you want authentication tokens to be time-based (y/n): y ์ž…๋ ฅ
  • ์ดํ›„์˜ ์งˆ๋ฌธ๋“ค์€ ์‚ฌ์šฉ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ y ๋˜๋Š” **n**์œผ๋กœ ๋‹ต๋ณ€ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ๊ทธ์ธ ์‹œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์ธ์ฆ ์ฝ”๋“œ๊ฐ€ ์š”๊ตฌ๋˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์„ค์ • ๊ณผ์ •์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ฌธ์— ๋‹ต๋ณ€ํ•˜์„ธ์š”:

  1. Time-based (y/n): y
  2. Update the .google_authenticator file (y/n): y
  3. Disallow multiple uses (y/n): y
  4. Increase the window size (y/n): n
  5. Enable rate-limiting (y/n): y

3. SSH PAM ์„ค์ • ๋ณ€๊ฒฝ

์ด์ œ SSH ์„œ๋ฒ„๊ฐ€ PAM์„ ํ†ตํ•ด 2FA๋ฅผ ์š”๊ตฌํ•˜๋„๋ก /etc/pam.d/sshd ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

sudo nano /etc/pam.d/sshd

ํŒŒ์ผ ๋งจ ์•„๋ž˜์— ๋‹ค์Œ ์ค„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

auth required pam_google_authenticator.so

4. SSH ๋ฐ๋ชฌ ์„ค์ • ๋ณ€๊ฒฝ

๋˜ํ•œ, /etc/ssh/sshd_config ํŒŒ์ผ์—์„œ PAM์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

sudo nano /etc/ssh/sshd_config

๋‹ค์Œ ๋‘ ์„ค์ •์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค:

  • ChallengeResponseAuthentication yes
  • UsePAM yes
  • KbdInteractiveAuthentication yes

์œ„์˜ ์„ธ๊ฐ€์ง€๊ฐ€ ๋‹ค ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

(์ฐธ๊ณ )

# PasswordAuthentication yes
# AuthenticationMethods publickey,password publickey,keyboard-interactive

์œ„ ๋ถ€๋ถ„์€ ์•ˆ ํ•ด๋„ ์ƒ๊ด€์—†์—ˆ์Œ.

5. SSH ์„œ๋น„์Šค ์žฌ์‹œ์ž‘

๋ชจ๋“  ์„ค์ •์„ ์™„๋ฃŒํ•œ ํ›„์—๋Š” SSH ์„œ๋น„์Šค๋ฅผ ์žฌ์‹œ์ž‘ํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

sudo systemctl restart sshd

6. ํ…Œ์ŠคํŠธ

์ด์ œ SSH๋กœ ์„œ๋ฒ„์— ์ ‘์†์„ ์‹œ๋„ํ•  ๋•Œ, ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ํŒจ์Šค์›Œ๋“œ(๋˜๋Š” SSH ํ‚ค) ์ž…๋ ฅ ํ›„, Google Authenticator ์•ฑ์—์„œ ์ƒ์„ฑ๋œ 6์ž๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด SSH ์ ‘์†์— ๋Œ€ํ•œ ๋ณด์•ˆ์ด ํฌ๊ฒŒ ๊ฐ•ํ™”๋ฉ๋‹ˆ๋‹ค. ์ด์ค‘ ์ธ์ฆ์€ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋˜๋Š” ํ‚ค๊ฐ€ ๋…ธ์ถœ๋˜์—ˆ์„ ๋•Œ ์ถ”๊ฐ€์ ์ธ ๋ณด์•ˆ ๊ณ„์ธต์„ ์ œ๊ณตํ•˜์—ฌ ๋ฌด๋‹จ ์ ‘๊ทผ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

 

(์ฐธ๊ณ )

ํ•„์š”ํ•œ์ง€ ๋ชจ๋ฅด์ง€๋งŒ, ์•ˆ๋  ๋•Œ ํ–ˆ๋˜ ๊ฒƒ๋“ค

chmod 600 ~/.google_authenticator

์‹œ๊ฐ„ ๋™๊ธฐํ™” ํ™•์ธ

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ(์ฆ‰, Google Authenticator ์•ฑ์ด ์„ค์น˜๋œ ๊ธฐ๊ธฐ)์˜ ์‹œ๊ฐ„์ด ์ •ํ™•ํ•˜๊ฒŒ ๋™๊ธฐํ™”๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์„œ๋ฒ„ ์‹œ๊ฐ„ ๋™๊ธฐํ™”

์„œ๋ฒ„์—์„œ NTP(Network Time Protocol)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐ„์„ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get install ntp
sudo systemctl enable ntp
sudo systemctl start ntp

NTP๊ฐ€ ์„ค์น˜ ๋ฐ ์‹œ์ž‘๋œ ํ›„, ์„œ๋ฒ„์˜ ์‹œ๊ฐ„์„ ํ™•์ธํ•˜๊ณ  ๋™๊ธฐํ™” ์ƒํƒœ๋ฅผ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค.

ntpq -p

ํด๋ผ์ด์–ธํŠธ ์‹œ๊ฐ„ ๋™๊ธฐํ™”

Google Authenticator ์•ฑ์ด ์„ค์น˜๋œ ๊ธฐ๊ธฐ(์˜ˆ: ์Šค๋งˆํŠธํฐ)์—์„œ ์‹œ๊ฐ„์ด ์ •ํ™•ํ•˜๊ฒŒ ๋™๊ธฐํ™”๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์Šค๋งˆํŠธํฐ์€ ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์‹œ๊ฐ„์„ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€