brunch

You can make anything
by writing

C.S.Lewis

by Patrick 김도연 Dec 31. 2021

누군가가 우리 회사의 사용자 정보를 노리고 있다.

World Wide Cloud 편

최근 2021년 12월 전세계 인터넷 서버에서 광범위하게 사용되고 있는 오픈소스 소프트웨어인 Apache Log4j에서 심각한 해킹을 야기할 수 있는 0 Day (제로데이) 취약점이 발견되었다는 뉴스 기사가 인터넷 보안 시장을 뜨겁게 달구고 있습니다. 


Log4j가 오픈소스 (Open Source)기반의 Login library입니다. 서버와 프로그램 등의 유지 관리를 목적으로 서버에서 일어나는 동작의 상태를 로그에 기록으로 남기는데, 무료 버전이다 보니 정부, 인터넷 사업자, 민간 기업등의 사실상 모든 웹서버가 이 Library를 사용하고 있어 피해는 점점 심각해 질 것으로 예상이 됩니다. 


아래 그림과 같이 만일 해커가 이 Log4j의 취약점을 찾아 공격하면 목표 대상의 administrator 계정의 비밀번호 없이 내부망으로 침입해 악성코드를 설치하고 데이터 약탈, 악성 프로그램 실행, 자료 삭제 등을 할 수 있습니다. 


Log4의 웹서버 공격 유형

지난 블로그 계정 관리 (account management)에 이에 오늘은 Data Security에 대해 AWS Cloud 위주로 알아보도록 하겠습니다.


갑자기 찾아온 랜섬웨어(Ransomware)와 사용자 데이터 해킹


2021년 TVN에 인기 방영된 드라마 “스타트업 13화”에서는 주인공의 스타트업회사가 랜섬웨어에 감염되었고 해커는 12시간내에 3억원을 송금하지 않으면 암호화된 파일의 복귀키를 모두 파괴시킨다고 협박을 합니다.

드라마 스타트업의 한 장면 - 랜섬웨어 감염 (tvN)

해커의 침투를 살펴보면 신입 개발자는 재택근무를 위해 원격의 서버에 SSH (Secure Shell)로 연결하기 위해 20번 포트를 임의로 열어놨으며, 아직 베타 테스트다 보니 파일 백업도 하지 않은 상태입니다. 


물론 주인공 남도산이 나타나서 작업 Scheduler library를 검색하여 이상한 파일이 실행된 흔적을 감지하고 복귀키를 찾아서 복구를 하면서 랜섬웨어 감염을 마무리 짓습니다. 


TV에서 잠깐 나온 이야기이지만 우리 주변에 이런 랜섬웨어 감염이나 스파이웨어, 피싱등으로 악성코드를 심어 넣고 고객의 데이터를 빼가는 경우는 매우 빈번하게 발생하는 Data Security 사고입니다. 


랜섬웨어에 감염 당한 대상은 어쩔 수 없이 그들의 요구를 들어주기도 합니다. 막대한 돈을 요구하지만 그들이 빼내간 정보는 수십년이 된 매우 중요한 데이터일 수도 있으니까요.


10년간 끊이지 않는 고객사 정보 (DB) 유출 사고가 발생(아래)하고 있으며 최근에는 온라인 쿠폰, 비트코인 거래 폭발적 증가, NFA등 더욱 활발해진 가상화폐와 온라인 거래로 인해 고객사 정보 해킹은 더 고도화도고 있습니다. 

국내 사용자 정보 해킹 사건들


어떤 방식으로 해킹을 당하는가?


우리 회사의 시스템이 해킹 당한지를 확인하기 위해서는 우선 로그를 살펴봐야 합니다. 그중에도 DB서버에 연결한 IP주소를 찾아서 대략 어느 나라, 지역인지를 확인합니다.


특히 DB서버의 IP가 공인 IP이거나 외부에 노출될 경우 해커는 IP와 Port 정보를 쉽게 알아낼 수 있습니다. (이 정보를 제공하는 검색사이트도 있으니깐요) 


그리고 랜섬웨어 해커들은 자신들이 원하는 요구사항을 어디에 시스템 운영자가 쉽게 발견할 수 있게 적어둡니다. 아래와 같이 MySQL Table안에 원하는 비트코인 금액과 비트코인 주소, 해커의 1회성 이메일 주소를 친절하게 적어두었습니다. 

전용적인 랜섬웨어 공격 예시 (MySQL table) 출처 : Google 검색


일반적인 사내의 DB서버를 아래와 같이 관리할 경우 해킹이나 랜섬웨어 공격을 당하기 아주 쉽다고 말씀드릴 수 있습니다. 


  DB서버를 외부에서 원격 접속 허용 (최근 재택 근무 증가로 인한…)

  MySQL 디폴트값 사용 (User name과 port 번호)

  쉬운 비밀번호 사용(12345678, pass1234 등)

  퇴사자 계정, 사용하지 않는 의심스러운 계정등이 많을 경우

  자동 업데이트, 패치등 오랫동안 방치할 경우

  무료 소프트웨어 사용 및 정기적 업데이트 (악성코드가 같이 와서 시스템에 침투할 수 있음)


Q. 개발자인데요 개발중에 중요 데이터를 해킹당했어요. 


데이터 보안은 외부의 해킹도 있겠지만, 회사 내부의 개발자, 관리자들이 내부의 보안을 각별히 신경써야 합니다. 고객사중에 간혹 중요 데이터를 source code에 하드코딩하거나 github에 공유해서는 경우가 종종 있으며, 이를 그대로 서비스에 런칭한다면 향후 큰 문제가 발생할 수 있습니다. 

하여 개발시에 Secure Code Review 기능의 솔루션을 사용하여 코드 리뷰와 테스트를 하면서 개발하는 것도 추천드립니다


해킹을 피하기 위한 방법들


DB서버 해킹 방지하기 위해서는 사용자의 노력이 필요합니다. 아무리 AWS Cloud의 보안이 잘되어 있다고 하지만 아래와 같은 사항을 준수하셔야 합니다. 


  WEB-Application-DB의 3 Tier Architecture 구성

  DB 외부접근 IP, Port는 되도록 금지 (중요 서비스는 default port 번호 사용 피할 것)

  외부 접근시 SSH를 통한 접근하고 접근 대상 계정을 제한

  정기적인 백업 

  주기적인 패스워드 변경

  DB table별 암호화

  포트 번호의 default 사용 피할 것


AWS에서 데이터 보안


AWS의 데이터와 DB 보안을 위해 권장드리는 바는 아래와 같습니다. 


1) 네트워크 격리

 해커나 랜섬웨어가 최초 접근하는 부분이 DB서버의 IP, Port 번호라고 말씀드렸습니다. 하여 우리는 DB를안전하게 사내망안에 안전하게 보호해야 하는데요. 

AWS DB (RDS)를 구성함에 있어 Private Subnet와 특정IP (private IP)로 구성하고 Security group (서버 방화벽), NACL (네트워크 방화벽)등을 겹겹히 적용합니다. 

흔히 3 Tier Architecture라고 불리는데, 맨 앞단의 Web Tier에서 웹서버는 ALB (Application Load Balancer)로 1차 트래픽을 분산시키고, 그 뒤의 App Tier와 DB는 외부의 노출을 철저히 격리시키는 구조입니다. 

AWS 3 tier Architectures


2) 최소 권한 관리 원칙 (Principle of Least Authority)

액세스할 계정은 “최소 권한 계정 원칙”을 통해 특정 계정, 그룹, IAM만 권한을 할당하고 DB인증을 위해 IAM에서 제공하는 토큰 기반 (만료시간 설정)으로 DB를 접근하게 RDS를 구성할 수 있다. 


3) 데이터 전송 보호

AWS에서는 TLS를 이용하여 전송중 암호화를 할 수 있으며 AES-256 기반의 암호화를 하여 저장할 수 있습니다.


전송 중 보호

* TLS 및 기본 암호화 클라이언트 사용

* Amazon RDS에서 액세스 인증을 처리


저장 중 보호

* AES-256 암호화 알고리즘 사용

* DB 생성 시 암호화를 활성화

* 특정 DB엔진에 대한 TDE 지원



Q. 데이타 전송중에 해킹 당할 수 있나요? 

 클라우드 환경에서는 API나 각종 리소스를 타 시스템과 빈번하게 공유하기 때문에 보안에 각별히 신경을 써야 합니다. 특히 API는 HTTP 프로토콜을 통해 실행되는데 이때 전송 내용이 보안없이 평문으로 노출될 수 있습니다. 그래서 중요한 Metadata가 오가는 클라우드 환경에서는 도청이나 위변조를 막기 위해 HTTPS 프로토콜을 사용하기를 권장합니다. 


(참고로 HTTPS의 정확한 이름은 HTTP over SSL/TLS이며 443포트 번호를 사용합니다. 이는 SSL/TLS를 적용하고 인증서를 통해 통신의 상호 신뢰를 만드는 방식입니다.) 


4) KMS (Key Management Service)

AWS의 KMS 서비스를 이용하여 KMS에서 하나의 Master Key로 Data (table)키를 생성하여 여러개의 DB테이블을 암호화하고 복구화화 할 수 있습니다. 

KMS 키교환 방식


5) 백업

마지막으로 백업을 다른 region (지역, 국가)에 저장할 수 있습니다. 

DynamoDB는 table단위로, RDS는 Read Replica, DB Snap shot등을 이용하여 물리적으로 분리된 공간에 DB를 저장하여 필요시 restore, sync하실 수 있습니다.



이상으로 베트남의 고객님들께 자주 질문받는 Database 보안에 대해 하나 하나 풀어보았습니다. 

AWS는 데이터 보호를 위해 아래와 같은 제품군들로 단단히 무장되어 있습니다.

하지만 보안의 벽이 아무리 높고 단단하게 쌓여 있다고 해도, 사용자 내부의 적과 출입문 관리가 제대로 되지 않는다면 보안은 쉽게 열리게 되고, 시간과 돈, 인력까지 낭비되게 됩니다. 


보통 MSP (Managed Service Provider)는 CSP (Cloud Service Provider, aws)와 고객사이에서 클라우드와 보안을 잘 사용하실 수 있게 가이드, Monitoring, 장애 대응을 위한 Well-Architect’s Best Security Practice를 제공하며 각 국가별 Security Compliance를 대응할 수 있는 보안설계, Audit를 제공해 드립니다. 

AWS Shared Responsibility Model과 MSP의 역할

그럼 다음 시간에는 네트워크 인프라 보안과 DDoS 보호, 악성 웹 트래픽, 방화벽 등에 대해 알아보도록 하겠습니다. 


이전 22화 저희는 완전 싼 비용으로 클라우드 구축하고 싶습니다.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari