이번 주 데브봅스(DevOps) 애플리케이션 개발 지원을 제공하는 기업 코드 스페이시즈(Code Spaces)로부터 실망스러운 소식이 있었다.
AWS(Amazon Web Service)의 클라우드에서 호스팅하고 있었던 코드 스페이시즈는 운영을 중단해야만 했다. 디도스 공격자가 대가를 요구하자 해당 기업 관계자는 공격을 중단시키기 위해 AWS 계정에 로그인했다. 그러자 침입자는 데이터를 삭제하기 시작했던 것이다.
이 이야기에서 한 가지 질문이 떠오른다. 이런 일이 AWS 클라우드 계정에 발생하지 않도록 어떻게 예방할 수 있을까?
오늘은 AWS의 클라우드 또는 IaaS 클라우드 이용 시 참고할 수 있는 베스트 프랙티스를 살펴보도록 하자.
먼저 클라우드를 사용할 때 보안이 반드시 모든 작업부하에 적용되지 않는다는 사실을 기억해야 한다. AWS는 “공유 보안” 모델이라는 것을 적용했음을 강조하고 있다. 즉, AWS가 물리적인 데이터 센터(가상 머신, 스토리지, 보안 기능 등)의 보안을 제공하지만 자신의 AWS 인프라에서 보안 서비스를 이행하는 것은 고객들에 달려 있음을 의미한다.
이중 인증 또는 다중 인증
해커들이 계정에 침투하기 어렵도록 만드는 보편적인 방법은 2FA(2 Factor Authentication), 즉 이중 인증을 이용하는 것이다. 이 과정을 위해서는 시스템에 로그인하기 전에 2가지 형태의 검증을 제시해야 한다. 예를 들어, 사용자가 생성하고 입력하는 암호와 코드 등이다. 참고로 AWS는 무료 다중 요소 인증 서비스를 제공하고 있으며, 여기를 클릭하면 추가 정보를 확인할 수 있다.
2FA를 갖는 것도 중요하지만 이런 사설 키를 보호하는 것도 중요하다. AWS는 이를 위해 HSM(Hardware Security Module)을 포함하여 다양한 옵션을 제공하고 있다. 이 장비는 기관이 키를 관리하는데 도움을 주며, 고객의 방화벽 뒤 자체 영역에 상주할 수 있다. 여기에서 HSM에 관해 알아보자.
수상한 행동을 모니터링
해커가 클라우드에 침입하기 어렵도록 할 수 있지만 승인되지 않은 사용자가 실제로 침입하지 못하도록 확실히 하고 싶을 것이다. 무료 AWS 툴과 AWS 마켓플레이스(Marketplace)에서 구매할 수 있는 다양한 서비스가 있으며, AWS 사용량을 모니터링 할 수 있는 다양한 옵션도 존재한다.
그 중 하나로는 아마존이 지난 해 리인벤트 회의(re:Invent Summit)에서 공개한 (여전히 베타 버전인) 클라우드트라이얼(CloudTrial)이 있다.
이 툴은 사용자 계정의 모든 활동을 보고하는 API 로그를 생성한다. 이 데이터는 모니터링 솔루션에 적용해 분석이 가능하다. 여기에서 ASW가 제공하는 추가 정보를 확인할 수 있다.
http://aws.amazon.com/cloudtrail/
기본 아이디어는 이례적인 시간 또는 이례적인 IP 주소로부터 로그인한 알려지지 않은 사용자 등 비정상적인 행동에 주목한다는 것이다. 시장에는 이런 작업을 수행하는 툴이 다양히 존재한다. 스카이펜스(Skyfence)라는 툴은 프록시(Proxy) 기반의 시스템으로 AWS 활동을 감시하고 사용자에 비정상적인 상황이 발생했을 때 알린다.
인증 없는 사용자 행동 차단
원하지 않는 활동을 규명하기 위한 모니터링 툴이 마련되어 있다면, 다음 단계는 승인되지 않은 게스트(Guest)가 피해를 발생시킬 수 없도록 하는 것이다.
스카이펜스 툴의 프록시 시스템은 AWS 계정을 차단하고 관리 콘솔에 접근하기 위한 승인 크리덴셜(Credential)을 추가하며 AWS 클라우드의 변경사항을 승인된 사용자가 승인하도록 요구할 수 있다. 코드 스페이시즈의 경우, 이를 통해 해커가 회사의 AWS 클라우드에서 데이터를 삭제하지 못하도록 방지할 수 있었을 것이다.
암호화
해커가 AWS 계정에 침입하더라도 피해를 발생시킬 수 없도록 할 수 있는 다른 많은 방법이 있다.
그 중 하나는 AWS의 클라우드에서 공유하는 정보를 암호화하는 것이다. AWS의 마켓플레이스에는 다양한 암호화 서비스를 제공하는 세이프넷(SafeNet)과 보어메트릭(Vormetric) 등 다양한 암호화 벤더가 존재한다.
AWS는 자사의 S3(Simple Storage Service)를 위한 일부 기본 수준의 암호화와 기타 서비스를 제공하지만, 이는 시스템 전체에 대한 대규모 공격으로부터 보호하기 위한 목적이다. 해커가 사용자의 계정에 접근하면 이 암호화로 데이터 변경을 방지하지 못한다.
웹 애플리케이션 방화벽
코드 스페이시즈의 사건은 DDoS 공격으로 시작된 후, 더욱 큰 규모의 해킹으로 발전했다. DDoS 공격을 예방할 수 있는 방법 중 하나는 WAF(Web Application Firewall)을 이행하는 것이다.
AWS 마켓플레이스에서 바라쿠다(Barracuda)와 얼러트 로직(Alert Logic) 등의 기업이 이를 제공하고 있다. 이런 서비스를 이용해 유입되는 트래픽을 감시하고 DDoS 등 정상적이지 않은 행동을 인식하며 이를 차단할 수 있다.
백업
이 밖에 보안을 위한 최고의 조치는 데이터를 백업하는 것이라고 최근에 AWS 보안 베스트 프랙티스 관련 저서를 출간한 NSS 랩스(NSS Labs)의 롭 아윱은 강조했다. 데이터 백업이 공격을 방지하지는 못하더라도 빠른 복구에 도움이 될 것이다.
많은 사람들이 데이터가 클라우드에 저장되어 있다면 자동으로 백업될 것이라는 오해를 하고 있다. 일부 서비스에서 그런 것은 사실이지만 모두가 그런 것은 아니다. AWS EBS(Elastic Block Store)와 S3 등은 시스템 내에서 데이터를 백업하기 때문에 데이터가 손실되지 않을 것이라는 믿음을 제공한다.
그러나 EC2 가상머신 인스턴스(Instance)는 자동으로 백업되지 않는다. 사용 전 미리 조사하여 어떤 서비스가 무엇을 보장하는지 파악해야 한다. 이는 해커가 계정에 접근하여 피해를 발생시키는 경우, 사용자가 복구할 수 있는 데이터의 백업 사본을 보유할 수 있도록 하기 위함이다.
각 사용자는 어떤 데이터를 백업하고 싶은지 평가해야 한다. 일부 기관들은 모든 것을 백업하며, 다른 이들은 단지 수행에 필수적인 데이터만을 백업하는 것으로 충분하다고 생각한다. 일부 백업은 실시간으로 이루어진다. 다른 것들은 고객이 원하는 대로 하루, 1주일, 1개월 등에 한 번씩 수행하도록 설정할 수 있다.
AWS는 S3, EBS, 다이나모DB(DynamoDB) 등 다양한 스토리지 및 데이터베이스 서비스를 포함하여 다양한 백업 옵션을 제공하고 있다. 또한 “콜드 스토리지(Cold Storage)” 서비스로 매우 낮은 비용과 높은 폴트(Fault) 허용 스토리지를 제공하면서 데이터 검색을 위한 응답 시간이 상대적으로 느린 글래시어(Glacier)도 있다. 고객에 따라서는 클라우드보다는 자체 현장설치 환경에 데이터를 백업하는 것이 적합할 수도 있다.
앱 업데이트
아윱이 말하는 또 다른 오해는 클라우드에서 애플리케이션이 항상 업데이트된다는 것이다. SaaS 환경에서는 그럴 수 있지만 IaaS는 꼭 그렇지 않을 수 있다.
AWS는 애플리케이션 관리를 위한 기본 수준의 인프라를 제공하고 있다. 이런 가상머신에서 구동되는 애플리케이션의 제어는 고객의 몫이다. 많은 벤더들이 버그(Bug)를 패치(Patch)하고 보안 기능을 업데이트 하기 위해 소프트웨어를 자주 업데이트 하고 있다. 이런 모든 발전사항은 구동하는 소프트웨어의 가장 최신 버전을 보유하고 있지 않다면 무용지물이다.
그렇다면 이런 팁들이 코드 스페이시즈의 상황을 예방할 수 있었을까? 이를 알 수 있는 방법은 없다. 아윱은 많은 기관들이 적적한 보안 예방조치를 취하지 않고 있는 것이 현실이라고 지적했다.
클라우드를 사용함으로써 낮은 하드웨어 비용, 손쉬운 관리, 장소를 불문한 접속 등 경제적인 이점을 얻을 수 있다. 그러나 이 경우에도 보안은 반드시 고려해야 할 요소임을 기억해야 할 것이다. dl-ciokorea@foundryco.com