AWS 에서 GUI Console 에 특정 횟수 이상 Log in 이 실패한 경우에 Email 을 통한 알람을 수신하기 위해서는 아래와 같은 절차를 통해 CloudTrail 및 CloudWatch 의 설정을 하여야 합니다.
- AWS Console 접속에 대한 정보를 수집하기 위해서는 CloudTrail 을 생성하여야 합니다. CloudTrail 생성을 위하여 아래와 같이 CloudTrail 의 메뉴에서 “Create Trail” 버튼을 클릭하여 CloudTrail 생성 메뉴로 이동합니다.
2. Trail Name 에 적절한 이름을 입력합니다.
3. 기존에 CloudTrail 수집 용 S3 Bucket 이 없는 경우 “Create a new S3 Bucket” 옵션에서 Yes 를 선택한 후 CloudTrail Log 수집 용 S3 Bucket 이름을 입력하여 새로운 S3 Bucket 이 생성될 수 있도록 합니다. CloudTrail Log 수집용 Sc3 Bucket 이 있는 경우에는 No 를 선택 후 해당 S3 Bucket 이름을 선택합니다.
- “Create” 버튼을 클릭하여 CloudTrail 을 생성합니다.
4. 아래와 같이 생성된 CloudTrail 을 확인한 후 해당 CloudTrail 을 클릭합니다.
CloudTrail 의 상세 메뉴에서 CloudTrail 의 로그를 CloudWatch Logs 로 전달하는 설정을 하기위하여 아래와 같이 “Configure” 버튼을 클릭합니다.
CloudWatch Logs 를 설정하는 메뉴에 기존에 CloudTrail Log 를 수집하기 위한 별도의 CloudWatch Log Group 을 생성한 경우에는 해당 Log Group 을 선택하고 그렇지 않은 경우에는 생성하고자 하는 CloudWatch Log Group 이름을 입력한 후 “Continue” 버튼을 클릭합니다.
다음 내용을 읽어본 후 “Allow” 버튼을 클릭합니다.
CloudTrail 에 다음과 같이 CloudWatch Logs 에 대한 설정이 정상적으로 되어 있는 것을 확인합니다.
5. CloudWatch 메뉴에서 Logs 하단의 CloudWatch Log Groups 리스트에서 이전 단계에서 생성하거나 기존에 생성하였던 Log Group 을 선택합니다.
선택한 Log Group 의 내부에 아래 화면과 같이 CloudTrail 로그가 생성되는지 확인합니다.
*CloudTrail 생성 후 최초 로그가 Log Group 에 수신되는데 시간이 소요되므로 로그가 보이는데까지는 기다리셔야 합니다.
6. CloudWatch Logs 화면에서 CloudTrail 로그 수집용 Log Group 을 선택한 후 CloudWatch Metric 생성을 위하여 상단의 “Create Metric Filter” 버튼을 클릭합니다.
7. Define Logs Metric Filter 메뉴의 Filter Pattern 칸에 다음의 Filter Pattern 을 입력합니다. 입력 후 “Assign Metric” 버튼을 클릭합니다.
{ ($.eventName = ConsoleLogin) && ($.errorMessage = "Failed authentication") }
8. 다음 화면에서 생성될 Filter 의 이름과 “Metric Details” 의 설정을 아래와 같이 설정한 후 “Create Filter” 버튼을 클릭합니다.
9. 이전 단계가 정상적으로 완료되면 아래와 같은 화면으로 이동하며 이 화면에서 “Create Alarm” 링크를 클릭합니다.
10. 신규 알람 생성 화면에서 아래와 같이 Alarm Name 과 ConsoleSigninFailureCount 값 을 입력한 후 하단의 Actions 화면에서 Email 을 수신하기 위한 SNS Topic 이름과 Alarm 수신용 Email 주소를 입력합니다.
- ConsoleSigninFailureCount 값은 Console Login 실패 횟수를 의미하며 Alarm 발생의 존건이 되는 원하는 값을 입력하면 됩니다.
- SNS Topic 은 이 단계에서 이름을 입력하면 자동으로 생성됩니다.
모든 설정값을 입력한 후 “Create Alarm” 버튼을 클릭합니다.
11. Alarm 생성이 진행되면 이전 단계에서 입력하였던 Email 주소로 메일이 발송되며 아래와 같은 화면이 나타납니다.
12. 등록된 Email 사서함에 아래와 같은 SNS Topic 구독 확인 메일이 수신되면 “Confirm Subscription” 링크를 클릭하여 구독을 완료합니다.
13. CloudWatch Alarms 화면에 아래와 같이 생성된 CloudWatch Alarm 이 “Insufficient_Data” 상태인 것을 확인한 후 등록된 IAM 계정에 대해 잘못된 암호를 입력하여 Console Login 실패를 유발합니다.
참고. Login 실패 유발 후 실시간으로 Alarm 이메일이 수신되는 것이 아니기 때문에 잠시 시간을 두고 Email 수신을 기다려야 합니다.
14. 잠시 후 아래와 같이 CloudWatch Alarm 의 상태가 “ALARM” 으로 변화되며 등록된 Email 계정으로 Alarm 메일이 수신되는 것을 확인합니다.
15. CloudTrail 메뉴에 접속하여 아래와 같이 Filter 를 적용한 후 Console 접속 실패에 대한 상세 로그를 확인합니다.
감사합니다.