ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SNS, CloudWatch를 이용한 GuardDuty 알람
    AWS/ETC 2020. 6. 16. 17:46

    [목표]

    GuardDuty는 AWS 리소스(ex.EC2)에 대한 위험탐지 서비스입니다. 활성화 하는 것만으로도 간단하게 서비스의 기능을 이용할 수 있지만, 기본적으로 메일이나 문자같은 알람 서비스는 제공하지 않습니다. 이번에는 AWS의 GuardDuty와 CloudWatch 서비스를 활용한 SNS 경보 메시지 받을 수 있는 환경을 구성하고자 합니다.

     

    1. AWS GuardDuty

     

    - AWS GuardDuty를 활성화합니다. (30일은 무료 평가판 제공)

     

    AWS Console의 GuardDuty 서비스에서 '시작하기' 클릭
    'GuardDuty 활성화' 클릭
    활성화 된 모습, 아직 수집된 데이터가 없다.

     

    2. AWS SNS 서비스

     

    1) 주제 생성

     

    - AWS SNS의 새로운 주제를 생성합니다.

     

    AWS SNS 서비스의 첫 화면에서 빠르게 주제 생성이 가능하다.
    선택 사항(필요시)을 추가하고 '주제 생성'을 클릭한다.

    2) 주제 구독

     

    - 해당 SNS 주제에 대한 구독을 생성합니다. (SNS 서비스는 구독 주체를 대상으로 알람을 보냄, 이번의 경우 이메일 구독을 생성함)

     

    해당 주제의 페이지에서 '구독 생성' 클릭
    프로토콜 탭에서 '이메일'을 선택, 엔드포인트 입력란에 구독하고자 하는 이메일 주소를 입력하고 '구독 생성'을 클릭한다.

     

    - 구독을 생성하면, 구독한 주체를 대상으로 확인 메일이 전송됩니다. 수신한 메일에 대해서 'Confirm subscription'을 클릭하면 비로소 구독이 완료됩니다.

     

    'Confirm subscription'을 클릭한다.
    구독이 완료되었다는 웹 페이지
    해당 주제의 구독 탭에서 '확인됨' 상태를 확인할 수 있다.

     

    3. CloudWatch

     

    - GuardDuty의 이벤트를 SNS 주제의 Trigger로 설정하는 CloudWatch 규칙을 생성합니다.

     

    CloudWatch 서비스의 '규칙' 페이지에서 '규칙 생성' 클릭

    - 서비스 이름 : GuardDuty, 이벤트 유형 : GuardDuty Finding

    - 이벤트 패턴 미리보기 '편집' 클릭

     

     

    - 'type' key에 value가 되는 GuardDuty의 'Active Finding Types' 리스트를 입력합니다.

     

    #example

    {
      "source": [
        "aws.guardduty"
      ],
      "detail": {
        "type": [
          "UnauthorizedAccess:EC2/TorIPCaller",
          "UnauthorizedAccess:EC2/TorClient",
          "Backdoor:EC2/DenialOfService.Udp",
          "Backdoor:EC2/DenialOfService.UdpOnTcpPorts",
          "Backdoor:EC2/DenialOfService.Dns"
        ]
      }
    }

    많은 'Active Finding Types' 중에서 5개만 예시로 입력, 실제 적용에선 알람을 받고자 하는 이벤트를 value 값에 순차적으로 입력하면 된다.

     

    - GuardDuty Active Finding Types 목록 링크 : https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html

     

    빨간 박스가 'type' key의 value 값이 된다.

     

    - 이벤트의 대상을 추가합니다. 대상은 'SNS 주제' 중에서 앞서 생성한 GuardDuty 주제를 선택합니다.

     

    대상에서 '대상 추가' 클릭

    - 입력 구성은 '입력 변환기'를 선택, 아래의 'Input Path'와 'Input Template'을 각각 텍스트 박스에 입력하고 '세부 정보 구성'을 클릭합니다.

     

    #Input Path

    {
        "severity": "$.detail.severity",
        "Finding_ID": "$.detail.id",
        "instanceId": "$.detail.resource.instanceDetails.instanceId",
        "port": "$.detail.service.action.networkConnectionAction.localPortDetails.port",
        "eventFirstSeen": "$.detail.service.eventFirstSeen",
        "eventLastSeen": "$.detail.service.eventLastSeen",
        "count": "$.detail.service.count",
        "Finding_Type": "$.detail.type",
        "region": "$.region",
        "Finding_description": "$.detail.description"
    }

    #Input Template

    "You have a severity <severity> GuardDuty finding type <Finding_Type> for the EC2 instance <instanceId> in the region <region> as the <Finding_description> on the port <port>. The first attempt was on <eventFirstSeen> and the most recent attempt on <eventLastSeen> . The total occurrence is <count>. For more details open the GuardDuty console at https://console.aws.amazon.com/guardduty/home?region=<region>#/findings?search=id%3D<Finding_ID>"

     

     

    - '이름'과 '설명'을 입력하고 '규칙 생성'을 클릭합니다.

     

    이름과 설명은 구분용이다.

    - 생성이 완료되고 나면, CloudWatch 서비스의 규칙 탭에서 활성화 된 규칙을 확인할 수 있습니다.

     

    상태가 초록색 불이 켜져있으면 활성화 상태

     

    4. 결과확인

     

    - 1~3번의 모든 구성을 마치고 나서, 실제로 알람이 적용되었는지 확인합니다.

    - 가상으로 탐지된 위험을 발생시키기 위해 GuardDuty 서비스의 '설정' 탭에서 '샘플 결과 작성'을 클릭하여 임의의 샘플 데이터를 발생시킵니다. (이 때 결과에 표시되는 내역들은 실제 리소스가 아닌 가상의 'Instance id : i-99999999'에 탐지된 가상의 위험요소들이다.)

     

    결과 화면에서 탐지된 가상의 위험 요소들을 확인할 수 있다.

     

    - 샘플 결과를 작성하고 난 뒤 일정시간이 흐르고 나면 (약 1분), 구독한 주소로 경보 알람 메일이 날아오는 것을 확인할 수 있습니다.

     

    이벤트 소스에서 총 5개의 위험요소를 설정했기 때문에, 5통의 메일이 알람으로 전송됨.
    메일 내용은 이와 같다.

    끝.

     

    [참고]

    https://aws.amazon.com/ko/premiumsupport/knowledge-center/guardduty-cloudwatch-sns-rule/

     

    SNS 알림을 보내도록 GuardDuty에 대한 CloudWatch Events 규칙 구성

    Amazon GuardDuty에 대한 서비스 이벤트 유형에서 트리거되는 Amazon CloudWatch Events 규칙을 생성했지만 응답이 JSON 형식입니다. 사용자 지정 알림이 포함된 이메일 응답을 받으려면 어떻게 해야 합니까?

    aws.amazon.com

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

     

    Active Finding Types - Amazon GuardDuty

    Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

    docs.aws.amazon.com

     

    'AWS > ETC' 카테고리의 다른 글

    CodeDeploy, permission to perform operations 문제 해결  (0) 2023.10.25

    댓글

Designed by Tistory.