Google Authenticator를 사용하여 Linux에 이중 인증을 추가하는 방법

01/21 2017
목차
  1. 코덱스의 책
  2. 가젯 이동

암호만으로 컴퓨터(및 컴퓨터가 보유한 데이터)에 대한 액세스를 잠그는 것은 멀티 코어 프로세서와 사용하기 쉬운 암호 크래킹 도구의 시대에 더 이상 겨자를 자르지 않습니다. 

컴퓨터에 대한 무단 액세스가 정말로 걱정된다면 추가 인증 계층을 추가해야 합니다.

이러한 2단계 인증을 구현하는 가장 쉬운 메커니즘 중 하나는 기존 암호 챌린지를 보완하기 위해 시간 기반 인증 토큰을 발급하는 Google Authenticator 서비스입니다.

 

서비스를 Ubuntu 로그인과 통합하면 사용자 비밀번호 외에도 로그인이 허용되기 전에 빠르게 만료되는 토큰 중 하나를 입력하라는 메시지가 표시됩니다. 

Google Authenticator는 Ubuntu 시스템의 모든 사용자에 대해 구성된 Android 기기에서 이러한 OTP를 생성합니다.

다단계 인증을 구현하려면 Google Authenticator PAM(Pluggable Authentication Module)이 필요합니다. PAM은 다양한 형태의 인증을 Linux 컴퓨터에 연결하는 데 사용되는 메커니즘입니다.

Google Authenticator PAM 모듈은 공식 Ubuntu의 소프트웨어 리포지토리에서 사용할 수 있습니다. Ubuntu에 패키지를 설치하려면 터미널로 이동하여 다음을 입력하십시오.

$ sudo apt-get install libpam-google-authenticator

패키지가 설치되면 이중 인증으로 보호하려는 사용자로 로그인했는지 확인하십시오. 이제 터미널 창에서 다음을 입력합니다.

$ google-authenticator

이렇게 하면 여러 가지 질문을 하여 사용자를 위한 비밀 키를 생성하는 프로세스가 시작됩니다. 

모든 항목에 예라고 대답하는 것이 안전하지만 이러한 선택은 보안과 사용 편의성의 균형을 맞추는 데 도움이 되므로 최종 선택을 하기 전에 각 항목을 이해하는 것이 좋습니다. 

첫 번째 질문은 매우 안전한 질문이며 예라고 대답하여 명령이 Google Authenticator 파일을 업데이트하도록 허용해야 합니다.

그런 다음 로그인 사이에 30초 동안 기다려야 하는 토큰 사용을 제한할지 묻는 메시지가 표시됩니다.

처음에는 불편해 보일 수 있지만 최대한의 보호를 위해 이 제한에 동의해야 합니다. 다음 질문은 토큰을 사용할 수 있는 시간 창을 기본 1:30분에서 4:00분으로 늘릴 수 있는 권한을 요청합니다.

문제를 방지하기 위해 이 질문에 예라고 답할 수 있지만 최대 보안을 위해 아니오를 입력하십시오. 나중에 문제가 발견되면 명령을 다시 실행하고 제안된 대로 만료 시간을 늘립니다. 네 번째이자 마지막 질문은 인증 코드 입력 시도 횟수를 제한하라는 것입니다. 

무차별 대입 로그인 공격을 방지하는 데 도움이 되므로 이 옵션을 반드시 활성화해야 합니다.

초기 설정 후에는 시스템과 Android 장치가 온라인 상태가 아니더라도 2단계 인증이 작동합니다.

코덱스의 책

완료되면 Google Authenticator가 비밀 키와 몇 가지 비상 스크래치 코드를 제공합니다. 

이 비상 스크래치 코드를 안전한 곳에 기록해 두어야 합니다. OTP를 생성하는 Android 휴대폰을 분실한 경우 로그인하는 데 도움이 됩니다. 각 코드는 한 번만 사용할 수 있습니다.

google -authenticator 명령은 Android 휴대폰으로 스캔할 수 있는 QR 코드도 생성합니다. 아직 앱을 설치하지 않았기 때문에 당분간은 16자리 코드를 적어두세요.

이제 컴퓨터를 사용하는 각 사용자 계정에 대해 이 프로세스를 반복합니다. 컴퓨터를 공유하는 모든 사람에게 자신의 계정에 로그인하고 google-authenticator를 실행하고 16자리 코드와 함께 각각의 비상 스크래치 코드를 기록하도록 요청하십시오.

모든 사용자에 대한 인증 코드를 생성한 후에는 Google Authenticator와 함께 작동하도록 로그인 프로세스를 구성해야 합니다. 모든 로그인 시도에 대해 2단계 인증을 추가하려면 하나의 파일을 편집하기만 하면 됩니다. 다시 터미널을 실행하고 다음을 입력합니다.

$ sudo nano /etc/pam.d/common-auth

파일의 끝으로 스크롤하고 다음 줄을 추가합니다.

auth required pam_google_authenticator.so nullok
Google Authenticator로 SSH 보안 유지

일부 사람들은 로컬 로그인 대신 원격 SSH 로그인에 대해서만 이중 인증을 사용하는 것을 선호합니다. 

이를 위해 먼저 원격 사용자로 로그인하려는 사용자에 대한 코드를 생성했는지 확인하십시오. 다음으로 sudo nano /etc/pam.d/sshd 로 SSH의 PAM 구성 파일을 편집하여 SSH 로그인에 Google Authenticator를 사용해야 합니다 .

아래로 스크롤하여 파일에 다음 줄을 추가합니다.

인증 필요 pam_google_authenticator.so

널록

기본 자습서에서와 마찬가지로 끝에 있는  nullok 단어는 PAM에게 이 인증 방법이 선택 사항임을 알려줍니다.

이렇게 하면 Google 인증자 키가 없는 사용자가 SSH 키를 사용하여 계속 로그인할 수 있습니다. 이는 설정 프로세스에 문제가 발생할 경우 사용자가 잠기는 것을 방지하기 위한 안전 장치일 뿐이라는 점을 기억하십시오. 

그러나 성공적으로 테스트한 후에는 모든 SSH 사용자에 대한 키를 생성하고 이 줄 끝에서 nullok를 삭제하여 OTP를 통한 로그인을 필수로 만듭니다.

SSH의 PAM 파일을 편집한 후에는 이러한 종류의 인증을 지원하도록 SSH를 구성해야 합니다. 

sudo nano /etc/ssh/sshd_config 로 편집할 SSH 구성 파일을 엽니다 .

ChallengeResponseAuthentication을 읽고 해당 값을 yes로 설정하는 줄을 찾습니다 . 줄이 없으면 수동으로 추가해야 합니다. 파일을 저장하고 닫은 다음 SSH를 다시 ​​시작하여 sudo service ssh restart 로 구성 파일을 다시 로드합니다 . 이제 SSH를 통해 로그인을 시도할 때마다 비밀번호와 Google Authenticator 코드를 모두 입력하라는 메시지가 표시됩니다.

그런 다음 파일을 저장하고 종료합니다. 여기서 우리는 모든 로그인 시도에 대해 Google Authenticator PAM 모듈을 사용하도록 Ubuntu에 요청했습니다. 

끝에 있는 nullok 비트는 사용자가 2단계 인증을 설정하기 위해 google-authenticator 명령을 실행하지 않은 경우에도 사용자가 로그인할 수 있도록 Ubuntu 에 요청 합니다 . 따라서 amber와 megan이라는 두 명의 사용자가 있고 amber에 대해서만 Google 인증을 설정했다고 가정해 보겠습니다. 

nullok 덕분에 엠버는 OTP를 입력해야 하는 반면 메건은 비밀번호만으로 로그인할 수 있습니다.

그러나 이는 Google Authenticator를 테스트하는 동안 사용할 수 있는 유용한 유연성이지만 모든 것이 원활하게 작동하고 2단계 인증으로 로그인하는 데 문제가 없으면 다음을 통해서만 모든 사용자가 Google Authenticator를 통해 로그인하도록 하는 것이 좋습니다. 이 명령에 대한 nullok 비트를 제거합니다.

가젯 이동

이제 Ubuntu 설치가 모두 2단계 인증으로 설정되었습니다. OTP를 받으려면 Google Play 스토어에서 Android 휴대폰에 Google Authenticator 앱을 설치해야 합니다. 

앱을 설치한 후 Ubuntu 설치에서 google-authenticator 명령 을 실행한 모든 사용자의 계정을 추가해야 합니다 .

이렇게 하려면 앱을 열고 기본 창에서 메뉴 버튼(오른쪽 상단 모서리에 있는 세 개의 수직 점)을 누릅니다. 

여기에서 '계정 설정'을 누른 다음 제공된 키 입력 옵션을 선택합니다. 이제 이전에 google-authenticator 도구를 실행한 후 기록해 둔 16자리 비밀 키를 입력합니다. 

계정에 이름을 지정하고(이 계정의 사용자 이름을 사용하는 것이 좋습니다) '추가' 버튼을 탭합니다.

이제 컴퓨터에서 이중 인증을 설정했습니다. Android 앱은 30초마다 새로운 6자리 코드를 생성합니다. 계정에 로그인하거나 sudo 명령을 입력하면 Ubuntu에서 암호를 묻는 메시지를 표시한 다음 인증 코드를 입력하라는 메시지가 표시됩니다. 

이때 Android 앱에 현재 표시되는 숫자를 입력합니다. 성공적으로 로그인했으면 etc/pam.d/common-auth 파일을 편집하고 nullok 옵션을 제거하여 Google 인증자를 통해 강제 로그인해야  합니다 .

Google Play 스토어에는 OTP를 생성하기 위해 공식 Google 앱 대신 사용할 수 있는 다른 OTP 알고리즘 호환 앱이 많이 있습니다.

또한 Ubuntu 설치의 모든 사용자를 위해 Android 앱에서 계정을 만드는 것을 잊지 마십시오.

추가 보안 프롬프트를 거치는 것은 특히 구성 파일을 빠르게 편집하기 위해 sudo 로 전환해야 하는 경우 처음에는 번거로운 것처럼 보일 수 있습니다 . 그러나 공공 장소에서 컴퓨터를 사용하는 경우 이중 인증 메커니즘의 이점을 빠르게 인식할 수 있습니다.