본문 바로가기
서버구축 (WEB,DB)

google OTP로 ssh 접속 보안 강화

by 날으는물고기 2013. 5. 26.

google OTP로 ssh 접속 보안 강화

6.png

안드로이드 및 구글 계정에 보시면 2단계인증이라는게 있습니다.
게임 인증처럼 구글계정에 로그인 할때 안드로이드의 google OTP 인증번호를 이용하여 일회용 암호를 한번더 입력하는 방법 입니다.

ScreenShot%5B1350206556%5D%5B943622%5D.png

중국의 ssh 무한대입 공격을 막을 수 있는 방법중의 하나로 이러한 google OTP를 ssh 접속에 이용 할 수 있습니다.

4.png

일단 libpam-google-authentic 패키지를 설치합니다. synaptic 이나 아래와 같이 루트권한 터미널에서 

Code:
apt-get install libpam-google-authentic

으로 패키지를 설치합니다.
그리고 루트권한으로 gedit 이나 vim nano 같은 텍스트 편집기로 /etc/pam.d/sshd을 수정합니다.

Code:
# Standard Un*x authentication.
@include common-auth

이 부분위에

Code:
#google otp
auth required pam_google_authenticator.so

이부분을 삽입합니다.

두번째로 루트권한 편집기에서 /etc/ssh/sshd_config 를 수정합니다.
PasswordAuthentication이 입력된부분을 찾으셔서 (없으면 추가합니다.)

Code:
PasswordAuthentication no

으로 바꿉니다(즉 yes 를 no로)
위와 같은 방법으로 ChallengeResponseAuthentication 부분의 no를 yes로 수정합니다.

Code:
ChallengeResponseAuthentication yes

마지막으로 UsePAM 부분을 yes로 수정합니다.

Code:
UsePAM yes

끝으로 루트권한으로

Code:
/etc/init.d/sshd restart

을 실행하여 ssh 서버에 설정을 반영합니다.

이제 터미널 권한을 실제 ssh로 로그인할 계정으로 바꿈니다.
이 상태에서

Code:
google-authenticator

를 실행하면 다음과 같은 화면이 나옵니다.

3.png

몇가지를 물어보는데 모두 y하시면됩니다(보안상 otp를 공유하지않을것인지 제한시간을 축소할 것 인지..)
이제 핸드폰을 듭니다.
구글 마켓에서 google OTP를 설치합니다.

ScreenShot%5B1350208686%5D%5B79608%5D.png

google OTP를 실행 하시고 메뉴키를 눌러 계정설정을 들어가시면 아래와 같이 두가지 선택지가 존재합니다.

ScreenShot%5B1350206561%5D%5B355456%5D.png

바코드 스캔을 눌러 위의 google-authenticator를 실행결과에서 qr코드를 입력하거나
제공된 키메뉴에서 secret key를 입력합니다.
그후 60초마다 아래와 같이 6자리숫자의 OTP가 생성됩니다.

ScreenShot%5B1350206556%5D%5B943622%5D.png

 


반드시 서버의 시간이 올바른시간이어야 OTP가 일치하게됩니다.

putty로 접속을 해보겠습니다.
보통접속과정과 동일하게 해주시면 되는데 하나 설정해주어야 할것이 있습니다(putty만 이런 옵션이있군요)

7.png

 

Quote:
connection->SSH->Auth

화면에서 

Code:
attempt "Keyboard-Interactive" auth (SSH-2)

를 선택하여야 ssh 접속이 됩니다.
이제 접속하시면 ID 입력후

Quote:
Verification code:

입력창이 뜨게되는이 이 시점에서 핸드폰에 뜬 인증코드를 입력뒤 암호를 입력하시면됩니다.

ps. 그림크기 조정방법을 몰라서 그냥 올렸더니 조금 산만할 한거같네요..

  

출처 : http://www.ubuntu.or.kr/

728x90

댓글