project/SIEMple

Global Region 의심 이벤트 수집과 OpenSearch 설정

downfa11 2024. 11. 17. 16:51

개발팀의 초기 목표는 우선 Global Region에 대한 의심 이벤트를 수집하는 필터 구현WAF의 보안 이벤트를 검출하는 것이다. 그를 위해서 CloudTrail에서의 이벤트 로그를 Cloudwatch로 보내고, 얘를 OpenSearch Service로 수집하는 과정이 선행되어야 한다.

 

도메인 영역에서 액세스 정책을 수정하고, 보안 설정을 위해서 도메인 수준 액세스 정책을 구성해야한다.

 

IAM > 보안 자격 증명 > 내 보안 자격 증명 들어가면 사용자 ARN 있음

 

오류 : not authorized to perform: iam:CreateServiceLinkedRole (해결)

indices.query.bool.max_clause_count is not a valid query count value. Please enter a integer value between 1 and 2147483647 (inclusive).

(해결 : 고급 클러스터 설정 > 최대 절수 조절)

자동 튜닝으로 opensearch 클러스터 성능을 최적화할 수 있다.

사용량이 적은 시간동안 최적화를 예약 > blue-green 배포가 필요한 최적화는 사용량이 적은 시간이 예약된다

보안 로그 통합 및 파이프라인 구축

1. CloudTrail 추적 생성하기

bucket은 새로 생성하도록 했음

이때 CloudWatch Logs 선택 사항을 활성화시킨다.

이때 수집할 로그 이벤트의 유형에 따라 요금 정책이 바뀔 수 있다. [관리 이벤트, 데이터 이벤트, Insights 이벤트]

Insights에 대해서 알아봐야겠지만, 일단 어떤 로그로 뜨는지 한번 확인해보겟음

비정상적인 활동, 오류, 사용자 행동 식별하는 이벤트

https://aws.amazon.com/ko/cloudtrail/pricing/ > (Usaged Cost)

insights는 7일간의 기준선에 대해 비정상적인 활동을 측정함

API 호출 빈도 - 기준 API 호출 볼륨에 대해 분당 발생하는 쓰기 전용 관리 API 호출의 측정값

API 오류 비율 - 오류 코드를 발생시키는 관리 API 호출의 측정값. API 호출이 실패하면 오류가 표시

읽기 쓰기 모두 선택에 데이터 이벤트 유형은 S3, 로그 선택기 템플릿은 모든 이벤트 로깅

오류 해결 : bucket의 이름은 by all users of the system.

즉 모든 사용자들이 공유하기 때문에 고유해야한다

2. Log Group 'CloudWatchLogs’ - OpenSearch 구독 필터 설정

생성한 cloudwatch log group > 구독 필터 > OpenSearch service 생성

Function not found: arn:aws:lambda:ap-northeast-2:058264524253:function:LogsToElasticsearch_siem-opensearch

키는데 20분 넘게 걸림

3. OpenSearch에 권한 추가

securty > Roles > all_access > mapped users > add > IAM Role ARN 추가

Opensearch 도메인 5시간 넘게 생성 - 초기화중인 오류

IPv6에 대한 3개 노드 VPC에 CIDR 설정이 안됨.

그냥 IPv4만 되도록 하니까 20분 정도 걸렸다.

4. OpenSearch에서 CloudTrail을 확인하기

OpenSearch Dashboard 접속 > Index Pattern 생성 > name에 cwl-* 입력, Time Field=everytime > Discover

  • Dashboards 로그인
  • 대시보드 URL로 접속해서 제공된 계정으로 접속한다.
  • 패스워드는 이후에 수정

Global Region 의심 이벤트 수집

상황 설정 : CloudTail의 이벤트 로그를 정제해서 해외 리전의 이벤트를 의심 이벤트로 규정

근거 : Seoul Region에서 서비스 이용하기 때문

작업 순서

  1. CloudTrail → CloudWatch → Lambda → OpenSearch 과정 진행
    • aws 계정의 사용자, 역할 또는 서비스가 수행하는 작업을 수집
  2. 로그 데이터 구조에 맞게 모델 설계
  3. region:Seoul 정제하기

로그에 대한 단순 정제 구현을 목적으로 한다.

    • region이 n인 로그들만 수집
    • select,from,where, 등의 sql injection에 대한 로그만 수집
      • 바로 정제된 이벤트에 대해서 S3로 보내서 분석할 계획

서울 리젼이 아닌 해외 서비스를 염두하는 경우를 위해서 대시보드의 설정에서 관리할 수 있도록 계획했다. (defualt=Seoul-region)

아직은 무리 없지만, DNS logs나 Query Logs를 수집하는 단계에서 kinesis나 msk를 쓰지 않는 방법을 고민해야 할 것 같다. 비용 절감도 생각해야하니ㅜ

별 다른 트러블 슈팅이 아닌 이상, 다음 게시글은 WAF의 보안 이벤트 검출이나 비용 절감을 위한 시도들이 될 거 같다.