2024-04-19 10:20 (금)
[연재-1] 무료 OTP로 구축하는 철옹성 보안
상태바
[연재-1] 무료 OTP로 구축하는 철옹성 보안
  • 홍석범
  • 승인 2016.04.11 21:31
이 기사를 공유합니다

자유롭게 사용가능한 무료 OTP가 대중화되어 가고 있다
2015년 어느날, 미국의 워싱턴포스트 및 미 육군 홈페이지를 접속하면 원래의 콘텐츠가 아닌 공격자가 의도한 메시지가 출력되는 보안 사고가 며칠 간격을 두고 발생한 적이 있었다.

이는 콘텐츠가 있는 해당 웹 서버를 직접 해킹한 것이 아니라, 웹사이트를 호스팅하는 업체의 직원에 대한 공격을 통해 해당 PC를 장악한 후 모니터링을 통해 내부의 호스팅 운영자 포탈(control panel)에 대한 접속 정보를 습득 후 접속, 대상 웹사이트의 설정을 직접 변경함으로써 공격자가 의도한 콘텐츠가 보이도록 한 사고였다. 물론 운영자 포탈은 해당 업체의 사무실 내부에서만 접근 가능하도록 ACL설정이 되어 있었고, ID/PW 인증이 필요하였지만 운영자 PC를 장악한 공격자는 해당 PC를 경유하여 ID/PW도 알아내어 어렵지 않게 운영자포탈에 접근할 수 있었다.

이는 가장 전형적인 APT공격의 한 예로, 어느 누구든 이렇듯 유사한 공격의 타겟이 될 수 있을 것이다. 그렇다면 이러한 형태의 공격에 대응하기 위해서 어떠한 방안을 생각할 수 있을까? 물론 성능 좋은 APT 대응 솔루션 도입이나 망분리 등 여러 가지 솔루션을 생각할 수 있겠지만 가장 쉬우면서도 비용 효과적인 솔루션이라면 바로 주요 인증 시스템에 Multi Factor Authentication중 하나인 OTP(One Time Password)를 도입하는 것이다.

 
[그림] Multi Factor Authentication (출처-구글이미지)

과거에 OTP 솔루션이라고 하면 분실하기 쉬운 하드웨어 OTP나 고가의 솔루션 비용, 만약의 인증 서버 장애시 인증 불가의 위험성 등 여러 부작용으로 인해 도입이 어려운 솔루션으로 인식되어 왔으나 최근에는 이러한 모든 문제를 해결한 단순한 Free OTP 솔루션이 소개되면서 점차 대중화되어 가고 있다.
가장 대표적인 솔루션으로는 구글에서 제공하는 OTP인 Authenticator로 이는 유저수나 기능에 관계없이 무료로 사용할 수 있고, Time 기반의 OTP로 굳이 인증서버나 별도의 하드웨어 디바이스가 없이도 서버와 스마트폰의 시간만 잘 맞으면 아이폰이나 안드로이드등 스마트폰에 App을 설치하여 쉽게 사용할 수 있다는 장점이 있어 가장 대중적으로 사용되고 있다.
설치 방법도 매우 간단한데, 이를테면 리눅스 서버에 SSH 접속시 기존의 Key나 ID/PW이외에 OTP를 적용하고자 한다면 아래와 같이 설정하면 된다.
 
먼저 구글OTP 및 QR 코드를 실행할 수 있는 패키지를 설치한다.
# yum install google-authenticator qrencode
 
이후 /etc/pam.d/sshd 파일에 아래의 설정을 추가하도록 한다.
auth      required pam_google_authenticator.so
 
이제 각 유저별 OTP 코드를 생성할 차례인데, 쉘 로그인 후 아래의 명령어를 실행하면 된다.
 
$ google-authenticator
Do you want authentication tokens to be time-based (y/n) y
<== 시간 기반의 토큰을 사용할 것인지 묻는다. y를 입력한다.

각자 본인의 스마트폰을 이용하여 Google Authenticator 로 검색하여 앱을 설치한 후 메뉴 > 계정설정에서 “바코드스캔”을 선택하여 위와 같이 random하게 생성되는 QR을 스캔 하면 자동으로 각 유저별로 uniq한 OTP 코드가 등록된다. 나머지 모든 질문에 Y를 입력한 후 엔터를 치면 설정은 종료된다.
이제, 외부에서 SSH 접속을 하면 아래와 같이 기존 다른 인증수단과 함께 OTP코드인 Verification code를 묻게 되는 것을 알 수 있다.
 
$ ssh xxxxx@192,168.1.4 -p22
Verification code:
Password:

이때의 암호는 아래의 OTP앱을 실행하였을 때 보이는 6자리 숫자를 30초 이내에 입력하면 된다.(인증코드는 서버별로 서로 다른 여러개를 만들 수도 있다)

이처럼 OTP 인증을 추가할 경우, 공격자의 입장에서는 운영자의 ID/PW등 기존 인증 정보뿐 아니라 해당 유저의 스마트폰까지 장악해야 하므로 현실적으로 APT공격을 성공하기는 매우 어려워지게 된다. 또한 지금 살펴본 SSH이외에도 VPN이나 관리 웹사이트 등 주요 인증 시스템에 OTP인증을 도입하고 별도의 디바이스를 통해 인증을 받도록 한다면, 언제든 누구를 타겟으로 하던지 발생할 수 있는 APT 공격으로부터 피해를 최소화할 수 있을 것이다.
이처럼 자유롭게 이용이 가능한 OTP 솔루션으로는 구글외에도 Redhat에서 제공하는 FreeOTP도 있다. 아직 활발하게 사용되고 있지는 않지만 구글OTP가 제공하는 기본적인 기능은 동일하게 제공하고 있는데, 좀 더 자세한 내용은 홈페이지(https://fedorahosted.org/freeotp/)를 참고하기 바란다.  
다음에는 유용하기는 하지만, 몇 가지 구글OTP의 단점을 극복한 다른 OTP 솔루션의 활용에 대해 알아보도록 하겠다.

★정보보안 대표 미디어 데일리시큐!★

[글. 홍석범 씨디네트웍스 시스템 UNIT 부장 / antihong@gmail.com]