ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Google OTP
    kb 2014. 2. 9. 07:57

    자신이 사용하는 리눅스 머신이 있다면 SSH 로그인 시 OTP (One Time Password) 인증을 추가하여 2 factor authentication 를 적용해 보면 어떨까요? 일단 저는 해보았습니다. 실제로 필자가 다니는 회사에서는 98%이상이 윈도우 기반의 운영체제를 사용합니다. 그리고 나머지 운영체제 중 필자가 포렌식 분석업무를 위해 Ubuntu 를 사용하고 있는 것이 있는데 어제는 그 머신 중 Ubuntu 에 Google OTP 를 적용하여 SSH 로그인 시 2 factor authentication 을 하도록 해 두었습니다.


    아래 URL은 구현을 위해 참고한 곳인데 너무 설명이 잘 되어 있어서 내가 따로 이런 글을 쓰는데 많은 망설임을 준 곳이기도 합니다.


    http://www.linux.org/threads/google-authenticator-for-ssh.4590/


    정상적으로 설치한 경우 아래 그림과 같이 기본적인 인증을 마치고 Verification code 를 물어봅니다. 이 때 핸드폰에 설치한 어플을 이용하여 Verification code 를 부여받아 입력하면 인증에 성공하게 됩니다.



    그래서 이 글에서는 Google OTP 를 설치하면서 기본적으로 알아야 하는 개념들에 대해 적어보려고 합니다. 사실 OTP 를 개발하려고 하는 분들에게도 도움이 되었으면 하는 바람이다.


    Time-based


    OTP 의 인증 코드를 만들어 내는 방식을 이야기 합니다. 일반적으로 HMAC 방식(rfc4226)과 Time-Based 방식(rfc6238)이 있는데 간단하게 차이점을 이야기 하면, HMAC 은 메시지와 키를 입력으로 하여 고유한 값을 얻는 반면 Time-Based 방식은 특정 시간에 따라 유일한 값을 얻는 방식입니다.


    Multiple uses


    OTP에 의해서 생성된 키값을 한 곳에서만 사용할 수 있을지 또는 다른 곳에서도 사용하게 할 지에 대한 여부 입니다. 보다 안전을 위한다면 한번 사용된 키는 만료되어야 하겠지요.


    Time window


    위에서 언급한 Time-Based 방식에서 동일한 키가 유효한 시간을 얼마로 할 것인지에 대해 말하는 것 입니다. Man-in-the-middle-attack 을 완벽히 차단할 수는 없지만 "보안 비용"을 높이기 위해 Time window 를 알맞게 설정해야 합니다. 참고로 2012년 TTA에서 제정한 "일회용 패스워드 알고리즘 프로파일" 문서에서 금융권일 경우 OTP 비밀번호를 30~60초 이내에서만 유효하도록 권고 하고 있습니다.


    TTAK.KO-12.0193.pdf



    Rate-limiting


    Brute force attack 과 같이 악의적인 목적으로 여러번 시도 하는 것을 대비하기위해 일정 기간 동안 로그인 시도 횟수를 제안하는 것입니다. 구글 OTP는 기본적으로 30초 동안 3번 이상 틀렸을 때 일정기간 로그인 시도를 하지 못하도록 되어 있습니다.



    이상으로 Google OTP 를 설치하실 때 필요한 기본적인 지식을 기술해 보았습니다. 혹시 추가로 궁금한 것이 있거나 잘못된 정보가 있다면 언제든지 댓글 부탁 드립니다.

    2014-06-26 내용추가.

    위와 같이 Google OTP 인증이 적용된 시스템에서 사용자를 추가 후 SSH 로그인시 실패하는 경우가 발생할 수 있습니다. 로그인 실패 원인을 살펴보기 위해 다음과 같은 명령어로 확인할 수 있습니다. grep sshd.\*Failed /var/log/auth.log | less 명령어를 통해 google_authenticator 를 읽지 못했다는 메시지를 보셨다면 정상적으로 로그인 했던 계정의 홈디렉토리에 존재하는 .google_authenticator 파일을 복사해오면 정상적으로 로그인 할 수 있습니다.


    'kb' 카테고리의 다른 글

    네트워크 정보 시각화(Visualization)  (0) 2012.05.07
    인케이스(EnCase) 에서 파일명이 한 자리인 파일들 확인하기  (0) 2012.05.01
    PDF 취약점 분석  (0) 2011.12.27
    Proxy DLL  (0) 2011.04.20
    Diffie-Hellman Key Exchange Protocol  (0) 2011.04.04
Designed by Tistory.