AWS Elastic Load Balancing 로그 수집
다음에서 지원:
Google SecOps
SIEM
이 문서에서는 Google Security Operations 피드를 설정하여 AWS Elastic Load Balancing 로그를 수집하는 방법을 설명합니다. 파서는 로그를 UDM 형식으로 변환합니다. grok 패턴을 사용하여 CEF 형식 메시지와 비-CEF 형식 메시지에서 필드를 추출하고 UDM 필드에 매핑하며 HTTP, TLS, 보안 관련 필드의 특정 로직을 비롯한 다양한 데이터 변환을 처리합니다. 또한 특정 필드의 존재 여부 또는 형식을 기반으로 조건부 처리를 실행하여 정확한 UDM 표현을 보장합니다.
시작하기 전에
- Google SecOps 인스턴스가 있는지 확인합니다.
- AWS에 대한 권한이 있는지 확인합니다.
AWS Elastic Load Balancing 구성
- 액세스 로깅을 사용 설정하여 액세스 로그를 S3 스토리지 버킷으로 전송합니다.
- Amazon Simple Queue Service (SQS)를 만들고 S3 스토리지 버킷에 연결합니다.
Amazon S3 버킷 구성
- AWS 콘솔에 로그인합니다.
- 버킷 만들기 사용자 가이드에 따라 Amazon S3 버킷을 만듭니다.
- 나중에 사용할 수 있도록 버킷 이름 (예:
elb-logs
) 및 리전을 저장합니다. - IAM 사용자 만들기 사용자 가이드에 따라 사용자를 만듭니다.
- 만든 사용자를 선택합니다.
- 보안 사용자 인증 정보 탭을 선택합니다.
- 액세스 키 섹션에서 액세스 키 만들기를 클릭합니다.
- 사용 사례로 서드 파티 서비스를 선택합니다.
- 다음을 클릭합니다.
- 선택사항: 설명 태그를 추가합니다.
- 액세스 키 만들기를 클릭합니다.
- CSV 파일 다운로드를 클릭하여 나중에 사용할 수 있도록 액세스 키 및 비밀 액세스 키를 저장합니다.
- 완료를 클릭합니다.
- 권한 탭을 선택합니다.
- 권한 정책 섹션에서 권한 추가를 클릭합니다.
- 권한 추가를 선택합니다.
- Attach policies directly(정책 직접 연결)를 선택합니다.
- AmazonS3FullAccess 정책을 검색하여 선택합니다.
- 다음을 클릭합니다.
- 권한 추가를 클릭합니다.
액세스 로그를 사용 설정하도록 AWS Elastic Load Balancer 구성
- AWS Management Console에 로그인합니다.
- EC2를 검색하여 선택합니다.
- 탐색 메뉴에서 부하 분산기를 선택합니다.
- 로깅을 사용 설정할 부하 분산기를 선택합니다.
- Description(설명) 탭에서 Attributes(속성)까지 스크롤합니다.
- 속성 수정을 클릭합니다.
- 사용 설정을 선택하여 액세스 로그를 사용 설정합니다.
- 이전에 만든 S3 버킷 (예:
elb-logs
)을 선택합니다. - 선택사항: 로그를 더 쉽게 식별할 수 있도록 로그 접두사를 설정합니다 (예:
elb/access-logs/
). - 저장을 클릭합니다.
AWS Elastic Load Balancer 로그를 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정 > 피드로 이동합니다.
- 새로 추가를 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다 (예: AWS Elastic Load Balancer Logs).
- 소스 유형으로 Amazon S3를 선택합니다.
- 로그 유형으로 AWS Elastic Load Balancer를 선택합니다.
- 다음을 클릭합니다.
다음 입력 매개변수의 값을 지정합니다.
- 리전: Amazon S3 버킷이 있는 리전입니다.
- S3 URI: 버킷 URI입니다.
s3:/BUCKET_NAME
BUCKET_NAME
을 버킷의 실제 이름으로 바꿉니다.
- URI: 로그 스트림 구성 (단일 파일 | 디렉터리 | 하위 디렉터리가 포함된 디렉터리)에 따라 URI 유형을 선택합니다.
- 소스 삭제 옵션: 원하는 삭제 옵션을 선택합니다.
- 액세스 키 ID: S3 버킷에 대한 액세스 권한이 있는 사용자 액세스 키입니다.
- 보안 비밀 액세스 키: S3 버킷에 액세스할 수 있는 사용자 보안 비밀 키입니다.
- 애셋 네임스페이스: 애셋 네임스페이스입니다.
- 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
다음을 클릭합니다.
확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.
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 |
다양함 | 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 |
다양함 | 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'으로 설정합니다. |
변경사항
2024-03-22
- JSON 로그의 새로운 패턴을 지원하는 새로운 Grok 패턴을 추가했습니다.
- CEF 패턴 로그 지원을 추가했습니다.
- 'dst_ip'가 'target.ip'에 매핑되었습니다.
- 'dst_port'가 'target.port'에 매핑되었습니다.
- 'sip'가 'principal.ip'에 매핑되었습니다.
- 'request_processing_time', 'target_processing_time', 'siteid', 'fileId', 'response_processing_time'이 'security_result.detection.fields'에 매핑되었습니다.
- 'principal.ip' 및 'principal.asset.ip'의 매핑을 정렬했습니다.
- 'target.ip' 및 'target.asset.ip'의 매핑을 정렬했습니다.
- 'target.hostname' 및 'target.asset.hostname' 매핑이 정렬되었습니다.
- 'cipher'가 'network.tls.cipher'에 매핑되었습니다.
- 'version'이 'network.tls.version'에 매핑되었습니다.
- '고객'이 'principal.user.user_display_name'에 매핑되었습니다.
2022-05-27
- 개선사항 - metadata.product_name에 저장된 값을 'AWS Elastic Load Balancer'로 수정했습니다.
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가의 답변을 받으세요.