AWS Elastic Load Balancer 로그 수집

다음에서 지원:

이 문서에서는 Google Security Operations 피드를 설정하여 AWS Elastic Load Balancer 로그를 수집하는 방법을 설명합니다. 파서는 로그를 UDM 형식으로 변환합니다. CEF 및 비CEF 형식 메시지에서 grok 패턴을 사용하여 필드를 추출하고, 이를 UDM 필드에 매핑하고, HTTP, TLS, 보안 관련 필드의 특정 로직을 비롯한 다양한 데이터 변환을 처리합니다. 또한 특정 필드의 존재 여부 또는 형식을 기반으로 조건부 처리를 실행하여 정확한 UDM 표현을 보장합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • AWS에 대한 액세스 권한

AWS Elastic Load Balancer 구성

  • 액세스 로깅을 사용 설정하여 액세스 로그를 S3 스토리지 버킷으로 전송
  • Amazon Simple Queue Service (SQS)를 만들고 S3 스토리지 버킷에 연결합니다.

Amazon S3 버킷 구성

  1. AWS 콘솔에 로그인합니다.
  2. 이 사용자 가이드(버킷 만들기)에 따라 Amazon S3 버킷을 만듭니다.
  3. 나중에 사용할 수 있도록 버킷 이름 (예: elb-logs)과 리전을 저장합니다.
  4. 이 사용자 가이드(IAM 사용자 만들기)에 따라 사용자를 만듭니다.
  5. 생성된 사용자를 선택합니다.
  6. 보안 사용자 인증 정보 탭을 선택합니다.
  7. 액세스 키 섹션에서 액세스 키 만들기를 클릭합니다.
  8. 사용 사례서드 파티 서비스를 선택합니다.
  9. 다음을 클릭합니다.
  10. 선택사항: 설명 태그를 추가합니다.
  11. 액세스 키 만들기를 클릭합니다.
  12. CSV 파일 다운로드를 클릭하여 나중에 사용할 수 있도록 액세스 키비밀 액세스 키를 저장합니다.
  13. 완료를 클릭합니다.
  14. 권한 탭을 선택합니다.
  15. 권한 정책 섹션에서 권한 추가를 클릭합니다.
  16. 권한 추가를 선택합니다.
  17. 정책 직접 연결을 선택합니다.
  18. AmazonS3FullAccess 정책을 검색하여 선택합니다.
  19. 다음을 클릭합니다.
  20. 권한 추가를 클릭합니다.

액세스 로그를 사용 설정하도록 AWS Elastic Load Balancer를 구성하는 방법

  1. AWS Management Console에 로그인합니다.
  2. EC2를 검색하여 선택합니다.
  3. 탐색 메뉴에서 부하 분산기를 선택합니다.
  4. 로깅을 사용 설정할 부하 분산기를 선택합니다.
  5. 설명 탭에서 속성까지 스크롤합니다.
  6. 속성 수정을 클릭합니다.
  7. 사용 설정을 선택하여 액세스 로그를 사용 설정합니다.
  8. 이전에 만든 S3 버킷 (예: elb-logs)을 선택합니다.
  9. 선택사항: 로그를 더 쉽게 식별할 수 있도록 로그 접두사를 설정합니다 (예: elb/access-logs/).
  10. 저장을 클릭합니다.

피드 설정

Google SecOps 플랫폼에서 피드를 설정하는 방법은 두 가지입니다.

  • SIEM 설정 > 피드 > 새로 추가
  • 콘텐츠 허브 > 콘텐츠 팩 > 시작하기

AWS Elastic Load Balancer 피드를 설정하는 방법

  1. Amazon Cloud Platform 팩을 클릭합니다.
  2. AWS Elastic Load Balancer 로그 유형을 찾습니다.
  3. 다음 필드에 값을 지정합니다.

    1. 다음 필드에 값을 지정합니다.
    2. 소스 유형: Amazon SQS V2
    3. Queue Name: 읽어올 SQS 큐 이름
    4. S3 URI: 버킷 URI입니다.
      • s3://your-log-bucket-name/
        • your-log-bucket-name을 실제 S3 버킷 이름으로 바꿉니다.
    5. 소스 삭제 옵션: 수집 환경설정에 따라 삭제 옵션을 선택합니다.

    6. 최대 파일 기간: 지난 일수 동안 수정된 파일을 포함합니다. 기본값은 180일입니다.

    7. SQS 대기열 액세스 키 ID: 20자리 영숫자 문자열인 계정 액세스 키입니다.

    8. SQS 대기열 보안 비밀 액세스 키: 40자로 된 영숫자 문자열인 계정 액세스 키입니다.

    고급 옵션

    • 피드 이름: 피드를 식별하는 미리 채워진 값입니다.
    • 애셋 네임스페이스: 피드와 연결된 네임스페이스입니다.
    • 수집 라벨: 이 피드의 모든 이벤트에 적용되는 라벨입니다.
  4. 피드 만들기를 클릭합니다.

이 제품군 내에서 다양한 로그 유형에 대해 여러 피드를 구성하는 방법에 관한 자세한 내용은 제품별 피드 구성을 참고하세요.

UDM 매핑 테이블

로그 필드 UDM 매핑 논리
actions_executed security_result.action actions_executed이 'waf,forward' 또는 'waf,redirect'인 경우 'ALLOW'로 설정합니다. actions_executed이 'waf'인 경우 'BLOCK'으로 설정합니다.
chosen_cert_arn principal.user.attribute.labels chosen_cert_arn에 'session'이 포함된 경우 값을 security_result.description에 매핑합니다. 그렇지 않으면 키가 'ARN'이고 값이 chosen_cert_arn인 라벨을 만들어 principal.user.attribute.labels 배열에 추가합니다.
chosen_cert_arn security_result.description chosen_cert_arn에 'session'이 포함된 경우 값을 이 필드에 매핑합니다.
client_ip principal.asset.ip 직접 매핑됩니다.
client_ip principal.ip 직접 매핑됩니다.
client_port principal.port 직접 매핑됩니다.
classification security_result.rule_name 비어 있지 않거나 '-'인 경우 직접 매핑됩니다.
classification_reason security_result.summary 비어 있지 않거나 '-'인 경우 직접 매핑됩니다.
Customer (CEF) principal.user.user_display_name CEF 필드에서 직접 매핑됩니다.
data Various grok 패턴을 사용하여 파싱하여 여러 필드를 추출했습니다. 특정 매핑은 다른 행을 참고하세요.
data.act (CEF) security_result.action_details CEF 필드에서 직접 매핑됩니다.
data.app (CEF) principal.application CEF 필드에서 직접 매핑됩니다.
data.ccode (CEF) principal.location.country CEF 필드에서 직접 매핑됩니다.
data.cicode (CEF) principal.location.city CEF 필드에서 직접 매핑됩니다.
data.cn1 (CEF) network.http.response_code CEF 필드에서 직접 매핑됩니다.
data.cpt (CEF) principal.port CEF 필드에서 직접 매핑됩니다.
data.cs1Label (CEF) additional.fields 키가 'Cap Support'이고 값이 cs1Label인 키-값 쌍을 만듭니다.
data.cs2Label (CEF) additional.fields 키가 'Javascript Support'이고 값이 cs2Label인 키-값 쌍을 만듭니다.
data.cs3Label (CEF) additional.fields 키가 'CO Support'이고 값이 cs3Label인 키-값 쌍을 만듭니다.
data.cs4Label (CEF) additional.fields 키가 'VID'이고 값이 cs4Label인 키-값 쌍을 만듭니다.
data.cs5Label (CEF) additional.fields 키가 'clappsig'이고 값이 cs5Label인 키-값 쌍을 만듭니다.
data.cs6Label (CEF) additional.fields 키가 'clapp'이고 값이 cs6Label인 키-값 쌍을 만듭니다.
data.cs7Label (CEF) additional.fields 키가 'latitude'이고 값이 cs7Label인 키-값 쌍을 만듭니다.
data.deviceExternalId (CEF) about.asset.asset_id 애셋 ID의 일부로 사용됩니다(Incapsula.SIEMintegration:deviceExternalId).
data.deviceFacility (CEF) principal.location.region CEF 필드에서 직접 매핑됩니다.
data.dproc (CEF) target.process.command_line CEF 필드에서 직접 매핑됩니다.
data.dst_ip target.asset.ip 직접 매핑됩니다.
data.dst_ip target.ip 직접 매핑됩니다.
data.dst_port target.port 직접 매핑됩니다.
data.elb target.resource.id 직접 매핑됩니다.
data.fileId (CEF) security_result.detection_fields 키가 'fileId'이고 값이 fileId인 키-값 쌍을 만듭니다.
data.in (CEF) network.received_bytes CEF 필드에서 직접 매핑됩니다.
data.request (CEF) target.url CEF 필드에서 직접 매핑됩니다.
data.requestClientApplication (CEF) network.http.user_agent CEF 필드에서 직접 매핑됩니다.
data.requestMethod (CEF) network.http.method CEF 필드에서 직접 매핑됩니다.
data.severity (CEF) security_result.severity 심각도가 0이면 LOW로 매핑됩니다.
data.sip (CEF) principal.asset.ip CEF 필드에서 직접 매핑됩니다.
data.sip (CEF) principal.ip CEF 필드에서 직접 매핑됩니다.
data.siteid (CEF) security_result.detection_fields 키가 'siteid'이고 값이 siteid인 키-값 쌍을 만듭니다.
data.sourceServiceName (CEF) principal.application CEF 필드에서 직접 매핑됩니다.
data.spt (CEF) principal.port CEF 필드에서 직접 매핑됩니다.
data.src (CEF) principal.ip CEF 필드에서 직접 매핑됩니다.
data.suid (CEF) principal.user.userid CEF 필드에서 직접 매핑됩니다.
data.ver (CEF) network.tls.version 버전 부분은 grok을 사용하여 추출되고 매핑됩니다.
data.ver (CEF) network.tls.cipher 암호화 부분은 grok을 사용하여 추출되고 매핑됩니다.
data.xff (CEF) principal.ip CEF 필드에서 직접 매핑됩니다.
domain_name principal.administrative_domain 직접 매핑됩니다.
http_method network.http.method 직접 매핑됩니다.
log_type metadata.log_type 직접 매핑됩니다.
message Various grok 패턴을 사용하여 파싱하여 여러 필드를 추출했습니다. 특정 매핑은 다른 행을 참고하세요.
received_bytes network.received_bytes 직접 매핑됩니다.
redirect_url network.application_protocol redirect_url이 'http'로 시작하면 프로토콜이 추출되어 매핑됩니다.
redirect_url target.asset.hostname redirect_url이 'http'로 시작하면 호스트 이름이 추출되어 매핑됩니다.
redirect_url target.hostname redirect_url이 'http'로 시작하면 호스트 이름이 추출되어 매핑됩니다.
redirect_url target.port redirect_url가 'http'로 시작하면 포트가 추출되어 매핑됩니다.
request_creation_time metadata.collected_timestamp 날짜 파싱 후 직접 매핑됩니다.
request_processing_time security_result.detection_fields 키가 'request_processing_time'이고 값이 이 필드에서 가져온 키-값 쌍을 만듭니다.
response_processing_time security_result.detection_fields 키가 'response_processing_time'이고 값이 이 필드에서 가져온 키-값 쌍을 만듭니다.
sent_bytes network.sent_bytes 직접 매핑됩니다.
ssl_cipher network.tls.cipher 직접 매핑됩니다.
ssl_protocol network.tls.version 직접 매핑됩니다.
target_group_arn target.group.group_display_name 직접 매핑됩니다.
target_processing_time security_result.detection_fields 'target_processing_time' 키와 이 필드의 값으로 키-값 쌍을 만듭니다.
target_status_code target.labels 키가 'target_status_code'이고 값이 이 필드에서 가져온 라벨을 만들어 target.labels 배열에 추가합니다.
time metadata.event_timestamp 날짜 파싱 후 직접 매핑됩니다.
trace_id metadata.product_log_id 'Root='를 삭제한 후 직접 매핑됩니다.
url network.http.referral_url 직접 매핑됩니다.
user_agent network.http.user_agent 직접 매핑됩니다.
(파서) metadata.event_type 주 구성원 및 대상 머신 ID가 있는 경우 'NETWORK_HTTP', 주 구성원 머신 ID만 있는 경우 'STATUS_UPDATE', 대상 IP, 호스트 이름 또는 대상 IP가 없는 경우 'GENERIC_EVENT', 그 외의 경우 'NETWORK_HTTP'로 설정합니다.
(파서) metadata.product_name 'AWS Elastic Load Balancer'로 설정합니다.
(파서) metadata.vendor_name 'AMAZON'으로 설정합니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.