Cato Networks 로그 수집
이 문서에서는 AWS S3를 사용하여 Cato Networks 로그를 Google Security Operations로 수집하는 방법을 설명합니다. 파서는 먼저 필드 집합을 빈 문자열로 초기화한 다음 JSON 형식 Cato Networks 로그를 파싱합니다. 그런 다음 추출된 필드를 Google SecOps 통합 데이터 모델(UDM) 모델의 해당 필드에 매핑하여 다양한 이벤트 유형을 처리하고 추가 컨텍스트로 데이터를 보강합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- AWS S3, AWS IAM에 대한 권한 있는 액세스
- Cato Networks에 대한 액세스 권한
AWS IAM 및 S3 버킷 구성
- 이 사용자 가이드(버킷 만들기)에 따라 Amazon S3 버킷을 만듭니다.
- 나중에 참조할 수 있도록 버킷 이름과 리전을 저장합니다.
- 이 사용자 가이드(IAM 사용자 만들기)에 따라 사용자를 만듭니다.
- 생성된 사용자를 선택합니다.
- 보안 사용자 인증 정보 탭을 선택합니다.
- 액세스 키 섹션에서 액세스 키 만들기를 클릭합니다.
- 사용 사례로 서드 파티 서비스를 선택합니다.
- 다음을 클릭합니다.
- 선택사항: 설명 태그를 추가합니다.
- 액세스 키 만들기를 클릭합니다.
- CSV 파일 다운로드를 클릭하여 향후 참조할 수 있도록 액세스 키와 비밀 액세스 키를 저장합니다.
- 완료를 클릭합니다.
- 권한 탭을 선택합니다.
- 권한 정책 섹션에서 권한 추가를 클릭합니다.
- 권한 추가를 선택합니다.
- 정책 직접 연결을 선택합니다.
- AmazonS3FullAccess 정책을 검색한 다음 정책을 선택합니다.
- 다음을 클릭합니다.
- 권한 추가를 클릭합니다.
데이터 업로드를 사용 설정하기 위해 S3 버킷의 새 IAM 정책 구성
- 정책에서 JSON 탭을 클릭합니다.
다음 JSON을 수정하고
<bucket name>
을 S3 버킷으로 바꾼 후 탭에 붙여넣습니다.{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::<bucket name>" ] }, { "Sid": "", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<bucket name>/*" ] } ] }
정책 만들기를 클릭합니다.
Cato의 ARN으로 새 IAM 역할 구성
신뢰할 수 있는 항목 선택 화면에서 커스텀 트러스트 정책을 선택하고 역할에 Cato의 ARN을 추가합니다(arn:aws:iam::428465470022:role/cato-events-integration).
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::428465470022:role/cato-events-integration" }, "Action": "sts:AssumeRole" } ] }
다음을 클릭합니다.
권한 추가 화면에서 이전에 만든 정책을 역할에 연결합니다.
다음을 클릭합니다.
역할 이름을 입력하고 역할 만들기를 클릭합니다.
Cato Networks 이벤트 및 S3 통합 구성
- Cato Networks 웹 UI에 로그인합니다.
- 리소스 > 이벤트 통합으로 이동합니다.
- Enable integration with Cato events(Cato 이벤트와의 통합 사용 설정)를 클릭합니다.
- New(새로 만들기)를 클릭합니다.
- 다음 구성 세부정보를 제공합니다.
- 통합의 이름을 입력합니다.
- 버킷 이름: S3 버킷의 이름과 동일합니다.
- 폴더: S3 버킷 내 폴더 경로의 이름입니다 (필요한 경우).
- 리전: S3 버킷의 리전과 동일합니다.
- 역할 ARN: S3 버킷의 역할 ARN을 복사하여 붙여넣습니다.
- (선택사항) S3 버킷에 업로드되는 이벤트의 필터 설정을 정의합니다. 여러 필터를 정의하면 AND 관계가 적용되어 모든 필터와 일치하는 이벤트가 업로드됩니다.
- 적용을 클릭합니다.
피드 설정
피드를 구성하려면 다음 단계를 따르세요.
- SIEM 설정> 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 다음 페이지에서 단일 피드 구성을 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다 (예:
Cato Logs
). - 소스 유형으로 Amazon S3 V2를 선택합니다.
- 로그 유형으로 Cato Networks를 선택합니다.
- 다음을 클릭합니다.
다음 입력 매개변수의 값을 지정합니다.
S3 URI: 버킷 URI (형식은
s3://<your-log-bucket-name>
이어야 함). 다음을 바꿉니다.your-log-bucket-name
: 버킷의 이름입니다.
소스 삭제 옵션: 환경설정에 따라 삭제 옵션을 선택합니다.
다음을 클릭합니다.
확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.
UDM 매핑 테이블
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
account_id | target.user.userid | 이 필드의 값은 account_id 필드에서 가져옵니다. |
action | additional.fields.value.string_value | 이 필드의 값은 action 필드에서 가져옵니다. |
app_stack | additional.fields.value.list_value.values.string_value | 이 필드의 값은 app_stack 필드에서 가져옵니다. |
애플리케이션 | principal.application | 이 필드의 값은 application 필드에서 가져옵니다. |
카테고리 | additional.fields.value.list_value.values.string_value | 이 필드의 값은 categories 필드에서 가져옵니다. |
clientIP | principal.ip, principal.asset.ip | 이 필드의 값은 clientIP 필드에서 가져옵니다. |
creationTime | 이 필드는 이벤트 타임스탬프를 계산하는 데 사용됩니다. | |
custom_categories | additional.fields.value.list_value.values.string_value | 이 필드의 값은 custom_categories 필드에서 가져옵니다. |
dest_country | target.location.country_or_region | 이 필드의 값은 dest_country 필드에서 가져옵니다. |
dest_country_code | target.resource.attribute.labels.value | 이 필드의 값은 dest_country_code 필드에서 가져옵니다. |
dest_ip | target.ip, target.asset.ip | 이 필드의 값은 dest_ip 필드에서 가져옵니다. |
dest_port | target.port | 이 필드의 값은 dest_port 필드에서 가져옵니다. |
destinationCountry | target.location.country_or_region | 이 필드의 값은 destinationCountry 필드에서 가져옵니다. |
destinationIp | target.ip, target.asset.ip | 이 필드의 값은 destinationIp 필드에서 가져옵니다. |
destinationName | target.hostname, target.asset.hostname | 이 필드의 값은 destinationName 필드에서 가져옵니다. |
device_name | network.dhcp.client_hostname | 이 필드의 값은 device_name 필드에서 가져옵니다. |
dns_name | additional.fields.value.string_value | 이 필드의 값은 dns_name 필드에서 가져옵니다. |
event_count | additional.fields.value.string_value | 이 필드의 값은 event_count 필드에서 가져옵니다. |
event_sub_type | metadata.description | 이 필드의 값은 event_sub_type 필드에서 가져옵니다. |
fieldsMap.ISP_name | additional.fields.value.string_value | 이 필드의 값은 fieldsMap.ISP_name 필드에서 가져옵니다. |
fieldsMap.action | security_result.action_details | 이 필드의 값은 fieldsMap.action 필드에서 가져옵니다. |
fieldsMap.categories | security_result.category_details | 이 필드의 값은 fieldsMap.categories 필드에서 가져옵니다. |
fieldsMap.dest_country | target.location.country_or_region | 이 필드의 값은 fieldsMap.dest_country 필드에서 가져옵니다. |
fieldsMap.dest_ip | target.ip, target.asset.ip | 이 필드의 값은 fieldsMap.dest_ip 필드에서 가져옵니다. |
fieldsMap.dest_port | principal.port | 이 필드의 값은 fieldsMap.dest_port 필드에서 가져옵니다. |
fieldsMap.domain_name | principal.administrative_domain | 이 필드의 값은 fieldsMap.domain_name 필드에서 가져옵니다. |
fieldsMap.event_sub_type | metadata.description | 이 필드의 값은 fieldsMap.event_sub_type 필드에서 가져옵니다. |
fieldsMap.event_type | metadata.product_event_type | 이 필드의 값은 fieldsMap.event_type 필드에서 가져옵니다. |
fieldsMap.ip_protocol | network.ip_protocol | 이 필드의 값은 fieldsMap.ip_protocol 필드에서 가져옵니다. |
fieldsMap.os_type | 이 필드는 주체의 운영체제를 확인하는 데 사용됩니다. | |
fieldsMap.pop_name | additional.fields.value.string_value | 이 필드의 값은 fieldsMap.pop_name 필드에서 가져옵니다. |
fieldsMap.rule_id | security_result.rule_id | 이 필드의 값은 fieldsMap.rule_id 필드에서 가져옵니다. |
fieldsMap.rule_name | security_result.rule_name | 이 필드의 값은 fieldsMap.rule_name 필드에서 가져옵니다. |
fieldsMap.src_ip | principal.ip, principal.asset.ip | 이 필드의 값은 fieldsMap.src_ip 필드에서 가져옵니다. |
fieldsMap.src_isp_ip | src.ip, src.asset.ip | 이 필드의 값은 fieldsMap.src_isp_ip 필드에서 가져옵니다. |
fieldsMap.time | 이 필드는 이벤트 타임스탬프를 계산하는 데 사용됩니다. | |
file_hash | target.file.sha256 | 이 필드의 값은 file_hash 필드에서 가져옵니다. |
file_name | target.file.full_path | 이 필드의 값은 file_name 필드에서 가져옵니다. |
file_size | target.file.size | 이 필드의 값은 file_size 필드에서 가져옵니다. |
http_host_name | principal.hostname, principal.asset.hostname | 이 필드의 값은 http_host_name 필드에서 가져옵니다. |
insertionDate | additional.fields.value.string_value | 이 필드의 값은 insertionDate 필드에서 가져옵니다. |
internalId | additional.fields.value.string_value | 이 필드의 값은 internalId 필드에서 가져옵니다. |
ip_protocol | network.ip_protocol | 이 필드의 값은 ip_protocol 필드에서 가져옵니다. |
is_sanctioned_app | security_result.detection_fields.value | 이 필드의 값은 is_sanctioned_app 필드에서 가져옵니다. |
os_type | principal.platform | 이 필드의 값은 os_type 필드에서 가져옵니다. |
pop_name | 이 필드는 fieldsMap.pop_name 필드를 채우는 데 사용됩니다. |
|
prettyType | metadata.product_event_type | 이 필드의 값은 prettyType 필드에서 가져옵니다. |
규칙 | additional.fields.value.string_value | 이 필드의 값은 rule 필드에서 가져옵니다. |
rule_id | security_result.rule_id | 이 필드의 값은 rule_id 필드에서 가져옵니다. |
rule_name | security_result.rule_name | 이 필드의 값은 rule_name 필드에서 가져옵니다. |
server_port | target.port | 이 필드의 값은 server_port 필드에서 가져옵니다. |
줄이는 것을 | security_result.severity_details | 이 필드의 값은 severity 필드에서 가져옵니다. |
sourceCountry | principal.location.country_or_region | 이 필드의 값은 sourceCountry 필드에서 가져옵니다. |
sourceInternalIp | principal.ip | 이 필드의 값은 sourceInternalIp 필드에서 가져옵니다. |
sourceIp | src.ip, src.asset.ip | 이 필드의 값은 sourceIp 필드에서 가져옵니다. |
sourceName | principal.user.user_display_name | 이 필드의 값은 sourceName 필드에서 가져옵니다. |
스포츠 | principal.port | 이 필드의 값은 sport 필드에서 가져옵니다. |
src_country | 이 필드는 sourceCountry 필드를 채우는 데 사용됩니다. |
|
src_country_code | principal.resource.attribute.labels.value | 이 필드의 값은 src_country_code 필드에서 가져옵니다. |
src_ip | principal.ip, principal.asset.ip | 이 필드의 값은 src_ip 필드에서 가져옵니다. |
src_is_site_or_vpn | security_result.detection_fields.value | 이 필드의 값은 src_is_site_or_vpn 필드에서 가져옵니다. |
src_isp_ip | src.ip, src.asset.ip | 이 필드의 값은 src_isp_ip 필드에서 가져옵니다. |
src_site | additional.fields.value.string_value | 이 필드의 값은 src_site 필드에서 가져옵니다. |
src_site_name | additional.fields.value.string_value | 이 필드의 값은 src_site_name 필드에서 가져옵니다. |
시작 | 이 필드는 이벤트 타임스탬프를 계산하는 데 사용됩니다. | |
subnet_name | additional.fields.value.string_value | 이 필드의 값은 subnet_name 필드에서 가져옵니다. |
시간 | 이 필드는 이벤트 타임스탬프를 계산하는 데 사용됩니다. | |
time_str | 이 필드는 이벤트 타임스탬프를 계산하는 데 사용됩니다. | |
tunnel_host_logon_names | principal.user.userid | 이 필드의 값은 tunnel_host_logon_names 필드에서 가져옵니다. |
URL | target.url | 이 필드의 값은 url 필드에서 가져옵니다. |
user_id | principal.user.userid | 이 필드의 값은 user_id 필드에서 가져옵니다. |
metadata.event_type | 이 필드의 값은 GENERIC_EVENT 로 설정되며 이벤트에 따라 NETWORK_CONNECTION , NETWORK_DHCP 또는 NETWORK_HTTP 로 재정의될 수 있습니다. |
|
metadata.log_type | 이 필드의 값은 CATO_NETWORKS 으로 설정됩니다. |
|
metadata.product_name | 이 필드의 값은 SASE 으로 설정됩니다. |
|
metadata.vendor_name | 이 필드의 값은 Cato Networks 으로 설정됩니다. |
|
network.application_protocol | 이 필드의 값은 Connected 이벤트의 경우 DHCP 로 설정됩니다. |
|
network.dhcp.chaddr | 이 필드의 값은 Connected 이벤트의 경우 01:23:45:ab:cd:ef 로 설정됩니다. |
|
network.dhcp.lease_time_seconds | 이 필드의 값은 Connected 이벤트의 경우 86400 로 설정됩니다. |
|
network.dhcp.opcode | 이 필드의 값은 Connected 이벤트의 경우 BOOTREPLY 로 설정됩니다. |
|
network.dhcp.type | 이 필드의 값은 Connected 이벤트의 경우 ACK 로 설정됩니다. |
|
network.direction | 이 필드의 값은 Anti Malware 및 URL Filtering 이벤트의 경우 OUTBOUND 로 설정됩니다. |
|
security_result.action | action 필드가 BLOCK 이 아닌 경우 이 필드의 값은 ALLOW 로 설정되고, 그렇지 않으면 BLOCK 로 설정됩니다. |
|
event_type | metadata.description | 이 필드의 값은 event_type 필드에서 가져옵니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.