Pulse Secure 로그 수집
이 문서에서는 Google Security Operations 전달자를 사용하여 Pulse Secure 로그를 수집하는 방법을 설명합니다.
자세한 내용은 Google Security Operations에 데이터 수집 개요를 참조하세요.
수집 라벨은 원시 로그 데이터를 구조화된 UDM 형식으로 정규화하는 파서를 식별합니다. 이 문서의 정보는 PULSE_SECURE_VPN
수집 라벨이 있는 파서에 적용됩니다.
Pulse Secure VPN 구성
Pulse Secure VPN을 구성하려면 다음 중 하나를 실행합니다.
- Pulse Secure VPN 버전 8.3R3 이하 구성
- Pulse Secure VPN 버전 8.3R4 이상 구성
Pulse Secure VPN 버전 8.3R3 이하 구성
- Pulse Connect Secure 콘솔에 로그인합니다.
- Pulse Connect Secure 콘솔에서 시스템 > 로그/모니터링 > 설정을 선택합니다. 이벤트 탭, 사용자 액세스 탭 또는 관리자 액세스 탭에서 설정을 선택할 수 있습니다.
- 로깅할 이벤트 선택 섹션에서 이벤트에 해당하는 체크박스를 모두 선택합니다.
- Syslog servers 섹션에서 다음을 수행합니다.
- 서버 이름/IP 필드에 Google Security Operations 전달자 IP 주소를 지정합니다.
- 설비 목록에서 LOCAL0을 선택합니다. 시설 목록에는
LOCAL0
~LOCAL7
의 8개 시설이 제공됩니다. 이러한 설정 중 하나를 사용하여 syslog 서버의 시설을 매핑할 수 있습니다. - 유형 목록에서 UDP 또는 TCP를 선택합니다.
- 추가를 클릭합니다.
- 선택사항: 이벤트, 관리 액세스 또는 사용자 액세스 로그에 여러 syslog 서버를 추가하려면 2~4단계를 반복합니다.
- 변경사항 저장을 클릭합니다.
- 표준 로그 형식을 기본값으로 설정하려면 다음 단계를 따르세요.
- Pulse Connect Secure 콘솔을 엽니다.
- 이벤트 탭, 사용자 액세스 탭, 관리자 액세스 탭에서 필터를 일반으로 설정합니다.
- 표준 필터가 기본 필터로 정의되지 않은 경우 기본값으로 설정을 클릭합니다.
- 저장을 클릭합니다.
Pulse Secure VPN 버전 8.3R4 이상 구성
- Pulse Connect Secure 콘솔에서 이벤트 탭, 사용자 액세스 탭 또는 관리자 액세스 탭을 클릭한 다음 필터를 새 필터로 설정합니다.
- 필터 이름 필드에 필터의 이름을 입력합니다.
내보내기 형식 섹션에서 맞춤을 선택하고 필드에 다음 형식을 입력합니다.
[SecureConnect] %date% %time% - %node% - [%sourceip%] %user%(%realm%)[%role%] - %msg%
저장을 클릭합니다.
syslog 구성을 사용 설정할 기기 버전에 따라 다음 중 하나를 실행합니다.
- Pulse Secure VPN에서 syslog 로깅 사용 설정
- Ivanti Connect Secure에서 syslog 로깅 사용 설정
Pulse Secure VPN에서 syslog 로깅 사용 설정
- Pulse Connect Secure 콘솔에서 시스템 > 로그/모니터링 > 설정을 선택합니다. 이벤트 탭, 사용자 액세스 탭 또는 관리자 액세스 탭에서 설정을 선택할 수 있습니다.
- 로깅할 이벤트 선택 섹션에서 HTML5 액세스, 액세스 제어 메시지, 인증되지 않은 요청 체크박스를 제외한 모든 체크박스를 선택합니다.
- Syslog server 필드에 시스템로그 서버에 관한 정보를 입력합니다.
- Syslog servers 섹션에서 다음을 수행합니다.
- 서버 이름/IP 필드에 서버 이름 또는 Google Security Operations 전달자 IP 주소를 입력합니다.
- 설비 목록에서 LOCAL0을 선택합니다.
- 필터 목록에서 앞서 만든 필터를 선택합니다.
- 추가를 클릭합니다.
- 선택사항: 이벤트, 관리자 액세스 또는 사용자 액세스 로그에 여러 syslog 서버를 추가하려면 2~4단계를 반복합니다.
- 변경사항 저장을 클릭합니다.
Ivanti Connect Secure에서 syslog 로깅 사용 설정
- Pulse connect secure 콘솔에서 이벤트 탭, 사용자 액세스 탭 또는 관리자 액세스 탭을 클릭한 다음 필터를 선택합니다.
- 새 필터 탭을 클릭합니다.
내보내기 형식 섹션에서 맞춤을 선택하고 필드에 다음 형식을 입력합니다.
[SecureConnect] %date% %time% - %node% - [%sourceip%] %user%(%realm%)[%role%] - %msg%
저장을 클릭합니다.
시스템 > 로그/모니터링을 클릭한 다음 설정 탭을 선택합니다.
최대 로그 크기 필드에서 최대 로그 크기를 지정하고 로깅할 이벤트를 선택합니다.
다음과 같이 서버 구성을 지정합니다.
서버 이름/IP 필드에 syslog 서버의 정규화된 도메인 이름 또는 Google 보안 운영 전달자 IP 주소를 지정합니다.
유형 목록에서 전송 계층 보안 (TLS)을 선택하는 경우 서버 이름은 서버에서 가져온 인증서의 subjectDN에 있는 CN과 일치해야 합니다.
시설 목록에서 syslog 서버 시설 수준을 선택합니다.
유형 목록에서 syslog 서버의 연결 유형을 UDP, TCP 또는 TLS로 선택합니다. TLS는 암호화 프로토콜을 사용하여 보안 통신을 제공합니다.
TLS를 선택하는 경우 syslog 서버를 인증하는 데 사용할 설치된 클라이언트 인증서를 선택합니다. 클라이언트 인증서는 구성 > 인증서 > 클라이언트 인증 인증서 창에 정의됩니다. 클라이언트 인증서를 사용하려면 기기에 설치해야 합니다. 인증 기관에 문의하여 인증서를 받습니다.
필터 목록에서 맞춤을 선택합니다.
추가를 클릭합니다.
Pulse Secure 로그를 수집하도록 Google Security Operations 전달자 구성
- SIEM 설정 > 전달자를 선택합니다.
- 새 전달자 추가를 클릭합니다.
- 전달자 이름 입력란에 전달자의 고유한 이름을 입력합니다.
- 제출을 클릭한 다음 확인을 클릭합니다. 전달자가 추가되고 수집기 구성 추가 창이 표시됩니다.
- 수집기 이름 필드에 수집기의 고유한 이름을 입력합니다.
- 로그 유형으로 Pulse Secure를 선택합니다.
- 수집기 유형으로 Syslog를 선택합니다.
- 다음 필수 입력 매개변수를 구성합니다.
- 프로토콜: 수집기가 syslog 데이터를 리슨하는 데 사용하는 연결 프로토콜을 지정합니다.
- 주소: 수집기가 상주하고 syslog 데이터를 리슨하는 대상 IP 주소 또는 호스트 이름을 지정합니다.
- 포트: 수집기가 상주하고 syslog 데이터를 리슨하는 대상 포트를 지정합니다.
- 제출을 클릭합니다.
Google Security Operations 전달자에 대한 자세한 내용은 Google Security Operations UI를 통해 전달자 구성 관리를 참고하세요.
전달자를 만들 때 문제가 발생하면 Google Security Operations 지원팀에 문의하세요.
필드 매핑 참조
이 파서는 Pulse Secure VPN 로그에서 필드를 추출하여 Windows 이벤트 로그와 syslog 형식을 모두 처리합니다. 다양한 로그 구조를 공통 형식으로 표준화하여 로그인, 로그아웃, 연결, 정책 변경과 같은 이벤트를 분류하고 사용자 에이전트, IP 주소, 타임스탬프와 같은 문맥 데이터로 보강합니다.
UDM 매핑 표
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
action | security_result.action_details |
action 필드에서 직접 매핑됩니다. |
애플리케이션 | principal.application |
application 필드에서 직접 매핑됩니다. |
bytes_read | network.received_bytes |
bytes_read 필드에서 직접 매핑되고 부호 없는 정수로 변환됩니다. |
bytes_written | network.sent_bytes |
bytes_written 필드에서 직접 매핑되고 부호 없는 정수로 변환됩니다. |
client_host | principal.hostname , principal.asset.hostname |
client_host 필드에서 직접 매핑됩니다. |
cmd | principal.process.command_line |
cmd 필드에서 직접 매핑됩니다. |
connection_status | security_result.detection_fields.value.string_value |
connection_status 필드에서 직접 매핑됩니다. |
data_time | metadata.event_timestamp.seconds |
다양한 타임스탬프 형식 (MM-dd-yyyy HH:mm:ss Z, RFC 3339, ISO8601, MMM d HH:mm:ss, MMM d HH:mm:ss)을 사용하여 data_time 필드에서 파싱됩니다. |
devname | principal.hostname , principal.asset.hostname |
devname 필드에서 직접 매핑됩니다. |
dstip | target.ip , target.asset.ip |
dstip 필드에서 직접 매핑됩니다. |
dstport | target.port |
dstport 필드에서 직접 매핑되고 정수로 변환됩니다. |
dstcountry | target.location.country_or_region |
dstcountry 필드가 'Reserved'가 아니거나 비어 있지 않은 경우 dstcountry 필드에서 직접 매핑됩니다. |
기간 | network.session_duration.seconds |
duration 필드에서 직접 매핑되고 정수로 변환됩니다. |
dvc | intermediary.hostname 또는 intermediary.ip |
dvc 필드를 IP 주소로 변환할 수 있는 경우 intermediary.ip 에 매핑됩니다. 그렇지 않으면 intermediary.hostname 에 매핑됩니다. |
dvc_hostname | intermediary.hostname , principal.hostname , principal.asset.hostname 또는 intermediary.ip , principal.ip , principal.asset.ip |
dvc_hostname 필드를 IP 주소로 변환할 수 있는 경우 해당 IP 필드에 매핑됩니다. 그렇지 않으면 각 호스트 이름 필드에 매핑됩니다. |
event_type | metadata.product_event_type |
event_type 필드에서 직접 매핑됩니다. |
failure_reason | security_result.description |
failure_reason 필드에서 직접 매핑됩니다. 메시지에 'because host'가 포함된 경우 'host' 텍스트가 실패 이유 앞에 추가됩니다. |
has_principal | event.idm.read_only_udm.principal (존재) |
기본 필드가 채워지면 'true'로 설정하고 채워지지 않으면 'false'로 설정합니다. 파서 로직에 의해 파생됩니다. |
has_target | event.idm.read_only_udm.target (존재) |
대상 필드가 채워지면 'true'로, 채워지지 않으면 'false'로 설정합니다. 파서 로직에 의해 파생됩니다. |
has_target_user | event.idm.read_only_udm.target.user.userid (존재) |
target.user.userid 가 채워지면 'true'로, 채워지지 않으면 'false'로 설정합니다. 파서 로직에 의해 파생됩니다. |
host_ip | principal.ip , principal.asset.ip |
host_ip 필드에서 직접 매핑됩니다. |
host_mac | principal.mac |
host_mac 필드에서 직접 매핑되며 하이픈이 콜론으로 대체됩니다. |
http_method | network.http.method |
http_method 필드에서 직접 매핑됩니다. |
http_response | network.http.response_code |
http_response 필드에서 직접 매핑되고 정수로 변환됩니다. |
info_desc | about.labels.value |
info_desc 필드에서 직접 매핑됩니다. |
ip_new | target.ip , target.asset.ip |
ip_new 필드에서 직접 매핑됩니다. |
레벨 | security_result.severity , security_result.severity_details |
security_result.severity 는 level 필드에서 파생됩니다 ('error'/'warning' -> HIGH, 'notice' -> MEDIUM, 'information'/'info' -> LOW). level 의 원시 값도 security_result.severity_details 에 매핑됩니다. |
logid | metadata.product_log_id |
logid 필드에서 직접 매핑됩니다. |
locip | principal.ip , principal.asset.ip |
locip 필드에서 직접 매핑됩니다. |
메시지 | metadata.description |
grok 및 kv 필터를 사용하여 다양한 필드를 추출하는 데 사용됩니다. 메시지에 'EventID'가 포함된 경우 Windows 이벤트 로그로 처리됩니다. |
message_info | metadata.description |
더 구체적인 grok 패턴에서 사용되지 않는 경우 metadata.description 에 직접 매핑됩니다. |
msg | metadata.product_event_type , metadata.description |
msg 필드가 있으면 제품 유형이 추출되어 metadata.product_event_type 에 매핑되고 나머지 메시지는 metadata.description 에 매핑됩니다. |
msg_hostname | principal.hostname , principal.asset.hostname |
msg_hostname 필드에서 직접 매핑됩니다. |
msg_ip | principal.ip , principal.asset.ip |
msg_ip 필드에서 직접 매핑됩니다. |
msg_user_agent | network.http.user_agent , network.http.parsed_user_agent , metadata.product_version |
사용자 에이전트 문자열은 network.http.user_agent 에 매핑되고, 파싱된 사용자 에이전트는 network.http.parsed_user_agent 에 매핑되며, 제품 버전 (있는 경우)은 metadata.product_version 에 매핑됩니다. |
network_duration | network.session_duration.seconds |
network_duration 필드에서 직접 매핑되고 정수로 변환됩니다. |
policyid | security_result.rule_id |
policyid 필드에서 직접 매핑됩니다. |
policyname | security_result.rule_name |
policyname 필드에서 직접 매핑됩니다. |
policytype | security_result.rule_type |
policytype 필드에서 직접 매핑됩니다. |
priority_code | about.labels.value |
priority_code 필드에서 직접 매핑되며 'Severity' 키의 about.labels.value 를 파생하는 데도 사용됩니다 (로직 참고). |
prod_name | metadata.product_name |
prod_name 필드에서 직접 매핑됩니다. |
product_type | metadata.product_event_type |
product_type 필드에서 직접 매핑됩니다. |
product_version | metadata.product_version |
product_version 필드에서 직접 매핑됩니다. |
proto | network.ip_protocol |
조회를 사용하여 IP 프로토콜 이름으로 변환된 후 network.ip_protocol 에 매핑됩니다. |
pwd | principal.process.file.full_path |
pwd 필드에서 직접 매핑됩니다. |
렐름 | principal.group.attribute.labels.value |
realm 필드에서 직접 매핑됩니다. |
rcvdbyte | network.received_bytes |
rcvdbyte 필드에서 직접 매핑되고 부호 없는 정수로 변환됩니다. |
remip | target.ip |
remip 필드에서 직접 매핑됩니다. |
resource_name | target.resource.name |
선행/후행 공백과 하이픈을 삭제한 후 resource_name 필드에서 직접 매핑됩니다. |
resource_status | security_result.description |
resource_status 필드에서 직접 매핑됩니다. |
resource_user_group | principal.user.group_identifiers |
resource_user_group 필드에서 직접 매핑됩니다. |
resource_user_name | principal.user.userid |
resource_user_name 필드에서 직접 매핑됩니다. |
역할 | principal.user.group_identifiers |
roles 필드에서 직접 매핑됩니다. |
sentbyte | network.sent_bytes |
sentbyte 필드에서 직접 매핑되고 부호 없는 정수로 변환됩니다. |
session_id | network.session_id |
session_id 필드에서 직접 매핑됩니다. |
sessionid | network.session_id |
sessionid 필드에서 직접 매핑됩니다. |
srcip | principal.ip , principal.asset.ip |
srcip 필드에서 직접 매핑됩니다. |
srcport | principal.port |
srcport 필드에서 직접 매핑되고 정수로 변환됩니다. |
srccountry | principal.location.country_or_region |
srccountry 필드가 'Reserved'가 아니거나 비어 있지 않은 경우 srccountry 필드에서 직접 매핑됩니다. |
하위유형 | metadata.product_event_type |
type 와 함께 사용하여 metadata.product_event_type 을 형성합니다. |
target_file | target.file.full_path |
target_file 필드에서 직접 매핑됩니다. |
target_host | target.hostname , target.asset.hostname |
target_host 필드에서 직접 매핑됩니다. |
target_ip | target.ip , target.asset.ip |
target_ip 필드에서 직접 매핑됩니다. |
target_port | target.port |
target_port 필드에서 직접 매핑되고 정수로 변환됩니다. |
target_url | target.url |
target_url 필드에서 직접 매핑됩니다. |
시간 | metadata.event_timestamp.seconds |
'yyyy-MM-dd HH:mm:ss' 형식을 사용하여 time 필드에서 파싱됩니다. |
유형 | metadata.product_event_type |
subtype 와 함께 사용하여 metadata.product_event_type 을 형성합니다. |
u_event_source_ip | principal.ip , principal.asset.ip 또는 target.ip |
target_ip 또는 target_host 가 있으면 u_event_source_ip 가 principal.ip 및 principal.asset.ip 에 매핑됩니다. 그 외의 경우 target_ip , target_host , target_url 가 모두 비어 있으면 u_event_source_ip 이 target.ip 에 매핑됩니다. |
u_observer_ip | observer.ip |
u_observer_ip 필드에서 직접 매핑됩니다. |
u_prin_ip | principal.ip , principal.asset.ip |
u_prin_ip 필드에서 직접 매핑됩니다. |
사용자 | target.user.userid |
user 필드에서 직접 매핑됩니다. |
user_agent | network.http.user_agent , network.http.parsed_user_agent |
사용자 에이전트 문자열은 network.http.user_agent 에 매핑되고 파싱된 사용자 에이전트는 network.http.parsed_user_agent 에 매핑됩니다. |
user_group_identifier | target.user.group_identifiers 또는 principal.user.group_identifiers |
대부분의 경우 target.user.group_identifiers 에 매핑됩니다. IP 변경 (USER_UNCATEGORIZED) 및 영역 제한 이벤트에서 principal.user.group_identifiers 에 매핑됩니다. |
user_ip | principal.ip , principal.asset.ip |
user_ip 필드에서 직접 매핑됩니다. 비어 있고 u_event_source_ip 가 비어 있지 않으면 u_event_source_ip 의 값을 사용합니다. |
사용자 이름 | principal.user.userid 또는 target.user.userid |
대부분의 경우 principal.user.userid 에 매핑됩니다. 일부 특정 시나리오 (예: detect_user_logout_failed 가 false이고 detect_policy_change_failed 가 false인 경우)에서는 target.user.userid 에 매핑됩니다. |
username_removed | target.user.userid |
username_removed 필드에서 직접 매핑됩니다. |
vd | principal.administrative_domain |
vd 필드에서 직접 매핑됩니다. |
metadata.vendor_name
, metadata.product_name
, metadata.event_type
, metadata.log_type
, network.ip_protocol
, security_result.action
, security_result.severity
, extensions.auth.type
는 로직 열에 설명된 조건에 따라 파서 로직에 의해 파생되거나 설정됩니다.
변경사항
2024-05-27
- 'observer_hostname'이 'observer.hostname'에 매핑되었습니다.
- 'dvc_hostname'이 유효한 IP 주소인 경우 'principal.ip'에 매핑하고 그 외의 경우에는 'principal.hostname'에 매핑했습니다.
- 'priority_code', 'Syslog_version', 'info_desc'가 'about.labels'에 매핑되었습니다.
- 'prod_name'이 'metadata.product_event_type'에 매핑되었습니다.
2024-04-16
- SYSLOG 로그의 새 패턴을 파싱하는 새로운 GROK 패턴을 추가했습니다.
- 'connection_status'가 'security_result.detection_fields'에 매핑되었습니다.
2024-02-26
- 키-값 데이터를 파싱하는 'kv' 블록을 추가했습니다.
- 'username'이 'target.user.userid'에 매핑되었습니다.
- 'message_info'에 대한 조건부 검사가 추가되었습니다.
- 'u_prin_ip'가 'principal.ip'에 매핑되었습니다.
- 'u_observer_ip'가 'observer.ip'에 매핑되었습니다.
2023-11-07
- 버그 수정:
- 'observer_host'의 매핑을 'observer.hostname'에서 'additional.fields'로 수정했습니다.
2023-08-19
- 실패 로그를 파싱하는 Grok 패턴을 추가했습니다.
2023-05-26
- 새 syslog 로그를 지원하는 Grok 패턴을 추가했습니다.
2023-01-06
- 'product_type'을 파싱하도록 grok를 수정하고 'metadata.product_event_type'에 매핑했습니다.
2022-10-25
- session_id를 추출하기 위해 'message_info'에 관한 새로운 grok 패턴이 추가되었습니다.
- 'session_id'가 'network.session_id'에 매핑되었습니다.
- detect_policy_change_failed가 false인 경우 target.ip를 principal.ip로 변경했습니다.
- detect_policy_change_failed가 false인 경우 target.mac을 principal.mac으로 변경했습니다.
2022-10-12
- 개선사항 - 다음 필드에 대한 매핑이 추가되었습니다.
- 'msg' 필드에서 IP 값을 추출하여 'principal.ip'에 매핑했습니다.
- 'msg' 필드에서 호스트 이름 값을 추출하여 'principal.hostname'에 매핑했습니다.
- 'user'가 'target.user.userid'에 매핑되었습니다.
- 'realm'이 'principal.group.attribute.labels'에 매핑되었습니다.
- 'roles'가 'principal.user.group_identifiers'에 매핑되었습니다.
- 'metadata.event_type' 값을 'GENERIC_EVENT'에서 'USER_UNCATEGORIZED'로 수정했습니다.
2022-10-03
- 개선사항 - 'sudo'가 포함된 로그를 파싱했습니다.
- 새 키-값 쌍 유형 로그 형식에 대한 지원이 추가되었습니다.
2022-07-01
- 개선사항 - 이벤트 ID 4624에 관한 새 이벤트 생성
- 'principal.ip' 또는 'target.ip' 또는 'principal.hostname'이 null이 아닌 경우 metadata.event_type을 'GENERIC_EVENT'에서 'STATUS_UPDATE' 또는 'NETWORK_CONNECTION'으로 변경했습니다.
2022-04-13
- 개선사항-GENERIC_EVENT event_type의 새 필드에 대한 매핑이 추가되었습니다.
- user_ip를 event.idm.read_only_udm.principal.ip로 변경합니다.
- user_group_identifier를 event.idm.read_only_udm.target.user.group_identifiers로 변경합니다.
- 시간대를 포함하도록 모든 event_type의 타임스탬프를 수정했습니다.
- GENERIC 및 NETWORK_CONNECTION 이벤트 유형의 user_ip, target_ip 필드를 수정했습니다.