[AWS 입문 시리즈] Amazon GuardDuty편

Classmethod Korea Co., Ltd.
Classmethod Korea Co., Ltd.
11 min readMay 31, 2022

이 블로그는 클래스메소드코리아의 일본본사Classmethod, Inc.의 DevelopersIO 블로그에 게시된 글입니다. 작성자의 동의를 받고 게시합니다.

작성일 이후로 업데이트 및 변경사항이 있을수 있습니다.

원문 사이트 : https://dev.classmethod.jp/articles/re-introduction-2022-amazon-guardduty/

원문 작성일 : 2022.03.22

원문 작성자 : Kawahara Masahiro

이 블로그 릴레이의 기획은 평소 AWS 서비스에 대해 최신 소재, 깊은/세세한 주제를 주로 써 온 멤버들의 손에 의해 다시 초심으로 돌아가 기본적인 부분을 다시 살펴보고 해설해 보자는 컨셉이 담겨 있습니다.

AWS를 앞으로 배워보자! 라고 하는 분에게는 글자 그대로의 입문게시글로, 또 이미 AWS를 활용하시는 분에게도 AWS 서비스의 재발견과 2022년 서비스 업데이트의 캐치업의 장이 되었으면 하는 바람입니다.​

그럼 시작해 볼까요? 이번 주제는 Amazon GuardDuty 입니다.

Amazon GuardDuty란?

GuardDuty는 보안 서비스입니다. 그 중에서도 검지를 담당합니다. 검지의 목적은 ‘인시던트 또는 보안 리스크가 있는 상태나 거동을 신속히 발견하여 액션으로 이어지게 하는 것’ 입니다.

출처 : https://d1.awsstatic.com/events/jp/2021/summit-online/AWS-39_AWS_Summit_Online_2021_SEC03.pdf

위의 이미지는 NIST 의 보안 통제의 5개 카테고리(식별, 방어, 검지, 대응, 복구)에 AWS서비스를 매핑한 것입니다.

그 중에 검지 서비스는 아래와 같습니다.

● ★ Amazon GuardDuty:

위협검지 서비스

증적과 네트워크 로그에서 수상한 활동을 검지한다

● Amazon Inspector:

앱 스캔 서비스

EC2인스턴스나 ECR이미지에의 계속적인 취약성 스캔을 실시한다

● AWS Security Hub:

보안 이벤트 집중관리 및 클라우드 보안 태세 관리서비스

[보안 이벤트 집중관리] 여러가지 보안 서비스에서 발생 하는 이벤트를 집중 관리한다

[클라우드 보안 태세 관리] AWS상의 구성을 평가해서 잠재적인 보안 리스크를 발견한다

● Amazon Macie:

기밀 정보의 검지 서비스

S3버킷을 스캔해서 기밀정보를 발견한다

상기와 같게 GuardDuty는 ‘검지’중에서도 ‘위협 검지’를 담당하는 서비스입니다. GuardDuty가 해주는 일을 좀 더 상세하게 설명하겠습니다.

로그의 계속적인 분석

먼저 각종 로그를 계속적으로 분석합니다. 여기서 말하는 로그는 API실행 로그나 S3액세스 로그, 네트위크 로그 등입니다. 특히 유저 측에서 이런 로그 기반들을 정비하거나 실제로 분석할 필요는 없습니다. GuardDuty(AWS)측에서 매니지드로 실시해줍니다.

위협의 검지

그리고 ‘악의적인 활동’을 검지해줍니다. 예를 들면 ‘인증 정보가 외부에서 이용되었다’, ‘EC2인스턴스로 암호화 통화 마이닝이 실행되고 있다’등의 검출입니다. 매니지먼트 콘솔 상에서 검출 결과(Findings)를 확인할 수 있습니다. 또는 Amazon EventBridge(이벤트 연계 서비스)를 이용해서 알림 통지를 보낼 수도 있습니다. GuardDuty를 기점으로 보안 액션을 시작합니다.

일단 유효화 해 보자

GuardDuty의 유효화는 금방 완료합니다. 아직 유효화안하신 분은 바로 해 보시죠.

GuardDuty 페이지에서 ‘바로 시작’을 선택합니다.

‘GuardDuty가 로그 감시를 하기 위한 서비스 롤’정보를 확인 후 ‘GuardDuty의 유효화’ 를 선택합니다.

이상 끝입니다. 2클릭으로 유효화 완료!

이 간편함이 GuardDuty의 이점입니다. 그 후에는 GuardDuty에 의한 검출을 통지하게 설정 해 두세요.

검출 결과를 이해 해 보자

여기까지 설명해 드린 듯이 GuardDuty를 시작하는 건 간단합니다. 물론 유저 측에서 튜닝하는 건 가능하지만 기본은 디폴트 상태라도 딱히 문제없습니다.

그럼 유저가 해야 할 중요한 일은 뭘까요? 그것은 ‘GuardDuty의 검출 결과를 이해하고 액션하는 것’입니다. 그러기 위해 여기에서는 GuardDuty검출 결과(Findings)의 내용을 설명하겠습니다.

검출 결과의 형식(GuardDuty finding format)

검출 결과는 JSON으로 표현됩니다. GuardDuty finding format 라고 불리는 형식으로 각종 속성과 그 값을 표현합니다.

이 JSON을 열심히 해독할 필요는 없습니다. 매니지먼트 콘솔에서 검출 결과의 정보를 정리한 상태로 확인할 수 있습니다. (또 나중에 설명 드리는 ‘Amazon Detective연계’를 쓰는 것으로 빠른 조사를 할 수 있습니다. )

검출 결과 타입 (type)

가장 중요한 요소입니다.

‘어떤 액티비티가 일어났는지’를 표현하기 위한 식별자 입니다. GuardDuty검출 결과를 이해할 때 먼저 보는 항목입니다.

GuardDuty가 검지하는 타입의 목록은 아래 다큐먼트를 확인해주세요.

https://docs.aws.amazon.com/ko_kr/guardduty/latest/ug/guardduty_finding-types-active.html

식별자는 리소스 단위로 크게 구별됩니다. 현재 시점 아래의 4종류 타입이 있습니다.

EC2 결과 타입 … EC2인스턴스에 관련하는 타입

IAM 결과 타입 … IAM리소스 및 액세스 키에 관련하는 타입

S3 결과 타입 … S3리소스(오브젝트)에 관련하는 타입 ( 업데이트 항목에서 별도 설명)

Kubernetes 결과 타입 … Amazon EKS 클러스터에 관련하는 타입 ( 업데이트 항목에서 별도 설명)

예를 들면 조금 전 이미지의 검출 결과 타입은 UnauthorizedAccess:EC2/SSHBruteForce 였습니다. 이것은 EC2 결과 타입입니다. 해당하는 다큐먼트 설명도 아래 링크에 있습니다.

https://docs.aws.amazon.com/ko_kr/guardduty/latest/ug/guardduty_finding-types-ec2.html#unauthorizedaccess-ec2-sshbruteforce

모든 것을 파악할 필요는 없지만 리스크가 높은 것은 사전에 파악해두고 다큐먼트도 읽어 두시면 좋겠습니다. 실제로 GuardDuty에서 검출되었을 때 원활하게 대응할 수 있기 때문입니다.

검출 결과의 기타 속성

검출 결과의 타입으로 ‘어떤 액티비티가 일어났는지’를 파악하면 다음은 다른 속성을 확인해서 그 상세를 보충합니다.

기본은 매니지먼트 콘솔에서 정리된 상태로 나오니 위에서부터 보면 됩니다.

모든 속성의 설명은 생략하겠습니다. 리소스 롤 속성은 파악해 두면 좋습니다.

이것은 리소스의 위치 상태(공격을 받고 있는지, 공격을 발신 하고 있지 않은지를 나타내고 있습니다. 리소스롤=TARGET 의 경우 이 리소스가 수상한 액티비티의 타겟(TARGET)인 것을 나타냅니다. 리소스롤=ACTOR 의 경우는 그 리소스 자신이 액티비티를 진행하는 주체(ACTOR)인 것을 의미합니다.

‘타입’ 및 ‘리소스(리소스ID나 리소스롤)’을 확인해서

● 어떤 액티비티가 일어나고 있는지

● 어떤 리소스가 관여하는지

● 그 리소스가 공격을 받고 있는지(TARGET), 공격을 하고 있는지(ACTOR)

를 판단하면 됩니다.

커스터마이즈, 서비스 연계

IP리스트

[설정 > 리스트]신뢰되는 IP 리스트위협 리스트 를 커스터마이징할 수 있습니다.

신뢰 되는 IP리스트

‘안전하게 통신 되는 것이 확인된 IP주소’의 리스트를 등록합니다. 이 리스트에 등록되고 있는 IP주소의 검출 결과는 생성되지 않게 됩니다.

위협 리스트

여기에는 ‘이미 확인된 악의적인 IP주소’의 리스트를 등록합니다. 이 리스트에 등록되고 있는 IP주소의 액티비티를 발견해서 검출 결과로 생성합니다.

억제 룰

검출 결과 목록 페이지에서 억제 룰을 생성 할 수있습니다. 억제룰은 ‘필터의 조합’으로 등록합니다.

‘필터 조합’에 매칭하는 검출 결과는 자동적으로 아카이브됩니다.

오검지가 자주 나오는 검출 결과가 있어서 노이즈가 되는 경우에 사용하면 좋습니다. 그 때는 필터를 조합해서 ‘오 검지만 제외’되고 있는것을 의식합니다. 본래 검지하고 싶은 검출 결과가 아카이브 되지 않게 주의합니다.

통지

검출 결과 내용에 따라서는 신속한 보안 대응이 필요해질 수도 있습니다. 그러기 위해서 통지 구조는 필수이기 때문에 만들어야 합니다.

EventBridge를 사용해서 메일이나 Slack, 감시 툴 등에 통지하는 구조를 만듭니다.

서비스 연계

AWS Security Hub연계

Security Hub는 똑같이 검지 서비스입니다. 주로 아래 2개의 주요 기능을 갖습니다.

● [보안 이벤트 집중 관리] 여러가지 보안 서비스에서 발생하는 이벤트를 집중 관리

● [클라우드 보안 태세 관리] AWS상의 구성을 평가해서 잠재적인 보안 리스크를 발견합니다

이 보안 이벤트 집중 관리기능이 GuardDuty와 관련이 있습니다. GuardDuty의 검출 결과를 Security Hub측에서도 관리할 수 있습니다. 이것은 디폴트로 설정되어 있고 특별히 추가 설정은 필요없습니다.

또 최근 업데이트로 Security Hub의 리전 집약이가능해졌습니다. 복수 리전에 나누어진 GuardDuty 이벤트도 Security Hub경유로 집약 리전에서 한꺼번에 확인할 수 있습니다.

Amazon Detective연계

Amazon Detective는 보안 조사 서비스입니다. 수상한 액티비티의 원인을 쉽게 분석, 조사, 특정할 수 있습니다. 특정에 필요한 각종 관련 로그의 가시화도 해줍니다.

이 Detective도 디폴트로 GuardDuty 와 통합되고 있습니다. GuardDuty 매니지먼트 콘솔에서 Detective의 조사 화면에 금방 갈 수 있습니다.

인시던트 조사의 스피드업을 위해서라도 Detective는 유효화 해 두세요.

멀티 어카운트 이용 (AWS Organizations연계)

GuardDuty는 멀티 어카운트 이용이 가능합니다.

https://docs.aws.amazon.com/ko_kr/guardduty/latest/ug/guardduty_accounts.html

위의 그림같이 관리 어카운트(1개)와 멤버 어카운트(복수)를 구성합니다. 관리 어카운트상에서 멤버 어카운트의 GuardDuty 검출 결과를 집중 관리할 수 있습니다.

AWS Organizations 환경이면 이 멀티 어카운트 구성을 쉽게 세트업할 수 있습니다. 보통은 관리 어카운트에서 멤버 어카운트로 초대및멤버 어카운트측에서 그것을 수락하는 프로세스가 세트업 에서 필요합니다. Organization 연계를 쓰면 그걸 생략할 수 있습니다.

업데이트

그 외 비교적 새로운 업데이트를 픽업 해 보겠습니다.

S3보호

2020년7월에 S3 보호 기능이 구현되었습니다. 이 기능을 유효화하면 GuardDuty는 S3의 오브젝트 레벨의 API를 모니터링합니다. S3버킷 내에서 일어난 수상한 오브젝트 조작을 검지할 수 있습니다.

S3버킷/오브젝트를 완전히 모니터링 하기 위해서도 이 기능은 유효화 해 두세요.

EKS클러스터에의 위협 검지

2022년 1월 업데이트로 Amazon Elastic Kubernetes Service (Amazon EKS)클러스터에의 위협 검출을 서포트합니다. 이 기능을 유효화하면 GuardDuty는 Amazon EKS의 Audit Logs를 수집해서 검출 결과를 생성합니다.

마지막으로

Amazon GuardDuty를 소개 해 봤습니다. 중요한 포지션의 서비스로 계속적으로 업데이트 되고 있습니다. 최소한 메인으로 이용하시는 리전에서 유효로, 가능하면 전 리전에서 유효화해서 활용해보세요.

또 ‘검출 된 후의 액션’을 잘 파악 해 두는것이 중요 합니다.

다음은 Amazon ECR편 예정입니다. 기대해주세요!

클래스메소드코리아에 문의사항이 있으신 분들은

​info@classmethod.kr 로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !

--

--