오랜만에 서버 관리를 하면서 문득 불안감이 엄습했습니다. 복잡하게 설정해둔 비밀번호, 주기적으로 변경해왔지만 혹시나 하는 마음에 2차 인증 도입을 결심하게 되었죠. 흔히 사용하는 SSH 로그인에 OTP (One-Time Password) 2차 인증을 적용하는 방법에 대한 다양한 자료를 찾아보고 직접 적용해보니 생각보다 간단하면서도 강력한 보안 효과를 체감할 수 있었습니다. 이 글에서는 SSH 로그인에 OTP 2차 인증을 적용하는 과정과 그 효과, 그리고 사용하면서 느낀 장단점을 솔직하게 공유하고자 합니다.

OTP 2차 인증, 왜 필요할까요?

단도직입적으로 말해서, 비밀번호만으로는 충분하지 않습니다. 아무리 복잡하게 설정하고 주기적으로 변경한다고 해도, 해킹 기술은 끊임없이 발전하고 있고, 다양한 경로로 비밀번호가 유출될 위험은 항상 존재합니다. 특히 서버와 같이 중요한 시스템에 대한 접근은 더욱 철저하게 관리해야 합니다. OTP 2차 인증은 비밀번호 외에 추가적인 인증 단계를 거침으로써, 비밀번호가 유출되더라도 공격자가 시스템에 접근하는 것을 원천적으로 차단할 수 있는 강력한 보안 솔루션입니다.

예를 들어, 누군가 제 서버 비밀번호를 알아냈다고 가정해봅시다. 일반적인 경우라면 바로 서버에 접속할 수 있겠지만, OTP 2차 인증이 적용되어 있다면 OTP 코드를 입력해야만 접속이 가능합니다. OTP 코드는 보통 스마트폰 앱을 통해 생성되며, 30초 또는 1분마다 변경되기 때문에, 공격자가 비밀번호를 알아낸 시점과 OTP 코드를 입력해야 하는 시점 사이에 시간차가 발생하여 사실상 접속이 불가능하게 됩니다.

어떤 OTP 솔루션을 선택해야 할까요?

SSH 로그인에 OTP 2차 인증을 적용하는 방법은 다양하지만, 가장 흔하게 사용되는 솔루션은 Google Authenticator와 FreeOTP입니다. 저는 두 가지 솔루션을 모두 사용해봤지만, 개인적으로는 Google Authenticator가 더 편리하다고 느꼈습니다. Google Authenticator는 다양한 플랫폼을 지원하고, 사용 방법이 직관적이며, 이미 많은 사람들이 사용하고 있기 때문에 관련 자료를 쉽게 찾을 수 있다는 장점이 있습니다. FreeOTP 역시 훌륭한 솔루션이지만, Google Authenticator에 비해 사용자 인터페이스가 약간 불편하고, 지원하는 플랫폼이 제한적이라는 단점이 있습니다.

물론, YubiKey와 같은 하드웨어 기반 OTP 솔루션도 고려해볼 수 있습니다. 하드웨어 기반 솔루션은 소프트웨어 기반 솔루션보다 보안성이 더 뛰어나지만, 가격이 비싸고, 휴대성이 떨어진다는 단점이 있습니다. 따라서, 개인적인 용도로 사용하는 서버라면 Google Authenticator나 FreeOTP와 같은 소프트웨어 기반 솔루션으로도 충분하다고 생각합니다.

Google Authenticator를 이용한 SSH 2차 인증 설정 방법

이제 실제로 Google Authenticator를 이용하여 SSH 2차 인증을 설정하는 방법에 대해 알아보겠습니다. 설정 과정은 크게 서버 측 설정과 클라이언트 측 설정으로 나눌 수 있습니다.

서버 측 설정

    • Google Authenticator 설치가장 먼저 서버에 Google Authenticator를 설치해야 합니다. Debian/Ubuntu 계열에서는 다음과 같은 명령어를 사용합니다.
      sudo apt-get update

      sudo apt-get install libpam-google-authenticator

      CentOS/RHEL 계열에서는 다음과 같은 명령어를 사용합니다.

      sudo yum update

      sudo yum install google-authenticator

    • Google Authenticator 설정Google Authenticator가 설치되었다면, 다음과 같은 명령어를 실행하여 설정을 시작합니다.
      google-authenticator

      명령어를 실행하면 여러 질문이 나오는데, 대부분 기본값으로 설정해도 무방합니다. 중요한 것은 QR 코드를 생성하는 부분입니다. 생성된 QR 코드를 Google Authenticator 앱으로 스캔하면, OTP 코드가 생성됩니다. 이 OTP 코드를 입력하여 설정을 완료합니다.

    • PAM 설정 변경PAM (Pluggable Authentication Modules) 설정을 변경하여 SSH 로그인 시 OTP 인증을 거치도록 해야 합니다. /etc/pam.d/sshd 파일을 열어 다음과 같은 줄을 추가합니다.
      auth required pam_google_authenticator.so nullok

      nullok 옵션은 OTP 인증이 필수가 아닌 선택 사항으로 설정하는 옵션입니다. 만약 OTP 인증을 필수로 설정하고 싶다면 nullok 옵션을 제거하면 됩니다.

    • SSH 설정 변경마지막으로 SSH 설정을 변경해야 합니다. /etc/ssh/sshd_config 파일을 열어 다음과 같은 줄을 수정합니다.
      ChallengeResponseAuthentication yes

      AuthenticationMethods publickey,password publickey,keyboard-interactive

      ChallengeResponseAuthentication 옵션을 yes로 설정하고, AuthenticationMethods 옵션에 keyboard-interactive를 추가합니다. 이렇게 설정하면 SSH 로그인 시 공개키 인증과 함께 OTP 인증을 거치게 됩니다.

    • SSH 재시작모든 설정을 완료했다면, SSH 서비스를 재시작하여 변경 사항을 적용합니다.
      sudo systemctl restart sshd

클라이언트 측 설정

    • Google Authenticator 앱 설치스마트폰에 Google Authenticator 앱을 설치합니다. Android와 iOS 모두 지원합니다.
    • QR 코드 스캔서버 측 설정에서 생성된 QR 코드를 Google Authenticator 앱으로 스캔합니다. 스캔이 완료되면 OTP 코드가 생성됩니다.
    • SSH 로그인이제 SSH로 서버에 접속할 때, 비밀번호를 입력한 후 OTP 코드를 입력해야 합니다. Google Authenticator 앱에 표시되는 OTP 코드를 입력하면 정상적으로 로그인이 완료됩니다.

실제 사용 경험과 성능 분석

SSH 로그인에 OTP 2차 인증을 적용한 후, 보안성이 확실히 강화되었다는 느낌을 받았습니다. 이전에는 비밀번호만으로 로그인했기 때문에, 항상 불안한 마음이 있었지만, 이제는 OTP 코드를 입력해야 하기 때문에 안심하고 서버를 관리할 수 있게 되었습니다.

성능 측면에서는 약간의 지연이 발생할 수 있습니다. 비밀번호를 입력하고 OTP 코드를 입력해야 하기 때문에, 로그인 시간이 아주 약간 늘어날 수 있습니다. 하지만, 보안 강화를 위해 감수할 만한 수준이라고 생각합니다. 실제로 체감할 수 있는 지연 시간은 1초 내외로, 거의 느껴지지 않는 수준입니다.

Google Authenticator 앱의 사용 편의성은 매우 만족스럽습니다. 인터페이스가 직관적이고, 사용 방법이 간단하여 누구나 쉽게 사용할 수 있습니다. 또한, 여러 계정을 등록하여 관리할 수 있기 때문에, 여러 서버에 OTP 2차 인증을 적용하더라도 편리하게 관리할 수 있습니다.

다른 2차 인증 방식과의 비교

SSH 로그인에 적용할 수 있는 2차 인증 방식은 OTP 외에도 다양한 방식이 존재합니다. 예를 들어, FIDO U2F/UAF와 같은 인증 방식은 OTP보다 더 강력한 보안성을 제공하지만, 설정이 복잡하고, 지원하는 플랫폼이 제한적이라는 단점이 있습니다.

반면, 이메일이나 SMS를 이용한 2차 인증 방식은 설정이 간단하지만, 보안성이 상대적으로 낮다는 단점이 있습니다. 이메일이나 SMS는 해킹에 취약하고, 스미싱과 같은 공격에 노출될 위험이 있기 때문입니다.

따라서, SSH 로그인에 2차 인증을 적용할 때는 보안성과 편의성을 모두 고려하여 적절한 인증 방식을 선택해야 합니다. 개인적으로는 Google Authenticator와 같은 OTP 인증 방식이 보안성과 편의성 측면에서 가장 균형 잡힌 선택이라고 생각합니다.

장점과 단점

장점

단점

마치며

SSH 로그인에 OTP 2차 인증을 적용하는 것은 서버 보안을 강화하는 가장 효과적인 방법 중 하나입니다. 설정 과정이 약간 복잡할 수 있지만, 한 번 설정해두면 안심하고 서버를 관리할 수 있습니다. 특히, Google Authenticator와 같이 사용하기 편리한 솔루션을 이용하면, 누구나 쉽게 OTP 2차 인증을 적용할 수 있습니다. 아직 SSH 로그인에 2차 인증을 적용하지 않았다면, 지금 바로 적용해보시기를 강력히 추천합니다.

 

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다